diff --git a/agents/grpc/src/proto/reconfigure.pb.h b/agents/grpc/src/proto/reconfigure.pb.h index 138aa6cd7d1..8e83faa0af2 100644 --- a/agents/grpc/src/proto/reconfigure.pb.h +++ b/agents/grpc/src/proto/reconfigure.pb.h @@ -398,9 +398,10 @@ class PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ReconfigureBody final : public ::go public: // optional double traceSampleRate = 14; - bool has_tracesamplerate() const; + [[nodiscard]] bool has_tracesamplerate() + const; void clear_tracesamplerate() ; - double tracesamplerate() const; + [[nodiscard]] double tracesamplerate() const; void set_tracesamplerate(double value); private: diff --git a/deps/grpc/.bazelignore b/deps/grpc/.bazelignore index 7e4e4056311..bb71290eae5 100644 --- a/deps/grpc/.bazelignore +++ b/deps/grpc/.bazelignore @@ -26,6 +26,9 @@ test/distrib/bazel/cpp test/distrib/bazel/python test/distrib/bazel/python_second_test_repo +# Uses it's own MODULE.bazel deps. +tools/artifact_gen + # Directories build containing own BUILD files. test/bzlmod src/python/grpcio_tests/src/ diff --git a/deps/grpc/.gemini/config.yaml b/deps/grpc/.gemini/config.yaml new file mode 100644 index 00000000000..71adf793964 --- /dev/null +++ b/deps/grpc/.gemini/config.yaml @@ -0,0 +1,13 @@ +have_fun: false +memory_config: + disabled: false +code_review: + disable: false + comment_severity_threshold: MEDIUM + max_review_comments: -1 + pull_request_opened: + help: false + summary: false + code_review: false + include_drafts: false +ignore_patterns: [] diff --git a/deps/grpc/.gitmodules b/deps/grpc/.gitmodules index 9b16a02148d..a159d0188a7 100644 --- a/deps/grpc/.gitmodules +++ b/deps/grpc/.gitmodules @@ -50,3 +50,6 @@ [submodule "third_party/opentelemetry-cpp"] path = third_party/opentelemetry-cpp url = https://github.com/open-telemetry/opentelemetry-cpp +[submodule "third_party/cel-spec"] + path = third_party/cel-spec + url = https://github.com/google/cel-spec diff --git a/deps/grpc/LICENSE b/deps/grpc/LICENSE index 0e09a3e9090..98352651c8f 100644 --- a/deps/grpc/LICENSE +++ b/deps/grpc/LICENSE @@ -203,6 +203,16 @@ ----------------------------------------------------------- +Following applies to: +./src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec +./src/objective-c/!ProtoCompiler-gRPCPlugin.podspec +./src/objective-c/!ProtoCompiler.podspec +./src/objective-c/BoringSSL-GRPC.podspec +./templates/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec.inja +./templates/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec.inja +./templates/src/objective-c/!ProtoCompiler.podspec.inja +./templates/src/objective-c/BoringSSL-GRPC.podspec.template + BSD 3-Clause License Copyright 2016, Google Inc. @@ -235,6 +245,9 @@ THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------- +Following applies to: +./etc/roots.pem + Mozilla Public License Version 2.0 ================================== diff --git a/deps/grpc/Makefile b/deps/grpc/Makefile index dd4fedf629b..cf90e7bc9ea 100644 --- a/deps/grpc/Makefile +++ b/deps/grpc/Makefile @@ -367,8 +367,8 @@ E = @echo Q = @ endif -CORE_VERSION = 52.0.0 -CPP_VERSION = 1.78.1 +CORE_VERSION = 53.0.0 +CPP_VERSION = 1.80.0 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES)) CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS) @@ -404,7 +404,7 @@ SHARED_EXT_CORE = dll SHARED_EXT_CPP = dll SHARED_PREFIX = -SHARED_VERSION_CORE = -52 +SHARED_VERSION_CORE = -53 SHARED_VERSION_CPP = -1 else ifeq ($(SYSTEM),Darwin) EXECUTABLE_SUFFIX = @@ -710,6 +710,7 @@ LIBGRPC_SRC = \ src/core/client_channel/subchannel.cc \ src/core/client_channel/subchannel_pool_interface.cc \ src/core/client_channel/subchannel_stream_client.cc \ + src/core/client_channel/subchannel_stream_limiter.cc \ src/core/config/config_vars.cc \ src/core/config/config_vars_non_generated.cc \ src/core/config/core_configuration.cc \ @@ -826,14 +827,16 @@ LIBGRPC_SRC = \ src/core/ext/transport/chttp2/transport/ping_callbacks.cc \ src/core/ext/transport/chttp2/transport/ping_promise.cc \ src/core/ext/transport/chttp2/transport/ping_rate_policy.cc \ - src/core/ext/transport/chttp2/transport/security_frame.cc \ src/core/ext/transport/chttp2/transport/stream_lists.cc \ src/core/ext/transport/chttp2/transport/transport_common.cc \ src/core/ext/transport/chttp2/transport/varint.cc \ + src/core/ext/transport/chttp2/transport/write_cycle.cc \ src/core/ext/transport/chttp2/transport/write_size_policy.cc \ src/core/ext/transport/chttp2/transport/writing.cc \ src/core/ext/transport/inproc/inproc_transport.cc \ src/core/ext/transport/inproc/legacy_inproc_transport.cc \ + src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c \ + src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c \ src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c \ src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c \ src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c \ @@ -854,9 +857,11 @@ LIBGRPC_SRC = \ src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c \ + src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c \ + src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c \ src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c \ @@ -907,6 +912,9 @@ LIBGRPC_SRC = \ src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c \ src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c \ src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c \ + src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c \ + src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c \ + src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c \ src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c \ src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c \ src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c \ @@ -1006,6 +1014,8 @@ LIBGRPC_SRC = \ src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c \ src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c \ src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c \ + src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c \ + src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c \ @@ -1026,9 +1036,11 @@ LIBGRPC_SRC = \ src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c \ + src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c \ + src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c \ src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c \ @@ -1172,11 +1184,10 @@ LIBGRPC_SRC = \ src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc \ src/core/handshaker/handshaker.cc \ src/core/handshaker/handshaker_registry.cc \ - src/core/handshaker/http_connect/http_connect_handshaker.cc \ + src/core/handshaker/http_connect/http_connect_client_handshaker.cc \ src/core/handshaker/http_connect/http_proxy_mapper.cc \ src/core/handshaker/http_connect/xds_http_proxy_mapper.cc \ src/core/handshaker/proxy_mapper_registry.cc \ - src/core/handshaker/security/legacy_secure_endpoint.cc \ src/core/handshaker/security/pipelined_secure_endpoint.cc \ src/core/handshaker/security/secure_endpoint.cc \ src/core/handshaker/security/security_handshaker.cc \ @@ -1564,6 +1575,7 @@ LIBGRPC_SRC = \ src/core/xds/grpc/xds_endpoint_parser.cc \ src/core/xds/grpc/xds_health_status.cc \ src/core/xds/grpc/xds_http_fault_filter.cc \ + src/core/xds/grpc/xds_http_filter.cc \ src/core/xds/grpc/xds_http_filter_registry.cc \ src/core/xds/grpc/xds_http_gcp_authn_filter.cc \ src/core/xds/grpc/xds_http_rbac_filter.cc \ @@ -1814,6 +1826,7 @@ PUBLIC_HEADERS_C += \ include/grpc/compression.h \ include/grpc/create_channel_from_endpoint.h \ include/grpc/credentials.h \ + include/grpc/credentials_cpp.h \ include/grpc/event_engine/endpoint_config.h \ include/grpc/event_engine/event_engine.h \ include/grpc/event_engine/extensible.h \ @@ -1850,6 +1863,7 @@ PUBLIC_HEADERS_C += \ include/grpc/impl/slice_type.h \ include/grpc/load_reporting.h \ include/grpc/passive_listener.h \ + include/grpc/private_key_signer.h \ include/grpc/slice.h \ include/grpc/slice_buffer.h \ include/grpc/status.h \ @@ -1891,8 +1905,8 @@ $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_ ifeq ($(SYSTEM),Darwin) $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS) else - $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.52 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS) - $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.52 + $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.53 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS) + $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.53 $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so endif endif diff --git a/deps/grpc/grpc.gyp b/deps/grpc/grpc.gyp index a6b20e01e8d..7d0dbfd3d60 100644 --- a/deps/grpc/grpc.gyp +++ b/deps/grpc/grpc.gyp @@ -141,6 +141,7 @@ 'src/core/client_channel/subchannel.cc', 'src/core/client_channel/subchannel_pool_interface.cc', 'src/core/client_channel/subchannel_stream_client.cc', + 'src/core/client_channel/subchannel_stream_limiter.cc', 'src/core/config/config_vars.cc', 'src/core/config/config_vars_non_generated.cc', 'src/core/config/core_configuration.cc', @@ -278,8 +279,11 @@ 'src/core/ext/transport/chttp2/transport/stream_lists.cc', 'src/core/ext/transport/chttp2/transport/transport_common.cc', 'src/core/ext/transport/chttp2/transport/varint.cc', + 'src/core/ext/transport/chttp2/transport/write_cycle.cc', 'src/core/ext/transport/chttp2/transport/write_size_policy.cc', 'src/core/ext/transport/chttp2/transport/writing.cc', + 'src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c', + 'src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c', 'src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c', 'src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c', 'src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c', @@ -300,9 +304,11 @@ 'src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c', + 'src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c', + 'src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c', 'src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c', @@ -346,6 +352,9 @@ 'src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c', 'src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c', 'src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c', + 'src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c', + 'src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c', + 'src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c', 'src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c', 'src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c', 'src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c', @@ -451,6 +460,9 @@ 'src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c', 'src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c', 'src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c', + 'src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c', + 'src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c', + 'src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c', @@ -479,6 +491,7 @@ 'src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c', + 'src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c', 'src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c', @@ -617,10 +630,9 @@ 'src/core/handshaker/handshaker_registry.cc', 'src/core/handshaker/proxy_mapper_registry.cc', 'src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc', - 'src/core/handshaker/http_connect/http_connect_handshaker.cc', + 'src/core/handshaker/http_connect/http_connect_client_handshaker.cc', 'src/core/handshaker/http_connect/http_proxy_mapper.cc', 'src/core/handshaker/http_connect/xds_http_proxy_mapper.cc', - 'src/core/handshaker/security/legacy_secure_endpoint.cc', 'src/core/handshaker/security/pipelined_secure_endpoint.cc', 'src/core/handshaker/security/secure_endpoint.cc', 'src/core/handshaker/security/security_handshaker.cc', @@ -733,6 +745,7 @@ 'src/core/lib/resource_quota/memory_quota.cc', 'src/core/lib/resource_quota/periodic_update.cc', 'src/core/lib/resource_quota/resource_quota.cc', + 'src/core/lib/resource_quota/stream_quota.cc', 'src/core/lib/resource_quota/thread_quota.cc', 'src/core/lib/slice/percent_encoding.cc', 'src/core/lib/slice/slice.cc', @@ -1008,6 +1021,7 @@ 'src/core/xds/grpc/xds_endpoint_parser.cc', 'src/core/xds/grpc/xds_health_status.cc', 'src/core/xds/grpc/xds_http_fault_filter.cc', + 'src/core/xds/grpc/xds_http_filter.cc', 'src/core/xds/grpc/xds_http_filter_registry.cc', 'src/core/xds/grpc/xds_http_gcp_authn_filter.cc', 'src/core/xds/grpc/xds_http_rbac_filter.cc', diff --git a/deps/grpc/include/grpc++/impl/codegen/call_hook.h b/deps/grpc/include/grpc++/impl/codegen/call_hook.h deleted file mode 100644 index 3609b2c3ac3..00000000000 --- a/deps/grpc/include/grpc++/impl/codegen/call_hook.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// -// Copyright 2018 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// - -// DEPRECATED: The headers in include/grpc++ are deprecated. Please include the -// headers in include/grpcpp instead. This header exists only for backwards -// compatibility. - -#ifndef GRPCXX_IMPL_CODEGEN_CALL_HOOK_H -#define GRPCXX_IMPL_CODEGEN_CALL_HOOK_H - -#include - -#endif // GRPCXX_IMPL_CODEGEN_CALL_HOOK_H diff --git a/deps/grpc/include/grpc/credentials.h b/deps/grpc/include/grpc/credentials.h index bc5cacc1af9..04b4c8dafe7 100644 --- a/deps/grpc/include/grpc/credentials.h +++ b/deps/grpc/include/grpc/credentials.h @@ -645,21 +645,6 @@ GRPCAPI void grpc_tls_identity_pairs_add_pair(grpc_tls_identity_pairs* pairs, */ GRPCAPI void grpc_tls_identity_pairs_destroy(grpc_tls_identity_pairs* pairs); -/** - * EXPERIMENTAL API - Subject to change - * - * Creates a grpc_tls_certificate_provider that will load credential data from - * static string during initialization. This provider will always return the - * same cert data for all cert names. - * root_certificate and pem_key_cert_pairs can be nullptr, indicating the - * corresponding credential data is not needed. - * This function will make a copy of |root_certificate|. - * The ownership of |pem_key_cert_pairs| is transferred. - */ -GRPCAPI grpc_tls_certificate_provider* -grpc_tls_certificate_provider_static_data_create( - const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs); - /** * EXPERIMENTAL API - Subject to change * @@ -692,6 +677,46 @@ grpc_tls_certificate_provider_file_watcher_create( const char* root_cert_path, const char* spiffe_bundle_map_path, unsigned int refresh_interval_sec); +/** + * EXPERIMENTAL API - Subject to change + * + * Creates a grpc_tls_certificate_provider that will load credential data from + * memory during initialization. This provider allows updating the identity and + * root certificates independently. + */ +GRPCAPI grpc_tls_certificate_provider* +grpc_tls_certificate_provider_in_memory_create(); + +/** + * EXPERIMENTAL API - Subject to change + * + * Update the root certificate of a grpc_tls_certificate_provider created with + * `grpc_tls_certificate_provider_in_memory_create`. + * + * root_certificate can be nullptr, indicating the corresponding credential data + * is not needed. This function will make a copy of |root_cert|. + * + * Returns true if the root certificate was successfully updated. + */ +GRPCAPI bool grpc_tls_certificate_provider_in_memory_set_root_certificate( + grpc_tls_certificate_provider* provider, const char* root_cert); + +/** + * EXPERIMENTAL API - Subject to change + * + * Update the identity certificate of a grpc_tls_certificate_provider created + * with `grpc_tls_certificate_provider_in_memory_create`. + * + * pem_key_cert_pairs can be nullptr, indicating the + * corresponding credential data is not needed. + * The ownership of |pem_key_cert_pairs| is transferred. + * + * Returns true if the identity certificate was successfully updated. + */ +GRPCAPI bool grpc_tls_certificate_provider_in_memory_set_identity_certificate( + grpc_tls_certificate_provider* provider, + grpc_tls_identity_pairs* pem_key_cert_pairs); + /** * EXPERIMENTAL API - Subject to change * @@ -984,27 +1009,22 @@ typedef struct grpc_tls_certificate_provider grpc_tls_certificate_provider; /** * EXPERIMENTAL API - Subject to change * - * Sets the credential provider in the options. + * Sets the identity certificate provider in the options. * The |options| will implicitly take a new ref to the |provider|. */ -GRPCAPI void grpc_tls_credentials_options_set_certificate_provider( +GRPCAPI void grpc_tls_credentials_options_set_identity_certificate_provider( grpc_tls_credentials_options* options, grpc_tls_certificate_provider* provider); /** * EXPERIMENTAL API - Subject to change * - * If set, gRPC stack will keep watching the root certificates with - * name |root_cert_name|. - * If this is not set on the client side, we will use the root certificates - * stored in the default system location, since client side must provide root - * certificates in TLS. - * If this is not set on the server side, we will not watch any root certificate - * updates, and assume no root certificates needed for the server(single-side - * TLS). Default root certs on the server side is not supported. + * Sets the root certificate provider in the options. + * The |options| will implicitly take a new ref to the |provider|. */ -GRPCAPI void grpc_tls_credentials_options_watch_root_certs( - grpc_tls_credentials_options* options); +GRPCAPI void grpc_tls_credentials_options_set_root_certificate_provider( + grpc_tls_credentials_options* options, + grpc_tls_certificate_provider* provider); /** * EXPERIMENTAL API - Subject to change @@ -1015,16 +1035,6 @@ GRPCAPI void grpc_tls_credentials_options_watch_root_certs( GRPCAPI void grpc_tls_credentials_options_set_root_cert_name( grpc_tls_credentials_options* options, const char* root_cert_name); -/** - * EXPERIMENTAL API - Subject to change - * - * If set, gRPC stack will keep watching the identity key-cert pairs - * with name |identity_cert_name|. - * This is required on the server side, and optional on the client side. - */ -GRPCAPI void grpc_tls_credentials_options_watch_identity_key_cert_pairs( - grpc_tls_credentials_options* options); - /** * EXPERIMENTAL API - Subject to change * diff --git a/deps/grpc/include/grpc/credentials_cpp.h b/deps/grpc/include/grpc/credentials_cpp.h new file mode 100644 index 00000000000..c084f145441 --- /dev/null +++ b/deps/grpc/include/grpc/credentials_cpp.h @@ -0,0 +1,39 @@ +/* + * + * Copyright 2025 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef GRPC_CREDENTIALS_CPP_H +#define GRPC_CREDENTIALS_CPP_H + +#include +#include + +#include +#include + +/** + * EXPERIMENTAL API - Subject to change + * + * Overrides the SNI that the client sends in the TLS handshake. nullopt + * indicates that SNI should not be overridden. An empty string value indicates + * that SNI should not be sent at all. + */ +void grpc_tls_credentials_options_set_sni_override( + grpc_tls_credentials_options* options, + std::optional sni_override); + +#endif /* GRPC_CREDENTIALS_CPP_H */ diff --git a/deps/grpc/include/grpc/event_engine/event_engine.h b/deps/grpc/include/grpc/event_engine/event_engine.h index d2c91ca5968..47bdc8f7d7f 100644 --- a/deps/grpc/include/grpc/event_engine/event_engine.h +++ b/deps/grpc/include/grpc/event_engine/event_engine.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -158,7 +159,7 @@ class EventEngine : public std::enable_shared_from_this, /// * sockaddr_in6 class ResolvedAddress { public: - static constexpr socklen_t MAX_SIZE_BYTES = 128; + static constexpr socklen_t MAX_SIZE_BYTES = GRPC_MAX_SOCKADDR_SIZE; ResolvedAddress(const sockaddr* address, socklen_t size); ResolvedAddress() = default; @@ -191,8 +192,8 @@ class EventEngine : public std::enable_shared_from_this, class ReadArgs final { public: ReadArgs() = default; - ReadArgs(const ReadArgs&) = delete; - ReadArgs& operator=(const ReadArgs&) = delete; + ReadArgs(const ReadArgs&) = default; + ReadArgs& operator=(const ReadArgs&) = default; ReadArgs(ReadArgs&&) = default; ReadArgs& operator=(ReadArgs&&) = default; @@ -733,6 +734,10 @@ void AbslStringify(Sink& out, const EventEngine::TaskHandle& handle) { out.Append(detail::FormatHandleString(handle.keys[0], handle.keys[1])); } +/** Fetch a vtable for a grpc_channel_arg that points to a grpc_event_engine + */ +const grpc_arg_pointer_vtable* grpc_event_engine_arg_vtable(void); + } // namespace experimental } // namespace grpc_event_engine diff --git a/deps/grpc/include/grpc/grpc.h b/deps/grpc/include/grpc/grpc.h index 2b681889d10..437f2073c40 100644 --- a/deps/grpc/include/grpc/grpc.h +++ b/deps/grpc/include/grpc/grpc.h @@ -529,6 +529,10 @@ GRPCAPI void grpc_resource_quota_resize(grpc_resource_quota* resource_quota, GRPCAPI void grpc_resource_quota_set_max_threads( grpc_resource_quota* resource_quota, int new_max_threads); +/** Update the size of the maximum number of streams allowed */ +GRPCAPI void grpc_resource_quota_set_max_outstanding_streams( + grpc_resource_quota* resource_quota, int new_max_outstanding_streams); + /** EXPERIMENTAL. Dumps xDS configs as a serialized ClientConfig proto. The full name of the proto is envoy.service.status.v3.ClientConfig. */ GRPCAPI grpc_slice grpc_dump_xds_configs(void); diff --git a/deps/grpc/include/grpc/impl/call.h b/deps/grpc/include/grpc/impl/call.h index 43b44b195f5..43d9ca89fbb 100644 --- a/deps/grpc/include/grpc/impl/call.h +++ b/deps/grpc/include/grpc/impl/call.h @@ -25,4 +25,13 @@ void grpc_call_run_in_event_engine(const grpc_call* call, absl::AnyInvocable cb); +// Run a callback in the call's EventEngine creating a new ExecCtx for it. If +// UseCallEventEngineInCompletionQueueEnabled is enabled, this will run the +// callback in the call's EventEngine. Otherwise, it will run the callback +// inline since the completion queue has already scheduled this thread in an +// EventEngine. +// Internal-only +void grpc_call_run_cq_cb(const grpc_call* call, + absl::AnyInvocable&& cb); + #endif /* GRPC_IMPL_CALL_H */ diff --git a/deps/grpc/include/grpc/impl/channel_arg_names.h b/deps/grpc/include/grpc/impl/channel_arg_names.h index bd8a2cb44d1..78a51aef89e 100644 --- a/deps/grpc/include/grpc/impl/channel_arg_names.h +++ b/deps/grpc/include/grpc/impl/channel_arg_names.h @@ -420,6 +420,11 @@ * Defaults to 250ms. */ #define GRPC_ARG_HAPPY_EYEBALLS_CONNECTION_ATTEMPT_DELAY_MS \ "grpc.happy_eyeballs_connection_attempt_delay_ms" +/** If set, uses the provided EventEngine as the channel's event engine. + * TODO(aananthv): Remove GRPC_INTERNAL_ARG_EVENT_ENGINE once all usages are + * migrated to this arg. + */ +#define GRPC_ARG_EVENT_ENGINE "grpc.experimental.event_engine" /** It accepts a MemoryAllocatorFactory as input and If specified, it forces * the default event engine to use memory allocators created using the provided * factory. */ @@ -434,5 +439,7 @@ /** If non-zero, allow security frames to be sent and received. */ #define GRPC_ARG_SECURITY_FRAME_ALLOWED "grpc.security_frame_allowed" /** \} */ +/** If non-zero, enable TCP tracing and stats collection. */ +#define GRPC_ARG_TCP_TRACING_ENABLED "grpc.tcp_tracing_enabled" #endif /* GRPC_IMPL_CHANNEL_ARG_NAMES_H */ diff --git a/deps/grpc/include/grpc/module.modulemap b/deps/grpc/include/grpc/module.modulemap index 1e5174f6a60..be108abd3d2 100644 --- a/deps/grpc/include/grpc/module.modulemap +++ b/deps/grpc/include/grpc/module.modulemap @@ -8,6 +8,7 @@ header "byte_buffer.h" header "compression.h" header "create_channel_from_endpoint.h" header "credentials.h" + header "credentials_cpp.h" header "fork.h" header "grpc.h" header "grpc_audit_logging.h" @@ -40,6 +41,7 @@ header "byte_buffer.h" header "impl/slice_type.h" header "load_reporting.h" header "passive_listener.h" + header "private_key_signer.h" header "slice.h" header "slice_buffer.h" header "status.h" diff --git a/deps/grpc/include/grpc/private_key_signer.h b/deps/grpc/include/grpc/private_key_signer.h new file mode 100644 index 00000000000..be618b2f6cc --- /dev/null +++ b/deps/grpc/include/grpc/private_key_signer.h @@ -0,0 +1,104 @@ +// +// +// Copyright 2025 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// + +#ifndef GRPC_PRIVATE_KEY_SIGNER_H +#define GRPC_PRIVATE_KEY_SIGNER_H + +#include + +#include +#include +#include + +#include "absl/functional/any_invocable.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" + +namespace grpc_core { + +// Implementations of this class must be thread-safe. +class PrivateKeySigner { + public: + // A handle for an asynchronous signing operation. + // + // When `PrivateKeySigner::Sign` is implemented asynchronously, it returns an + // instance of a concrete implementation of this class. This handle is used + // to manage the asynchronous signing operation and can be used to cancel the + // operation via `PrivateKeySigner::Cancel`. + // + // Users must provide their own concrete implementation of this class. The + // handle can store any state needed for the asynchronous operation. + class AsyncSigningHandle { + public: + virtual ~AsyncSigningHandle() = default; + }; + + // Enum class representing TLS signature algorithm identifiers from BoringSSL. + // The values correspond to the SSL_SIGN_* macros in . + enum class SignatureAlgorithm { + kRsaPkcs1Sha256, + kRsaPkcs1Sha384, + kRsaPkcs1Sha512, + kEcdsaSecp256r1Sha256, + kEcdsaSecp384r1Sha384, + kEcdsaSecp521r1Sha512, + kRsaPssRsaeSha256, + kRsaPssRsaeSha384, + kRsaPssRsaeSha512, + }; + + // A callback that is invoked when an asynchronous signing operation is + // complete. The argument should contain the signed bytes on success, or a + // non-OK status on failure. + using OnSignComplete = absl::AnyInvocable)>; + + virtual ~PrivateKeySigner() = default; + + // Signs data_to_sign. + // May return either synchronously or asynchronously. + // For synchronous returns, directly returns either the signed bytes + // or a failed status, and the callback will never be invoked. + // For asynchronous implementations, returns a handle for the asynchronous + // signing operation. The function argument on_sign_complete must be called by + // the implementer when the async signing operation is complete. + // on_sign_complete must not be invoked synchronously within Sign(). + virtual std::variant, + std::shared_ptr> + Sign(absl::string_view data_to_sign, SignatureAlgorithm signature_algorithm, + OnSignComplete on_sign_complete) = 0; + + // Cancels an in-flight async signing operation using a handle returned + // from a previous call to Sign(). + virtual void Cancel(std::shared_ptr handle) = 0; +}; +} // namespace grpc_core + +/** + * EXPERIMENTAL API - Subject to change + * + * Adds a identity key signer and a identity certificate chain to + * grpc_tls_identity_pairs. This implementation only works with gRPC Binaries + * built with BoringSSL. + * Returns OK if success, or a non-OK status on failure. + */ +absl::Status grpc_tls_identity_pairs_add_pair_with_signer( + grpc_tls_identity_pairs* pairs, + std::shared_ptr private_key_signer, + absl::string_view cert_chain); + +#endif /* GRPC_PRIVATE_KEY_SIGNER_H */ \ No newline at end of file diff --git a/deps/grpc/include/grpc/support/port_platform.h b/deps/grpc/include/grpc/support/port_platform.h index 04a90fbf8a5..166b540a4e4 100644 --- a/deps/grpc/include/grpc/support/port_platform.h +++ b/deps/grpc/include/grpc/support/port_platform.h @@ -891,4 +891,10 @@ extern void gpr_unreachable_code(const char* reason, const char* file, #endif #endif +#ifdef GPR_OPENBSD +#define GRPC_MAX_SOCKADDR_SIZE 256 +#else +#define GRPC_MAX_SOCKADDR_SIZE 128 +#endif + #endif /* GRPC_SUPPORT_PORT_PLATFORM_H */ diff --git a/deps/grpc/include/grpcpp/channel.h b/deps/grpc/include/grpcpp/channel.h index 4602e401dd8..a9ed7dbc7ca 100644 --- a/deps/grpc/include/grpcpp/channel.h +++ b/deps/grpc/include/grpcpp/channel.h @@ -57,7 +57,6 @@ int64_t ChannelGetChannelzUuid(Channel* channel); /// Channels represent a connection to an endpoint. Created by \a CreateChannel. class Channel final : public grpc::ChannelInterface, - public grpc::internal::CallHook, public std::enable_shared_from_this, private grpc::internal::GrpcLibrary { public: diff --git a/deps/grpc/include/grpcpp/impl/call.h b/deps/grpc/include/grpcpp/impl/call.h index 32c58175327..f367e0edd19 100644 --- a/deps/grpc/include/grpcpp/impl/call.h +++ b/deps/grpc/include/grpcpp/impl/call.h @@ -20,7 +20,6 @@ #define GRPCPP_IMPL_CALL_H #include -#include namespace grpc { class CompletionQueue; @@ -29,44 +28,30 @@ class ClientRpcInfo; class ServerRpcInfo; } // namespace experimental namespace internal { -class CallHook; class CallOpSetInterface; /// Straightforward wrapping of the C call object class Call final { public: - Call() - : call_hook_(nullptr), - cq_(nullptr), - call_(nullptr), - max_receive_message_size_(-1) {} + Call() : cq_(nullptr), call_(nullptr), max_receive_message_size_(-1) {} /// call is owned by the caller - Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq) - : call_hook_(call_hook), - cq_(cq), - call_(call), - max_receive_message_size_(-1) {} + Call(grpc_call* call, grpc::CompletionQueue* cq) + : cq_(cq), call_(call), max_receive_message_size_(-1) {} - Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq, + Call(grpc_call* call, grpc::CompletionQueue* cq, experimental::ClientRpcInfo* rpc_info) - : call_hook_(call_hook), - cq_(cq), + : cq_(cq), call_(call), max_receive_message_size_(-1), client_rpc_info_(rpc_info) {} - Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq, - int max_receive_message_size, experimental::ServerRpcInfo* rpc_info) - : call_hook_(call_hook), - cq_(cq), + Call(grpc_call* call, grpc::CompletionQueue* cq, int max_receive_message_size, + experimental::ServerRpcInfo* rpc_info) + : cq_(cq), call_(call), max_receive_message_size_(max_receive_message_size), server_rpc_info_(rpc_info) {} - void PerformOps(CallOpSetInterface* ops) { - call_hook_->PerformOpsOnCall(ops, this); - } - grpc_call* call() const { return call_; } grpc::CompletionQueue* cq() const { return cq_; } @@ -81,7 +66,6 @@ class Call final { } private: - CallHook* call_hook_; grpc::CompletionQueue* cq_; grpc_call* call_; int max_receive_message_size_; diff --git a/deps/grpc/include/grpcpp/impl/call_hook.h b/deps/grpc/include/grpcpp/impl/call_hook.h deleted file mode 100644 index 2376769194e..00000000000 --- a/deps/grpc/include/grpcpp/impl/call_hook.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// -// Copyright 2015 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// - -#ifndef GRPCPP_IMPL_CALL_HOOK_H -#define GRPCPP_IMPL_CALL_HOOK_H - -namespace grpc { - -namespace internal { -class CallOpSetInterface; -class Call; - -/// This is an interface that Channel and Server implement to allow them to hook -/// performing ops. -class CallHook { - public: - virtual ~CallHook() {} - virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0; -}; -} // namespace internal - -} // namespace grpc - -#endif // GRPCPP_IMPL_CALL_HOOK_H diff --git a/deps/grpc/include/grpcpp/impl/call_op_set.h b/deps/grpc/include/grpcpp/impl/call_op_set.h index 5de617001af..21595a8fc78 100644 --- a/deps/grpc/include/grpcpp/impl/call_op_set.h +++ b/deps/grpc/include/grpcpp/impl/call_op_set.h @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -50,7 +49,6 @@ namespace grpc { namespace internal { class Call; -class CallHook; // TODO(yangg) if the map is changed before we send, the pointers will be a // mess. Make sure it does not happen. diff --git a/deps/grpc/include/grpcpp/impl/client_unary_call.h b/deps/grpc/include/grpcpp/impl/client_unary_call.h index 5cb1271c2ca..b3e5370b905 100644 --- a/deps/grpc/include/grpcpp/impl/client_unary_call.h +++ b/deps/grpc/include/grpcpp/impl/client_unary_call.h @@ -77,7 +77,7 @@ class BlockingUnaryCallImpl { ops.AllowNoMessage(); ops.ClientSendClose(); ops.ClientRecvStatus(context, &status_); - call.PerformOps(&ops); + ops.FillOps(&call); cq.Pluck(&ops); // Some of the ops might fail. If the ops fail in the core layer, status // would reflect the error. But, if the ops fail in the C++ layer, the diff --git a/deps/grpc/include/grpcpp/impl/codegen/call_hook.h b/deps/grpc/include/grpcpp/impl/codegen/call_hook.h deleted file mode 100644 index c2c8efd45fb..00000000000 --- a/deps/grpc/include/grpcpp/impl/codegen/call_hook.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// -// Copyright 2015 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// - -#ifndef GRPCPP_IMPL_CODEGEN_CALL_HOOK_H -#define GRPCPP_IMPL_CODEGEN_CALL_HOOK_H - -// IWYU pragma: private - -/// TODO(chengyuc): Remove this file after solving compatibility. -#include - -#endif // GRPCPP_IMPL_CODEGEN_CALL_HOOK_H diff --git a/deps/grpc/include/grpcpp/impl/metadata_map.h b/deps/grpc/include/grpcpp/impl/metadata_map.h index c6407eaa208..90f82799a89 100644 --- a/deps/grpc/include/grpcpp/impl/metadata_map.h +++ b/deps/grpc/include/grpcpp/impl/metadata_map.h @@ -39,9 +39,9 @@ class MetadataMap { std::string GetBinaryErrorDetails() { // if filled_, extract from the multimap for O(log(n)) if (filled_) { - auto iter = map_.find(kBinaryErrorDetailsKey); - if (iter != map_.end()) { - return std::string(iter->second.begin(), iter->second.length()); + auto [it, end] = map_.equal_range(kBinaryErrorDetailsKey); + if (it != end) { + return std::string(it->second.begin(), it->second.length()); } } // if not yet filled, take the O(n) lookup to avoid allocating the diff --git a/deps/grpc/include/grpcpp/impl/server_callback_handlers.h b/deps/grpc/include/grpcpp/impl/server_callback_handlers.h index bc3965f675a..e5b22d1eba9 100644 --- a/deps/grpc/include/grpcpp/impl/server_callback_handlers.h +++ b/deps/grpc/include/grpcpp/impl/server_callback_handlers.h @@ -144,7 +144,7 @@ class CallbackUnaryHandler : public grpc::internal::MethodHandler { finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, s); } finish_ops_.set_core_cq_tag(&finish_tag_); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } void SendInitialMetadata() override { @@ -171,7 +171,7 @@ class CallbackUnaryHandler : public grpc::internal::MethodHandler { } ctx_->sent_initial_metadata_ = true; meta_ops_.set_core_cq_tag(&meta_tag_); - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } private: @@ -333,7 +333,7 @@ class CallbackClientStreamingHandler : public grpc::internal::MethodHandler { finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, s); } finish_ops_.set_core_cq_tag(&finish_tag_); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } void SendInitialMetadata() override { @@ -358,13 +358,13 @@ class CallbackClientStreamingHandler : public grpc::internal::MethodHandler { } ctx_->sent_initial_metadata_ = true; meta_ops_.set_core_cq_tag(&meta_tag_); - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Read(RequestType* req) override { this->Ref(); read_ops_.RecvMessage(req); - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } private: @@ -536,7 +536,7 @@ class CallbackServerStreamingHandler : public grpc::internal::MethodHandler { ctx_->sent_initial_metadata_ = true; } finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, s); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } void SendInitialMetadata() override { @@ -561,7 +561,7 @@ class CallbackServerStreamingHandler : public grpc::internal::MethodHandler { } ctx_->sent_initial_metadata_ = true; meta_ops_.set_core_cq_tag(&meta_tag_); - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Write(const ResponseType* resp, grpc::WriteOptions options) override { @@ -581,7 +581,7 @@ class CallbackServerStreamingHandler : public grpc::internal::MethodHandler { ABSL_CHECK( write_ops_.SendMessagePtr(resp, options, ctx_->memory_allocator()) .ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void WriteAndFinish(const ResponseType* resp, grpc::WriteOptions options, @@ -752,7 +752,7 @@ class CallbackBidiHandler : public grpc::internal::MethodHandler { ctx_->sent_initial_metadata_ = true; } finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, s); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } void SendInitialMetadata() override { @@ -777,7 +777,7 @@ class CallbackBidiHandler : public grpc::internal::MethodHandler { } ctx_->sent_initial_metadata_ = true; meta_ops_.set_core_cq_tag(&meta_tag_); - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Write(const ResponseType* resp, grpc::WriteOptions options) override { @@ -797,7 +797,7 @@ class CallbackBidiHandler : public grpc::internal::MethodHandler { ABSL_CHECK( write_ops_.SendMessagePtr(resp, options, ctx_->memory_allocator()) .ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void WriteAndFinish(const ResponseType* resp, grpc::WriteOptions options, @@ -812,7 +812,7 @@ class CallbackBidiHandler : public grpc::internal::MethodHandler { void Read(RequestType* req) override { this->Ref(); read_ops_.RecvMessage(req); - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } private: diff --git a/deps/grpc/include/grpcpp/impl/status.h b/deps/grpc/include/grpcpp/impl/status.h index 94c0e80a9b6..ef18aa73fb0 100644 --- a/deps/grpc/include/grpcpp/impl/status.h +++ b/deps/grpc/include/grpcpp/impl/status.h @@ -95,17 +95,16 @@ class GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING GRPCXX_DLL Status { /// instead of a value (which results in a copy instead of a move) to allow /// for easy transition to absl::Status in the future which accepts an /// absl::string_view as a parameter. - Status(StatusCode code, const std::string& error_message) - : code_(code), error_message_(error_message) {} + Status(StatusCode code, std::string error_message) + : code_(code), error_message_(std::move(error_message)) {} /// Construct an instance with \a code, \a error_message and /// \a error_details. It is an error to construct an OK status with non-empty /// \a error_message and/or \a error_details. - Status(StatusCode code, const std::string& error_message, - const std::string& error_details) + Status(StatusCode code, std::string error_message, std::string error_details) : code_(code), - error_message_(error_message), - binary_error_details_(error_details) {} + error_message_(std::move(error_message)), + binary_error_details_(std::move(error_details)) {} // Pre-defined special status objects. /// An OK pre-defined instance. diff --git a/deps/grpc/include/grpcpp/resource_quota.h b/deps/grpc/include/grpcpp/resource_quota.h index 4f9e9cee55f..0c87385a85c 100644 --- a/deps/grpc/include/grpcpp/resource_quota.h +++ b/deps/grpc/include/grpcpp/resource_quota.h @@ -54,6 +54,9 @@ class ResourceQuota final : private grpc::internal::GrpcLibrary { /// normal course. ResourceQuota& SetMaxThreads(int new_max_threads); + // Set the max number of concurrent streams to the server. + ResourceQuota& SetMaxOutstandingStreams(int new_max_outstanding_streams); + grpc_resource_quota* c_resource_quota() const { return impl_; } private: diff --git a/deps/grpc/include/grpcpp/security/tls_certificate_provider.h b/deps/grpc/include/grpcpp/security/tls_certificate_provider.h index d85785c17a9..144817a5904 100644 --- a/deps/grpc/include/grpcpp/security/tls_certificate_provider.h +++ b/deps/grpc/include/grpcpp/security/tls_certificate_provider.h @@ -22,14 +22,14 @@ #include #include #include +#include #include #include #include +#include #include -#include "absl/status/statusor.h" - namespace grpc { namespace experimental { @@ -45,16 +45,27 @@ class GRPCXX_DLL CertificateProviderInterface { // A struct that stores the credential data presented to the peer in handshake // to show local identity. The private_key and certificate_chain should always // match. -struct GRPCXX_DLL IdentityKeyCertPair { +struct [[deprecated("Use IdentityKeyOrSignerCertPair instead")]] GRPCXX_DLL + IdentityKeyCertPair { std::string private_key; std::string certificate_chain; }; +// A struct that stores the credential data presented to the peer in handshake +// to show local identity. The private_key and certificate_chain should always +// match. The private_key can be either a PEM string or a PrivateKeySigner. +// The PrivateKeySigner will only work with gRPC binaries compiled with +// BoringSSL. +struct GRPCXX_DLL IdentityKeyOrSignerCertPair { + std::variant> private_key; + std::string certificate_chain; +}; + // A basic CertificateProviderInterface implementation that will load credential // data from static string during initialization. This provider will always // return the same cert data for all cert names, and reloading is not supported. -class GRPCXX_DLL StaticDataCertificateProvider - : public CertificateProviderInterface { +class [[deprecated("Use InMemoryCertificateProvider instead")]] GRPCXX_DLL + StaticDataCertificateProvider : public CertificateProviderInterface { public: StaticDataCertificateProvider( const std::string& root_certificate, @@ -74,7 +85,8 @@ class GRPCXX_DLL StaticDataCertificateProvider // Returns an OK status if the following conditions hold: // - the root certificates consist of one or more valid PEM blocks, and // - every identity key-cert pair has a certificate chain that consists of - // valid PEM blocks and has a private key is a valid PEM block. + // valid PEM blocks and has a private key that is either a valid PEM block + // or a non-null PrivateKeySigner instance. absl::Status ValidateCredentials() const; private: @@ -139,6 +151,39 @@ class GRPCXX_DLL FileWatcherCertificateProvider final // - the currently-loaded root certificates, if any, consist of one or more // valid PEM blocks, and // - every currently-loaded identity key-cert pair, if any, has a certificate + // chain that consists of valid PEM blocks and has a private key that is + // either a valid PEM block or a non-null PrivateKeySigner instance. + absl::Status ValidateCredentials() const; + + private: + grpc_tls_certificate_provider* c_provider_ = nullptr; +}; + +// "A CertificateProviderInterface implementation that stores credentials +// in-memory and allows the user to update credentials on-demand. +class GRPCXX_DLL InMemoryCertificateProvider + : public CertificateProviderInterface { + public: + InMemoryCertificateProvider(); + + ~InMemoryCertificateProvider() override; + + grpc_tls_certificate_provider* c_provider() override { return c_provider_; } + + // TODO(anasalazar): Expose some API for callers to pass in a SPIFFE bundle + // map for the root cert. + // Users should verify the status retuned to confirm that the update was + // successful. + absl::Status UpdateRoot(const std::string& root_certificate); + absl::Status UpdateIdentityKeyCertPair( + std::vector identity_key_cert_pairs); + absl::Status UpdateIdentityKeyCertPair( + std::vector + identity_key_or_signer_cert_pairs); + + // Returns an OK status if the following conditions hold: + // - the root certificates consist of one or more valid PEM blocks, and + // - every identity key-cert pair has a certificate chain that consists of // chain that consists of valid PEM blocks and has a private key is a valid // PEM block. absl::Status ValidateCredentials() const; diff --git a/deps/grpc/include/grpcpp/security/tls_credentials_options.h b/deps/grpc/include/grpcpp/security/tls_credentials_options.h index b509af05c69..b4aab82aee7 100644 --- a/deps/grpc/include/grpcpp/security/tls_credentials_options.h +++ b/deps/grpc/include/grpcpp/security/tls_credentials_options.h @@ -52,8 +52,15 @@ class TlsCredentialsOptions { // ---- Setters for member fields ---- // Sets the certificate provider used to store root certs and identity certs. + [[deprecated( + "Use set_root_certificate_provider() or " + "set_identity_certificate_provider() instead.")]] void set_certificate_provider( std::shared_ptr certificate_provider); + void set_root_certificate_provider( + std::shared_ptr certificate_provider); + void set_identity_certificate_provider( + std::shared_ptr certificate_provider); // Watches the updates of root certificates with name |root_cert_name|. // If used in TLS credentials, setting this field is optional for both the // client side and the server side. @@ -64,6 +71,7 @@ class TlsCredentialsOptions { // certificate updates, and assume no root certificates needed for the server // (in the one-side TLS scenario, the server is not required to provide root // certs). We don't support default root certs on server side. + [[deprecated("Use set_root_certificate_provider()")]] void watch_root_certs(); // Sets the name of root certificates being watched, if |watch_root_certs| is // called. If not set, an empty string will be used as the name. @@ -74,6 +82,7 @@ class TlsCredentialsOptions { // |identity_cert_name|. If used in TLS credentials, it is required to be set // on the server side, and optional for the client side(in the one-side // TLS scenario, the client is not required to provide identity certs). + [[deprecated("Use set_identity_certificate_provider()")]] void watch_identity_key_cert_pairs(); // Sets the name of identity key-cert pairs being watched, if // |watch_identity_key_cert_pairs| is called. If not set, an empty string will @@ -133,16 +142,20 @@ class TlsCredentialsOptions { grpc_tls_credentials_options* c_credentials_options() const; protected: - // Returns the internal c options. The caller does not take ownership of the - // returned pointer. + // Returns the internal c options. The caller does not take ownership of + // the returned pointer. grpc_tls_credentials_options* mutable_c_credentials_options() { return c_credentials_options_; } private: - std::shared_ptr certificate_provider_; + std::shared_ptr legacy_certificate_provider_; + std::shared_ptr root_certificate_provider_; + std::shared_ptr identity_certificate_provider_; std::shared_ptr certificate_verifier_; grpc_tls_credentials_options* c_credentials_options_ = nullptr; + bool is_watching_roots_ = false; + bool is_watching_identity_ = false; }; // Contains configurable options on the client side. @@ -157,6 +170,11 @@ class TlsChannelCredentialsOptions final : public TlsCredentialsOptions { // The default is true. void set_verify_server_certs(bool verify_server_certs); + // Overrides the SNI that the client sends in the TLS handshake. nullopt + // indicates that SNI should not be overridden. An empty string value + // indicates that SNI should not be sent at all. The default is nullopt. + void set_sni_override(std::optional sni_override); + private: }; @@ -164,8 +182,22 @@ class TlsChannelCredentialsOptions final : public TlsCredentialsOptions { // It is used for experimental purposes for now and it is subject to change. class TlsServerCredentialsOptions final : public TlsCredentialsOptions { public: - // Server side is required to use a provider, because server always needs to - // use identity certs. + // Server side is required to use an identity provider, because server always + // needs to use identity certs. + static absl::StatusOr Create( + std::shared_ptr + identity_certificate_provider) { + if (identity_certificate_provider == nullptr) { + return absl::InvalidArgumentError( + "identity certificate provider must be non-null"); + } + TlsServerCredentialsOptions options; + options.set_identity_certificate_provider( + std::move(identity_certificate_provider)); + return options; + } + + [[deprecated("Use Create() instead.")]] explicit TlsServerCredentialsOptions( std::shared_ptr certificate_provider) : TlsCredentialsOptions() { @@ -191,6 +223,8 @@ class TlsServerCredentialsOptions final : public TlsCredentialsOptions { void set_send_client_ca_list(bool send_client_ca_list); private: + // Default ctor, to be used by Create(). + TlsServerCredentialsOptions() = default; }; } // namespace experimental diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/security_frame.cc b/deps/grpc/include/grpcpp/security/tls_private_key_signer.h similarity index 58% rename from deps/grpc/src/core/ext/transport/chttp2/transport/security_frame.cc rename to deps/grpc/include/grpcpp/security/tls_private_key_signer.h index 24783f311da..4a0b0b90aac 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/security_frame.cc +++ b/deps/grpc/include/grpcpp/security/tls_private_key_signer.h @@ -1,4 +1,5 @@ // +// // Copyright 2025 gRPC authors. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,19 +14,21 @@ // See the License for the specific language governing permissions and // limitations under the License. // +// -#include "src/core/ext/transport/chttp2/transport/security_frame.h" +#ifndef GRPCPP_SECURITY_TLS_PRIVATE_KEY_SIGNER_H +#define GRPCPP_SECURITY_TLS_PRIVATE_KEY_SIGNER_H -#include -#include +#include +#include +#include -#include "src/core/lib/slice/slice.h" -#include "src/core/lib/slice/slice_buffer.h" -#include "src/core/lib/transport/transport_framing_endpoint_extension.h" -#include "absl/status/status.h" +namespace grpc { +namespace experimental { -namespace grpc_core { +using grpc_core::PrivateKeySigner; // NOLINT(misc-unused-using-decls) -// TODO(tjagtap) [PH2][P1] Implement +} // namespace experimental +} // namespace grpc -} // namespace grpc_core +#endif // GRPCPP_SECURITY_TLS_PRIVATE_KEY_SIGNER_H diff --git a/deps/grpc/include/grpcpp/server.h b/deps/grpc/include/grpcpp/server.h index 0392bae4dbc..95fdf77c483 100644 --- a/deps/grpc/include/grpcpp/server.h +++ b/deps/grpc/include/grpcpp/server.h @@ -248,9 +248,6 @@ class Server : public ServerInterface, private internal::GrpcLibrary { context_allocator_ = std::move(context_allocator); } - void PerformOpsOnCall(internal::CallOpSetInterface* ops, - internal::Call* call) override; - void ShutdownInternal(gpr_timespec deadline) ABSL_LOCKS_EXCLUDED(mu_) override; diff --git a/deps/grpc/include/grpcpp/server_builder.h b/deps/grpc/include/grpcpp/server_builder.h index 118861fa063..175ca981ac7 100644 --- a/deps/grpc/include/grpcpp/server_builder.h +++ b/deps/grpc/include/grpcpp/server_builder.h @@ -224,6 +224,10 @@ class ServerBuilder { /// Set the attached buffer pool for this server ServerBuilder& SetResourceQuota(const grpc::ResourceQuota& resource_quota); + ServerBuilder& SetEventEngine( + std::shared_ptr + event_engine); + ServerBuilder& SetOption(std::unique_ptr option); /// Options for synchronous servers. @@ -428,6 +432,8 @@ class ServerBuilder { grpc::AsyncGenericService* generic_service_{nullptr}; std::unique_ptr context_allocator_; grpc::CallbackGenericService* callback_generic_service_{nullptr}; + std::shared_ptr event_engine_ = + nullptr; struct { bool is_set; diff --git a/deps/grpc/include/grpcpp/server_interface.h b/deps/grpc/include/grpcpp/server_interface.h index a1454959f5d..b5ebb393346 100644 --- a/deps/grpc/include/grpcpp/server_interface.h +++ b/deps/grpc/include/grpcpp/server_interface.h @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -57,9 +56,9 @@ class ServerInterceptorFactoryInterface; class ServerMetricRecorder; } // namespace experimental -class ServerInterface : public internal::CallHook { +class ServerInterface { public: - ~ServerInterface() override {} + virtual ~ServerInterface() {} /// \a Shutdown does the following things: /// @@ -160,9 +159,6 @@ class ServerInterface : public internal::CallHook { virtual grpc_server* server() = 0; - void PerformOpsOnCall(internal::CallOpSetInterface* ops, - internal::Call* call) override = 0; - class BaseAsyncRequest : public internal::CompletionQueueTag { public: BaseAsyncRequest(ServerInterface* server, grpc::ServerContext* context, @@ -210,7 +206,7 @@ class ServerInterface : public internal::CallHook { return BaseAsyncRequest::FinalizeResult(tag, status); } call_wrapper_ = grpc::internal::Call( - call_, server_, call_cq_, server_->max_receive_message_size(), + call_, call_cq_, server_->max_receive_message_size(), context_->set_server_rpc_info(name_, type_, *server_->interceptor_creators())); return BaseAsyncRequest::FinalizeResult(tag, status); diff --git a/deps/grpc/include/grpcpp/support/async_stream.h b/deps/grpc/include/grpcpp/support/async_stream.h index 4ca0e99f8a4..470c875e5b6 100644 --- a/deps/grpc/include/grpcpp/support/async_stream.h +++ b/deps/grpc/include/grpcpp/support/async_stream.h @@ -235,7 +235,7 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { meta_ops_.set_output_tag(tag); meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Read(R* msg, void* tag) override { @@ -245,7 +245,7 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { read_ops_.RecvInitialMetadata(context_); } read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. @@ -260,7 +260,7 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { finish_ops_.RecvInitialMetadata(context_); } finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } private: @@ -285,7 +285,7 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { init_ops_.SendInitialMetadata(&context_->send_initial_metadata_, context_->initial_metadata_flags()); init_ops_.set_output_tag(tag); - call_.PerformOps(&init_ops_); + init_ops_.FillOps(&call_); } grpc::ChannelInterface* channel_; @@ -385,7 +385,7 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { meta_ops_.set_output_tag(tag); meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Write(const W& msg, void* tag) override { @@ -393,7 +393,7 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { write_ops_.set_output_tag(tag); // TODO(ctiller): don't assert ABSL_CHECK(write_ops_.SendMessage(msg, channel_->memory_allocator()).ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void Write(const W& msg, grpc::WriteOptions options, void* tag) override { @@ -408,14 +408,14 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { ABSL_CHECK( write_ops_.SendMessage(msg, options, channel_->memory_allocator()) .ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void WritesDone(void* tag) override { ABSL_CHECK(started_); write_ops_.set_output_tag(tag); write_ops_.ClientSendClose(); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. @@ -432,7 +432,7 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { finish_ops_.RecvInitialMetadata(context_); } finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } private: @@ -458,7 +458,7 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { // buffered up to coalesce with later message send. No op is performed. if (!context_->initial_metadata_corked_) { write_ops_.set_output_tag(tag); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } } @@ -557,7 +557,7 @@ class ClientAsyncReaderWriter final meta_ops_.set_output_tag(tag); meta_ops_.RecvInitialMetadata(context_); - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Read(R* msg, void* tag) override { @@ -567,7 +567,7 @@ class ClientAsyncReaderWriter final read_ops_.RecvInitialMetadata(context_); } read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } void Write(const W& msg, void* tag) override { @@ -575,7 +575,7 @@ class ClientAsyncReaderWriter final write_ops_.set_output_tag(tag); // TODO(ctiller): don't assert ABSL_CHECK(write_ops_.SendMessage(msg, channel_->memory_allocator()).ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void Write(const W& msg, grpc::WriteOptions options, void* tag) override { @@ -589,14 +589,14 @@ class ClientAsyncReaderWriter final ABSL_CHECK( write_ops_.SendMessage(msg, options, channel_->memory_allocator()) .ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void WritesDone(void* tag) override { ABSL_CHECK(started_); write_ops_.set_output_tag(tag); write_ops_.ClientSendClose(); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } /// See the \a ClientAsyncStreamingInterface.Finish method for semantics. @@ -610,7 +610,7 @@ class ClientAsyncReaderWriter final finish_ops_.RecvInitialMetadata(context_); } finish_ops_.ClientRecvStatus(context_, status); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } private: @@ -633,7 +633,7 @@ class ClientAsyncReaderWriter final // buffered up to coalesce with later message send. No op is performed. if (!context_->initial_metadata_corked_) { write_ops_.set_output_tag(tag); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } } @@ -714,8 +714,7 @@ class ServerAsyncReaderInterface template class ServerAsyncReader final : public ServerAsyncReaderInterface { public: - explicit ServerAsyncReader(grpc::ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} + explicit ServerAsyncReader(grpc::ServerContext* ctx) : call_(), ctx_(ctx) {} /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. /// @@ -732,13 +731,13 @@ class ServerAsyncReader final : public ServerAsyncReaderInterface { meta_ops_.set_compression_level(ctx_->compression_level()); } ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Read(R* msg, void* tag) override { read_ops_.set_output_tag(tag); read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } /// See the \a ServerAsyncReaderInterface.Read method for semantics @@ -770,7 +769,7 @@ class ServerAsyncReader final : public ServerAsyncReaderInterface { } else { finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); } - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } /// See the \a ServerAsyncReaderInterface.Read method for semantics @@ -794,7 +793,7 @@ class ServerAsyncReader final : public ServerAsyncReaderInterface { ctx_->sent_initial_metadata_ = true; } finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } private: @@ -862,8 +861,7 @@ class ServerAsyncWriterInterface template class ServerAsyncWriter final : public ServerAsyncWriterInterface { public: - explicit ServerAsyncWriter(grpc::ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} + explicit ServerAsyncWriter(grpc::ServerContext* ctx) : call_(), ctx_(ctx) {} /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. /// @@ -882,7 +880,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { meta_ops_.set_compression_level(ctx_->compression_level()); } ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Write(const W& msg, void* tag) override { @@ -890,7 +888,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { EnsureInitialMetadataSent(&write_ops_); // TODO(ctiller): don't assert ABSL_CHECK(write_ops_.SendMessage(msg, ctx_->memory_allocator()).ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void Write(const W& msg, grpc::WriteOptions options, void* tag) override { @@ -903,7 +901,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { // TODO(ctiller): don't assert ABSL_CHECK( write_ops_.SendMessage(msg, options, ctx_->memory_allocator()).ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } /// See the \a ServerAsyncWriterInterface.WriteAndFinish method for semantics. @@ -924,7 +922,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { ABSL_CHECK( write_ops_.SendMessage(msg, options, ctx_->memory_allocator()).ok()); write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } /// See the \a ServerAsyncWriterInterface.Finish method for semantics. @@ -942,7 +940,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { finish_ops_.set_output_tag(tag); EnsureInitialMetadataSent(&finish_ops_); finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } private: @@ -1031,7 +1029,7 @@ class ServerAsyncReaderWriter final : public ServerAsyncReaderWriterInterface { public: explicit ServerAsyncReaderWriter(grpc::ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} + : call_(), ctx_(ctx) {} /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. /// @@ -1050,13 +1048,13 @@ class ServerAsyncReaderWriter final meta_ops_.set_compression_level(ctx_->compression_level()); } ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_ops_); + meta_ops_.FillOps(&call_); } void Read(R* msg, void* tag) override { read_ops_.set_output_tag(tag); read_ops_.RecvMessage(msg); - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } void Write(const W& msg, void* tag) override { @@ -1064,7 +1062,7 @@ class ServerAsyncReaderWriter final EnsureInitialMetadataSent(&write_ops_); // TODO(ctiller): don't assert ABSL_CHECK(write_ops_.SendMessage(msg, ctx_->memory_allocator()).ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void Write(const W& msg, grpc::WriteOptions options, void* tag) override { @@ -1075,7 +1073,7 @@ class ServerAsyncReaderWriter final EnsureInitialMetadataSent(&write_ops_); ABSL_CHECK( write_ops_.SendMessage(msg, options, ctx_->memory_allocator()).ok()); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } /// See the \a ServerAsyncReaderWriterInterface.WriteAndFinish @@ -1097,7 +1095,7 @@ class ServerAsyncReaderWriter final ABSL_CHECK( write_ops_.SendMessage(msg, options, ctx_->memory_allocator()).ok()); write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } /// See the \a ServerAsyncReaderWriterInterface.Finish method for semantics. @@ -1116,7 +1114,7 @@ class ServerAsyncReaderWriter final EnsureInitialMetadataSent(&finish_ops_); finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } private: diff --git a/deps/grpc/include/grpcpp/support/async_unary_call.h b/deps/grpc/include/grpcpp/support/async_unary_call.h index 8bbec3ab196..66d6c5f89fd 100644 --- a/deps/grpc/include/grpcpp/support/async_unary_call.h +++ b/deps/grpc/include/grpcpp/support/async_unary_call.h @@ -148,7 +148,7 @@ class ClientAsyncResponseReaderHelper { auto* single_buf = static_cast(single_buf_view); single_buf->set_output_tag(tag); single_buf->RecvInitialMetadata(context); - call->PerformOps(single_buf); + single_buf->FillOps(call); }; // Note that this function goes one step further than the previous one @@ -175,7 +175,7 @@ class ClientAsyncResponseReaderHelper { finish_buf->RecvMessage(static_cast(msg)); finish_buf->AllowNoMessage(); finish_buf->ClientRecvStatus(context, status); - call->PerformOps(finish_buf); + finish_buf->FillOps(call); } else { auto* single_buf = static_cast(single_buf_view); single_buf->set_output_tag(tag); @@ -183,7 +183,7 @@ class ClientAsyncResponseReaderHelper { single_buf->RecvMessage(static_cast(msg)); single_buf->AllowNoMessage(); single_buf->ClientRecvStatus(context, status); - call->PerformOps(single_buf); + single_buf->FillOps(call); } }; } @@ -298,7 +298,7 @@ class ServerAsyncResponseWriter final : public grpc::internal::ServerAsyncStreamingInterface { public: explicit ServerAsyncResponseWriter(grpc::ServerContext* ctx) - : call_(nullptr, nullptr, nullptr), ctx_(ctx) {} + : call_(), ctx_(ctx) {} /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics. /// @@ -317,7 +317,7 @@ class ServerAsyncResponseWriter final meta_buf_.set_compression_level(ctx_->compression_level()); } ctx_->sent_initial_metadata_ = true; - call_.PerformOps(&meta_buf_); + meta_buf_.FillOps(&call_); } /// Indicate that the stream is to be finished and request notification @@ -358,7 +358,7 @@ class ServerAsyncResponseWriter final } else { finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_, status); } - call_.PerformOps(&finish_buf_); + finish_buf_.FillOps(&call_); } /// Indicate that the stream is to be finished with a non-OK status, @@ -389,7 +389,7 @@ class ServerAsyncResponseWriter final ctx_->sent_initial_metadata_ = true; } finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_, status); - call_.PerformOps(&finish_buf_); + finish_buf_.FillOps(&call_); } private: diff --git a/deps/grpc/include/grpcpp/support/callback_common.h b/deps/grpc/include/grpcpp/support/callback_common.h index bc4f1623d3b..0eaa05174b2 100644 --- a/deps/grpc/include/grpcpp/support/callback_common.h +++ b/deps/grpc/include/grpcpp/support/callback_common.h @@ -20,6 +20,7 @@ #define GRPCPP_SUPPORT_CALLBACK_COMMON_H #include +#include #include #include #include @@ -29,6 +30,7 @@ #include #include +#include #include "absl/log/absl_check.h" @@ -127,18 +129,23 @@ class CallbackWithStatusTag : public grpc_completion_queue_functor { auto status = std::move(status_); func_ = nullptr; // reset to clear this out for sure status_ = Status(); // reset to clear this out for sure - GetGlobalCallbackHook()->RunCallback(call_, [&func, &status]() { + auto callback = [call = call_, func = std::move(func), + status = std::move(status)]() { + GetGlobalCallbackHook()->RunCallback(call, [func, status]() { #if GRPC_ALLOW_EXCEPTIONS - try { - func(status); - } catch (...) { - // nothing to return or change here, just don't crash the library - } + try { + func(status); + } catch (...) { + // nothing to return or change here, just don't crash the library + } #else // GRPC_ALLOW_EXCEPTIONS - func(status); + func(status); #endif // GRPC_ALLOW_EXCEPTIONS - }); - grpc_call_unref(call_); + }); + grpc_call_unref(call); + }; + + grpc_call_run_cq_cb(call_, std::move(callback)); } }; @@ -224,17 +231,21 @@ class CallbackWithSuccessTag : public grpc_completion_queue_functor { #endif if (do_callback) { - GetGlobalCallbackHook()->RunCallback(call_, [this, ok]() { + auto callback = [call = call_, func = func_, ok]() { + GetGlobalCallbackHook()->RunCallback(call, [func, ok]() { #if GRPC_ALLOW_EXCEPTIONS - try { - func_(ok); - } catch (...) { - // nothing to return or change here, just don't crash the library - } + try { + func(ok); + } catch (...) { + // nothing to return or change here, just don't crash the library + } #else // GRPC_ALLOW_EXCEPTIONS - func_(ok); + func(ok); #endif // GRPC_ALLOW_EXCEPTIONS - }); + }); + }; + + grpc_call_run_cq_cb(call_, std::move(callback)); } } }; diff --git a/deps/grpc/include/grpcpp/support/client_callback.h b/deps/grpc/include/grpcpp/support/client_callback.h index 392632282c8..05523c3072f 100644 --- a/deps/grpc/include/grpcpp/support/client_callback.h +++ b/deps/grpc/include/grpcpp/support/client_callback.h @@ -108,7 +108,7 @@ class CallbackUnaryCallImpl { ops->ClientSendClose(); ops->ClientRecvStatus(context, tag->status_ptr()); ops->set_core_cq_tag(tag); - call.PerformOps(ops); + ops->FillOps(&call); } }; @@ -487,21 +487,21 @@ class ClientCallbackReaderWriterImpl context_->initial_metadata_flags()); } - call_.PerformOps(&start_ops_); + start_ops_.FillOps(&call_); { grpc::internal::MutexLock lock(&start_mu_); if (backlog_.read_ops) { - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } if (backlog_.write_ops) { - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } if (backlog_.writes_done_ops) { - call_.PerformOps(&writes_done_ops_); + writes_done_ops_.FillOps(&call_); } - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); // The last thing in this critical section is to set started_ so that it // can be used lock-free as well. started_.store(true, std::memory_order_release); @@ -522,7 +522,7 @@ class ClientCallbackReaderWriterImpl return; } } - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } void Write(const Request* msg, grpc::WriteOptions options) @@ -550,7 +550,7 @@ class ClientCallbackReaderWriterImpl return; } } - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void WritesDone() ABSL_LOCKS_EXCLUDED(start_mu_) override { writes_done_ops_.ClientSendClose(); @@ -575,7 +575,7 @@ class ClientCallbackReaderWriterImpl return; } } - call_.PerformOps(&writes_done_ops_); + writes_done_ops_.FillOps(&call_); } void AddHold(int holds) override { @@ -758,7 +758,7 @@ class ClientCallbackReaderImpl : public ClientCallbackReader { context_->initial_metadata_flags()); start_ops_.RecvInitialMetadata(context_); start_ops_.set_core_cq_tag(&start_tag_); - call_.PerformOps(&start_ops_); + start_ops_.FillOps(&call_); // Also set up the read tag so it doesn't have to be set up each time read_tag_.Set( @@ -773,7 +773,7 @@ class ClientCallbackReaderImpl : public ClientCallbackReader { { grpc::internal::MutexLock lock(&start_mu_); if (backlog_.read_ops) { - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } started_.store(true, std::memory_order_release); } @@ -784,7 +784,7 @@ class ClientCallbackReaderImpl : public ClientCallbackReader { &finish_ops_, /*can_inline=*/false); finish_ops_.ClientRecvStatus(context_, &finish_status_); finish_ops_.set_core_cq_tag(&finish_tag_); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } void Read(Response* msg) override { @@ -797,7 +797,7 @@ class ClientCallbackReaderImpl : public ClientCallbackReader { return; } } - call_.PerformOps(&read_ops_); + read_ops_.FillOps(&call_); } void AddHold(int holds) override { @@ -914,18 +914,18 @@ class ClientCallbackWriterImpl : public ClientCallbackWriter { start_ops_.SendInitialMetadata(&context_->send_initial_metadata_, context_->initial_metadata_flags()); } - call_.PerformOps(&start_ops_); + start_ops_.FillOps(&call_); { grpc::internal::MutexLock lock(&start_mu_); if (backlog_.write_ops) { - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } if (backlog_.writes_done_ops) { - call_.PerformOps(&writes_done_ops_); + writes_done_ops_.FillOps(&call_); } - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); // The last thing in this critical section is to set started_ so that it // can be used lock-free as well. started_.store(true, std::memory_order_release); @@ -962,7 +962,7 @@ class ClientCallbackWriterImpl : public ClientCallbackWriter { return; } } - call_.PerformOps(&write_ops_); + write_ops_.FillOps(&call_); } void WritesDone() ABSL_LOCKS_EXCLUDED(start_mu_) override { @@ -990,7 +990,7 @@ class ClientCallbackWriterImpl : public ClientCallbackWriter { return; } } - call_.PerformOps(&writes_done_ops_); + writes_done_ops_.FillOps(&call_); } void AddHold(int holds) override { @@ -1158,14 +1158,14 @@ class ClientCallbackUnaryImpl final : public ClientCallbackUnary { context_->initial_metadata_flags()); start_ops_.RecvInitialMetadata(context_); start_ops_.set_core_cq_tag(&start_tag_); - call_.PerformOps(&start_ops_); + start_ops_.FillOps(&call_); finish_tag_.Set( call_.call(), [this](bool /*ok*/) { MaybeFinish(); }, &finish_ops_, /*can_inline=*/false); finish_ops_.ClientRecvStatus(context_, &finish_status_); finish_ops_.set_core_cq_tag(&finish_tag_); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); } private: diff --git a/deps/grpc/include/grpcpp/support/method_handler.h b/deps/grpc/include/grpcpp/support/method_handler.h index 230c6ce7ec4..99a4f8d6752 100644 --- a/deps/grpc/include/grpcpp/support/method_handler.h +++ b/deps/grpc/include/grpcpp/support/method_handler.h @@ -72,7 +72,7 @@ void UnaryRunHandlerHelper(const MethodHandler::HandlerParameter& param, status = ops.SendMessagePtr(rsp, param.server_context->memory_allocator()); } ops.ServerSendStatus(¶m.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); + ops.FillOps(param.call); param.call->cq()->Pluck(&ops); } @@ -174,7 +174,7 @@ class ClientStreamingHandler : public grpc::internal::MethodHandler { ops.SendMessagePtr(&rsp, param.server_context->memory_allocator()); } ops.ServerSendStatus(¶m.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); + ops.FillOps(param.call); param.call->cq()->Pluck(&ops); } @@ -220,7 +220,7 @@ class ServerStreamingHandler : public grpc::internal::MethodHandler { } } ops.ServerSendStatus(¶m.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); + ops.FillOps(param.call); if (param.server_context->has_pending_ops_) { param.call->cq()->Pluck(¶m.server_context->pending_ops_); } @@ -288,7 +288,7 @@ class TemplatedBidiStreamingHandler : public grpc::internal::MethodHandler { } } ops.ServerSendStatus(¶m.server_context->trailing_metadata_, status); - param.call->PerformOps(&ops); + ops.FillOps(param.call); if (param.server_context->has_pending_ops_) { param.call->cq()->Pluck(¶m.server_context->pending_ops_); } @@ -377,7 +377,7 @@ class ErrorMethodHandler : public grpc::internal::MethodHandler { grpc::internal::CallOpServerSendStatus> ops; FillOps(param.server_context, message_, &ops); - param.call->PerformOps(&ops); + ops.FillOps(param.call); param.call->cq()->Pluck(&ops); } diff --git a/deps/grpc/include/grpcpp/support/sync_stream.h b/deps/grpc/include/grpcpp/support/sync_stream.h index ddd504d5d26..eefbe01ab3d 100644 --- a/deps/grpc/include/grpcpp/support/sync_stream.h +++ b/deps/grpc/include/grpcpp/support/sync_stream.h @@ -189,7 +189,7 @@ class ClientReader final : public ClientReaderInterface { grpc::internal::CallOpSet ops; ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); + ops.FillOps(&call_); cq_.Pluck(&ops); /// status ignored } @@ -212,7 +212,7 @@ class ClientReader final : public ClientReaderInterface { ops.RecvInitialMetadata(context_); } ops.RecvMessage(msg); - call_.PerformOps(&ops); + ops.FillOps(&call_); return cq_.Pluck(&ops) && ops.got_message; } @@ -230,7 +230,7 @@ class ClientReader final : public ClientReaderInterface { } grpc::Status status; ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); + ops.FillOps(&call_); ABSL_CHECK(cq_.Pluck(&ops)); return status; } @@ -262,7 +262,7 @@ class ClientReader final : public ClientReaderInterface { // TODO(ctiller): don't assert ABSL_CHECK(ops.SendMessagePtr(&request, channel->memory_allocator()).ok()); ops.ClientSendClose(); - call_.PerformOps(&ops); + ops.FillOps(&call_); cq_.Pluck(&ops); } }; @@ -311,7 +311,7 @@ class ClientWriter : public ClientWriterInterface { grpc::internal::CallOpSet ops; ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); + ops.FillOps(&call_); cq_.Pluck(&ops); // status ignored } @@ -341,14 +341,14 @@ class ClientWriter : public ClientWriterInterface { return false; } - call_.PerformOps(&ops); + ops.FillOps(&call_); return cq_.Pluck(&ops); } bool WritesDone() override { grpc::internal::CallOpSet ops; ops.ClientSendClose(); - call_.PerformOps(&ops); + ops.FillOps(&call_); return cq_.Pluck(&ops); } @@ -364,7 +364,7 @@ class ClientWriter : public ClientWriterInterface { finish_ops_.RecvInitialMetadata(context_); } finish_ops_.ClientRecvStatus(context_, &status); - call_.PerformOps(&finish_ops_); + finish_ops_.FillOps(&call_); ABSL_CHECK(cq_.Pluck(&finish_ops_)); return status; } @@ -394,7 +394,7 @@ class ClientWriter : public ClientWriterInterface { grpc::internal::CallOpSet ops; ops.SendInitialMetadata(&context->send_initial_metadata_, context->initial_metadata_flags()); - call_.PerformOps(&ops); + ops.FillOps(&call_); cq_.Pluck(&ops); } } @@ -462,7 +462,7 @@ class ClientReaderWriter final : public ClientReaderWriterInterface { grpc::internal::CallOpSet ops; ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); + ops.FillOps(&call_); cq_.Pluck(&ops); // status ignored } @@ -484,7 +484,7 @@ class ClientReaderWriter final : public ClientReaderWriterInterface { ops.RecvInitialMetadata(context_); } ops.RecvMessage(msg); - call_.PerformOps(&ops); + ops.FillOps(&call_); return cq_.Pluck(&ops) && ops.got_message; } @@ -513,14 +513,14 @@ class ClientReaderWriter final : public ClientReaderWriterInterface { return false; } - call_.PerformOps(&ops); + ops.FillOps(&call_); return cq_.Pluck(&ops); } bool WritesDone() override { grpc::internal::CallOpSet ops; ops.ClientSendClose(); - call_.PerformOps(&ops); + ops.FillOps(&call_); return cq_.Pluck(&ops); } @@ -538,7 +538,7 @@ class ClientReaderWriter final : public ClientReaderWriterInterface { } grpc::Status status; ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); + ops.FillOps(&call_); ABSL_CHECK(cq_.Pluck(&ops)); return status; } @@ -567,7 +567,7 @@ class ClientReaderWriter final : public ClientReaderWriterInterface { grpc::internal::CallOpSet ops; ops.SendInitialMetadata(&context->send_initial_metadata_, context->initial_metadata_flags()); - call_.PerformOps(&ops); + ops.FillOps(&call_); cq_.Pluck(&ops); } } @@ -597,7 +597,7 @@ class ServerReader final : public ServerReaderInterface { ops.set_compression_level(ctx_->compression_level()); } ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); + ops.FillOps(call_); call_->cq()->Pluck(&ops); } @@ -610,7 +610,7 @@ class ServerReader final : public ServerReaderInterface { bool Read(R* msg) override { grpc::internal::CallOpSet> ops; ops.RecvMessage(msg); - call_->PerformOps(&ops); + ops.FillOps(call_); bool ok = call_->cq()->Pluck(&ops) && ops.got_message; if (!ok) { ctx_->MaybeMarkCancelledOnRead(); @@ -654,7 +654,7 @@ class ServerWriter final : public ServerWriterInterface { ops.set_compression_level(ctx_->compression_level()); } ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); + ops.FillOps(call_); call_->cq()->Pluck(&ops); } @@ -682,7 +682,7 @@ class ServerWriter final : public ServerWriterInterface { } ctx_->sent_initial_metadata_ = true; } - call_->PerformOps(&ctx_->pending_ops_); + ctx_->pending_ops_.FillOps(call_); // if this is the last message we defer the pluck until AFTER we start // the trailing md op. This prevents hangs. See // https://github.com/grpc/grpc/issues/11546 @@ -729,7 +729,7 @@ class ServerReaderWriterBody final { ops.set_compression_level(ctx_->compression_level()); } ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); + ops.FillOps(call_); call_->cq()->Pluck(&ops); } @@ -742,7 +742,7 @@ class ServerReaderWriterBody final { bool Read(R* msg) { grpc::internal::CallOpSet> ops; ops.RecvMessage(msg); - call_->PerformOps(&ops); + ops.FillOps(call_); bool ok = call_->cq()->Pluck(&ops) && ops.got_message; if (!ok) { ctx_->MaybeMarkCancelledOnRead(); @@ -767,7 +767,7 @@ class ServerReaderWriterBody final { } ctx_->sent_initial_metadata_ = true; } - call_->PerformOps(&ctx_->pending_ops_); + ctx_->pending_ops_.FillOps(call_); // if this is the last message we defer the pluck until AFTER we start // the trailing md op. This prevents hangs. See // https://github.com/grpc/grpc/issues/11546 diff --git a/deps/grpc/include/grpcpp/version_info.h b/deps/grpc/include/grpcpp/version_info.h index 30cbffb4ccd..d27fc4e745e 100644 --- a/deps/grpc/include/grpcpp/version_info.h +++ b/deps/grpc/include/grpcpp/version_info.h @@ -19,9 +19,9 @@ #define GRPCPP_VERSION_INFO_H #define GRPC_CPP_VERSION_MAJOR 1 -#define GRPC_CPP_VERSION_MINOR 78 -#define GRPC_CPP_VERSION_PATCH 1 +#define GRPC_CPP_VERSION_MINOR 80 +#define GRPC_CPP_VERSION_PATCH 0 #define GRPC_CPP_VERSION_TAG "" -#define GRPC_CPP_VERSION_STRING "1.78.1" +#define GRPC_CPP_VERSION_STRING "1.80.0" #endif // GRPCPP_VERSION_INFO_H diff --git a/deps/grpc/src/compiler/BUILD b/deps/grpc/src/compiler/BUILD index c78d632313c..019c421ba82 100644 --- a/deps/grpc/src/compiler/BUILD +++ b/deps/grpc/src/compiler/BUILD @@ -82,8 +82,6 @@ grpc_cc_library( "proto_parser_helper", "//:gpr_platform", "//:grpc++_config_proto", - "@com_google_protobuf//src/google/protobuf/compiler:code_generator", - "@com_google_protobuf//src/google/protobuf/compiler:plugin", "@com_google_protobuf//src/google/protobuf/compiler/csharp:names", "@com_google_protobuf//src/google/protobuf/compiler/objectivec:names", "@com_google_protobuf//src/google/protobuf/compiler/php:names", diff --git a/deps/grpc/src/compiler/csharp_generator.cc b/deps/grpc/src/compiler/csharp_generator.cc index 7f2f4982f02..921e65282cb 100644 --- a/deps/grpc/src/compiler/csharp_generator.cc +++ b/deps/grpc/src/compiler/csharp_generator.cc @@ -241,7 +241,7 @@ std::string GetMarshallerFieldName(const Descriptor* message) { } std::string GetMethodFieldName(const MethodDescriptor* method) { - return "__Method_" + std::string(method->name()); + return std::string("__Method_") + std::string(method->name()); } std::string GetMethodRequestParamMaybe(const MethodDescriptor* method, @@ -449,7 +449,8 @@ void GenerateServiceDescriptorProperty(Printer* out, out->Print("\n"); } -void GenerateServerClass(Printer* out, const ServiceDescriptor* service) { +void GenerateServerClass(Printer* out, const ServiceDescriptor* service, + bool append_async_suffix) { out->Print( "/// Base class for server-side implementations of " "$servicename$\n", @@ -465,6 +466,14 @@ void GenerateServerClass(Printer* out, const ServiceDescriptor* service) { out->Indent(); for (int i = 0; i < service->method_count(); i++) { const MethodDescriptor* method = service->method(i); + std::string method_name(method->name()); + if (append_async_suffix == true) { + if (!(method_name.size() >= 5 && + method_name.compare(method_name.size() - 5, 5, "Async") == 0)) { + method_name += "Async"; + } + } + GenerateDocCommentServerMethod(out, method); GenerateObsoleteAttribute(out, method->options().deprecated()); GenerateGeneratedCodeAttribute(out); @@ -472,7 +481,7 @@ void GenerateServerClass(Printer* out, const ServiceDescriptor* service) { "public virtual $returntype$ " "$methodname$($request$$response_stream_maybe$, " "grpc::ServerCallContext context)\n", - "methodname", method->name(), "returntype", + "methodname", method_name, "returntype", GetMethodReturnTypeServer(method), "request", GetMethodRequestParamServer(method), "response_stream_maybe", GetMethodResponseStreamMaybe(method)); @@ -681,7 +690,8 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor* service) { out->Print("\n"); } -void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor* service) { +void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor* service, + bool append_async_suffix) { out->Print( "/// Creates service definition that can be registered with a " "server\n"); @@ -701,9 +711,17 @@ void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor* service) { out->Indent(); for (int i = 0; i < service->method_count(); i++) { const MethodDescriptor* method = service->method(i); + std::string method_name(method->name()); + if (append_async_suffix == true) { + if (!(method_name.size() >= 5 && + method_name.compare(method_name.size() - 5, 5, "Async") == 0)) { + method_name += "Async"; + } + } + out->Print("\n.AddMethod($methodfield$, serviceImpl.$methodname$)", "methodfield", GetMethodFieldName(method), "methodname", - method->name()); + method_name); } out->Print(".Build();\n"); out->Outdent(); @@ -715,7 +733,8 @@ void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor* service) { } void GenerateBindServiceWithBinderMethod(Printer* out, - const ServiceDescriptor* service) { + const ServiceDescriptor* service, + bool append_async_suffix) { out->Print( "/// Register service method with a service " "binder with or without implementation. Useful when customizing the " @@ -741,6 +760,14 @@ void GenerateBindServiceWithBinderMethod(Printer* out, for (int i = 0; i < service->method_count(); i++) { const MethodDescriptor* method = service->method(i); + std::string method_name(method->name()); + if (append_async_suffix == true) { + if (!(method_name.size() >= 5 && + method_name.compare(method_name.size() - 5, 5, "Async") == 0)) { + method_name += "Async"; + } + } + out->Print( "serviceBinder.AddMethod($methodfield$, serviceImpl == null ? null : " "new $servermethodtype$<$inputtype$, $outputtype$>(" @@ -749,7 +776,7 @@ void GenerateBindServiceWithBinderMethod(Printer* out, GetCSharpServerMethodType(method), "inputtype", GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()), "outputtype", GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()), "methodname", - method->name()); + method_name); } out->Outdent(); @@ -759,7 +786,7 @@ void GenerateBindServiceWithBinderMethod(Printer* out, void GenerateService(Printer* out, const ServiceDescriptor* service, bool generate_client, bool generate_server, - bool internal_access) { + bool internal_access, bool append_async_suffix) { GenerateDocCommentBody(out, service); GenerateObsoleteAttribute(out, service->options().deprecated()); @@ -780,14 +807,14 @@ void GenerateService(Printer* out, const ServiceDescriptor* service, GenerateServiceDescriptorProperty(out, service); if (generate_server) { - GenerateServerClass(out, service); + GenerateServerClass(out, service, append_async_suffix); } if (generate_client) { GenerateClientStub(out, service); } if (generate_server) { - GenerateBindServiceMethod(out, service); - GenerateBindServiceWithBinderMethod(out, service); + GenerateBindServiceMethod(out, service, append_async_suffix); + GenerateBindServiceWithBinderMethod(out, service, append_async_suffix); } out->Outdent(); @@ -797,7 +824,8 @@ void GenerateService(Printer* out, const ServiceDescriptor* service, } // anonymous namespace std::string GetServices(const FileDescriptor* file, bool generate_client, - bool generate_server, bool internal_access) { + bool generate_server, bool internal_access, + bool append_async_suffix) { std::string output; { // Scope the output stream so it closes and finalizes output to the string. @@ -839,7 +867,7 @@ std::string GetServices(const FileDescriptor* file, bool generate_client, } for (int i = 0; i < file->service_count(); i++) { GenerateService(&out, file->service(i), generate_client, generate_server, - internal_access); + internal_access, append_async_suffix); } if (file_namespace != "") { out.Outdent(); diff --git a/deps/grpc/src/compiler/csharp_generator.h b/deps/grpc/src/compiler/csharp_generator.h index 494c479958b..f2a6cf2d5a9 100644 --- a/deps/grpc/src/compiler/csharp_generator.h +++ b/deps/grpc/src/compiler/csharp_generator.h @@ -25,7 +25,7 @@ namespace grpc_csharp_generator { std::string GetServices(const grpc::protobuf::FileDescriptor* file, bool generate_client, bool generate_server, - bool internal_access); + bool internal_access, bool append_async_suffix); } // namespace grpc_csharp_generator diff --git a/deps/grpc/src/compiler/csharp_plugin.cc b/deps/grpc/src/compiler/csharp_plugin.cc index 6281bf08c0a..d58f0d0405a 100644 --- a/deps/grpc/src/compiler/csharp_plugin.cc +++ b/deps/grpc/src/compiler/csharp_plugin.cc @@ -62,6 +62,7 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { bool generate_client = true; bool generate_server = true; bool internal_access = false; + bool append_async_suffix = false; std::string base_namespace = ""; bool base_namespace_present = false; @@ -83,6 +84,8 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { // in the future. base_namespace = options[i].second; base_namespace_present = true; + } else if (options[i].first == "append_async_suffix") { + append_async_suffix = (options[i].second == "true"); } else { *error = "Unknown generator option: " + options[i].first; return false; @@ -90,7 +93,8 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { } std::string code = grpc_csharp_generator::GetServices( - file, generate_client, generate_server, internal_access); + file, generate_client, generate_server, internal_access, + append_async_suffix); if (code.size() == 0) { return true; // don't generate a file if there are no services } diff --git a/deps/grpc/src/core/BUILD b/deps/grpc/src/core/BUILD index 0412d76c954..c6ecae07463 100644 --- a/deps/grpc/src/core/BUILD +++ b/deps/grpc/src/core/BUILD @@ -227,6 +227,7 @@ grpc_cc_library( "absl/utility", ], deps = [ + "channel_args", "context_list_entry", "grpc_check", "resolved_address", @@ -339,6 +340,7 @@ grpc_cc_library( "channel_fwd", "channel_stack_type", "context", + "experiments", "latent_see", "map", "pipe", @@ -368,6 +370,7 @@ grpc_cc_library( srcs = ["call/metadata_info.cc"], hdrs = ["call/metadata_info.h"], external_deps = [ + "absl/functional:function_ref", "absl/strings", ], deps = [ @@ -1113,8 +1116,11 @@ grpc_cc_library( "grpc_check", "poll", "promise_like", + "upb_utils", "//:gpr", "//:grpc_trace", + "//:promise_upb", + "//:promise_upbdefs", ], ) @@ -1727,6 +1733,7 @@ grpc_cc_library( "json_args", "ref_counted", "validation_errors", + "xds_certificate_provider_store_interface", "//:gpr_platform", "//:ref_counted_ptr", ], @@ -1813,6 +1820,7 @@ grpc_cc_library( ":resource_tracker", "//:channelz", "//:config_vars", + "//:exec_ctx", "//:gpr", "//:grpc_trace", "//:orphanable", @@ -2873,6 +2881,7 @@ grpc_cc_library( ], deps = [ "event_engine_tcp_socket_utils", + "experiments", "grpc_check", "iomgr_port", "posix_event_engine_posix_interface", @@ -2940,6 +2949,9 @@ grpc_cc_library( "absl/status:statusor", "absl/strings", ], + visibility = [ + "//bazel:posix_engine", + ], deps = [ "ares_resolver", "event_engine_common", @@ -3760,6 +3772,7 @@ grpc_cc_library( external_deps = [ "absl/functional:any_invocable", ], + visibility = ["//bazel:client_channel_internal_header"], deps = [ "arena", "call_destination", @@ -3810,6 +3823,19 @@ grpc_cc_library( ], ) +grpc_cc_library( + name = "filter_chain", + hdrs = [ + "filter/filter_chain.h", + ], + deps = [ + "filter_args", + "interception_chain", + "ref_counted", + "//:ref_counted_ptr", + ], +) + grpc_cc_library( name = "fused_filters", srcs = [ @@ -3900,6 +3926,7 @@ grpc_cc_library( "blackboard", "channel_fwd", "client_channel_internal_header", + "filter_chain", "grpc_check", "grpc_service_config", "interception_chain", @@ -4287,7 +4314,7 @@ grpc_cc_library( "//:channel_arg_names", "//:config", "//:gpr", - "//:http_connect_handshaker", + "//:http_connect_client_handshaker", "//:iomgr", "//:parse_address", "//:sockaddr_utils", @@ -4313,7 +4340,7 @@ grpc_cc_library( "resolved_address", "xds_endpoint", "//:config", - "//:http_connect_handshaker", + "//:http_connect_client_handshaker", "//:parse_address", "//:sockaddr_utils", ], @@ -4400,24 +4427,6 @@ grpc_cc_library( deps = ["//:gpr_platform"], ) -grpc_cc_library( - name = "tdigest", - srcs = [ - "util/tdigest.cc", - ], - hdrs = [ - "util/tdigest.h", - ], - external_deps = [ - "absl/log", - "absl/status", - "absl/strings", - ], - deps = [ - "grpc_check", - ], -) - grpc_cc_library( name = "certificate_provider_factory", hdrs = [ @@ -4860,6 +4869,7 @@ grpc_cc_library( "arena_promise", "channel_args", "closure", + "down_cast", "error", "grpc_check", "iomgr_fwd", @@ -5145,6 +5155,7 @@ grpc_cc_library( "load_file", "slice", "slice_refcount", + "status_conversion", "status_helper", "time", "token_fetcher_credentials", @@ -5527,6 +5538,8 @@ grpc_cc_library( "channel_args", "channel_fwd", "context", + "experiments", + "filter_args", "grpc_service_config", "json", "json_args", @@ -5943,6 +5956,26 @@ grpc_cc_library( ], ) +grpc_cc_library( + name = "xds_certificate_provider_store_interface", + hdrs = [ + "xds/grpc/certificate_provider_store_interface.h", + ], + external_deps = [ + "absl/strings", + ], + tags = ["nofixdeps"], + deps = [ + "certificate_provider_factory", + "json", + "json_args", + "json_object_loader", + "ref_counted", + "validation_errors", + "//:ref_counted_ptr", + ], +) + grpc_cc_library( name = "xds_certificate_provider_store", srcs = [ @@ -5968,6 +6001,7 @@ grpc_cc_library( "unique_type_name", "useful", "validation_errors", + "xds_certificate_provider_store_interface", "//:config", "//:gpr", "//:grpc_base", @@ -5991,6 +6025,7 @@ grpc_cc_library( tags = ["nofixdeps"], deps = [ "channel_args", + "env", "grpc_check", "grpc_lb_xds_channel_args", "grpc_matchers", @@ -6058,11 +6093,15 @@ grpc_cc_library( "json", "match", "validation_errors", + "xds_server_grpc", ], ) grpc_cc_library( name = "xds_http_filter", + srcs = [ + "xds/grpc/xds_http_filter.cc", + ], hdrs = [ "xds/grpc/xds_http_filter.h", ], @@ -6076,7 +6115,7 @@ grpc_cc_library( "blackboard", "channel_args", "channel_fwd", - "interception_chain", + "filter_chain", "json", "json_writer", "validation_errors", @@ -6123,6 +6162,7 @@ grpc_cc_library( ], tags = ["nofixdeps"], deps = [ + "filter_args", "match", "resolved_address", "time", @@ -6293,6 +6333,46 @@ grpc_cc_library( ], ) +grpc_cc_library( + name = "xds_matcher", + srcs = [ + "xds/grpc/xds_matcher.cc", + ], + hdrs = [ + "xds/grpc/xds_matcher.h", + ], + external_deps = [ + "absl/container:flat_hash_map", + "absl/container:inlined_vector", + "absl/strings", + ], + tags = ["nofixdeps"], + visibility = ["//bazel:xds_client_grpc"], + deps = [ + "down_cast", + "grpc_matchers", + "match", + "trie_lookup", + "unique_type_name", + ], +) + +grpc_cc_library( + name = "xds_matcher_context", + srcs = [ + "xds/grpc/xds_matcher_context.cc", + ], + hdrs = [ + "xds/grpc/xds_matcher_context.h", + ], + tags = ["nofixdeps"], + visibility = ["//bazel:xds_client_grpc"], + deps = [ + "metadata_batch", + "xds_matcher", + ], +) + # TODO(roth): Split this up into individual targets. grpc_cc_library( name = "grpc_xds_client", @@ -6311,9 +6391,7 @@ grpc_cc_library( "xds/grpc/xds_http_stateful_session_filter.cc", "xds/grpc/xds_lb_policy_registry.cc", "xds/grpc/xds_listener_parser.cc", - "xds/grpc/xds_matcher.cc", "xds/grpc/xds_matcher_action.cc", - "xds/grpc/xds_matcher_context.cc", "xds/grpc/xds_matcher_input.cc", "xds/grpc/xds_matcher_parse.cc", "xds/grpc/xds_metadata_parser.cc", @@ -6335,9 +6413,7 @@ grpc_cc_library( "xds/grpc/xds_http_stateful_session_filter.h", "xds/grpc/xds_lb_policy_registry.h", "xds/grpc/xds_listener_parser.h", - "xds/grpc/xds_matcher.h", "xds/grpc/xds_matcher_action.h", - "xds/grpc/xds_matcher_context.h", "xds/grpc/xds_matcher_input.h", "xds/grpc/xds_matcher_parse.h", "xds/grpc/xds_metadata_parser.h", @@ -6384,6 +6460,7 @@ grpc_cc_library( "envoy_admin_upb", "envoy_config_cluster_upb", "envoy_config_cluster_upbdefs", + "envoy_config_common_mutation_rules_upb", "envoy_config_core_upb", "envoy_config_core_upbdefs", "envoy_config_endpoint_upb", @@ -6448,7 +6525,6 @@ grpc_cc_library( "grpc_tls_credentials", "grpc_transport_chttp2_client_connector", "init_internally", - "interception_chain", "iomgr_fwd", "json", "json_args", @@ -6496,6 +6572,8 @@ grpc_cc_library( "xds_health_status", "xds_http_filter", "xds_listener", + "xds_matcher", + "xds_matcher_context", "xds_matcher_upb", "xds_metadata", "xds_route_config", @@ -6569,6 +6647,7 @@ grpc_cc_library( "sync", "time", "useful", + "xds_certificate_provider_store_interface", "xds_server_grpc_interface", "//:channel", "//:channel_arg_names", @@ -6680,11 +6759,18 @@ grpc_cc_library( srcs = [ "credentials/transport/channel_creds_registry_init.cc", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/functional:any_invocable", + "absl/strings", + ], deps = [ "channel_creds_registry", + "envoy_extensions_grpc_service_channel_credentials_tls_upb", + "envoy_extensions_grpc_service_channel_credentials_xds_upb", + "envoy_extensions_transport_sockets_tls_upb", "grpc_fake_credentials", "grpc_google_default_credentials", + "grpc_ssl_credentials", "grpc_tls_credentials", "json", "json_args", @@ -6710,6 +6796,8 @@ grpc_cc_library( deps = [ "call_creds_registry", "down_cast", + "envoy_extensions_grpc_service_call_credentials_access_token_upb", + "grpc_oauth2_credentials", "json", "json_args", "json_object_loader", @@ -8085,6 +8173,7 @@ grpc_cc_library( "ext/transport/chttp2/transport/flow_control.h", ], external_deps = [ + "absl/container:flat_hash_set", "absl/functional:function_ref", "absl/log", "absl/status", @@ -8301,8 +8390,10 @@ grpc_cc_library( "seq", "sleep", "time", + "transport_common", "try_seq", "useful", + "write_cycle", ":chttp2_flow_control", ":slice_buffer", "//:chttp2_frame", @@ -8372,10 +8463,14 @@ grpc_cc_library( ], external_deps = [ "absl/log", + "absl/status:statusor", "absl/strings", ], deps = [ + "event_engine_tcp_socket_utils", "grpc_check", + "grpc_promise_endpoint", + "slice", ":metadata_info", "//:chttp2_frame", ], @@ -8425,6 +8520,7 @@ grpc_cc_library( "ref_counted", "sync", "transport_common", + "write_cycle", ":slice_buffer", "//:chttp2_frame", "//:gpr_platform", @@ -8443,6 +8539,7 @@ grpc_cc_library( "absl/status", ], deps = [ + "arena", "call_spine", "grpc_check", "header_assembler", @@ -8452,6 +8549,7 @@ grpc_cc_library( "metadata", "ref_counted", "stream_data_queue", + "write_cycle", ":chttp2_flow_control", "//:chttp2_frame", "//:gpr_platform", @@ -8474,6 +8572,7 @@ grpc_cc_library( "absl/container:flat_hash_set", "absl/functional:any_invocable", "absl/log", + "absl/meta:type_traits", "absl/status", "absl/status:statusor", "absl/strings", @@ -8525,11 +8624,13 @@ grpc_cc_library( "race", "resource_quota", "sleep", + "status_flag", "stream_data_queue", "sync", "time", "transport_common", "writable_streams", + "write_cycle", ":chttp2_flow_control", ":match_promise", ":poll", @@ -8560,41 +8661,87 @@ grpc_cc_library( "ext/transport/chttp2/transport/http2_server_transport.h", ], external_deps = [ + "absl/base:core_headers", "absl/container:flat_hash_map", + "absl/container:flat_hash_set", + "absl/functional:any_invocable", "absl/log", + "absl/meta:type_traits", "absl/status", "absl/status:statusor", + "absl/strings", + "absl/types:span", + "absl/strings:cord", ], deps = [ "1999", + "activity", "arena", "call_destination", "call_spine", "channel_args", "check_class_size", + "closure", + "connectivity_state", + "context", + "flow_control_manager", + "for_each", + "goaway", "grpc_check", "grpc_promise_endpoint", + "header_assembler", + "http2_security_frame", "http2_settings", "http2_settings_manager", + "http2_settings_promises", "http2_status", + "http2_transport", + "http2_ztrace_collector", + "if", + "incoming_metadata_tracker", + "inter_activity_mutex", + "internal_channel_arg_names", + "iomgr_fwd", + "keepalive", + "latch", + "latent_see", "loop", "map", + "memory_quota", "message", + "message_assembler", "metadata", + "metadata_batch", + "metadata_info", "mpsc", + "ph2_stream", + "ping_promise", + "race", "ref_counted", + "resource_quota", + "sleep", + "stream_data_queue", "sync", + "time", + "transport_common", + "writable_streams", + "write_cycle", + ":chttp2_flow_control", ":match_promise", ":poll", ":slice", ":slice_buffer", ":try_seq", + "//:channelz", "//:chttp2_frame", + "//:debug_location", + "//:exec_ctx", "//:gpr_platform", "//:grpc_base", "//:grpc_trace", "//:hpack_encoder", "//:hpack_parser", + "//:orphanable", "//:promise", "//:ref_counted_ptr", ], @@ -8602,9 +8749,6 @@ grpc_cc_library( grpc_cc_library( name = "http2_security_frame", - srcs = [ - "ext/transport/chttp2/transport/security_frame.cc", - ], hdrs = [ "ext/transport/chttp2/transport/security_frame.h", ], @@ -8612,11 +8756,27 @@ grpc_cc_library( "absl/log", "absl/status", "absl/status:statusor", + "absl/base:core_headers", + "absl/strings:str_format", + "absl/types:span", ], deps = [ + "grpc_check", "grpc_promise_endpoint", + "transport_common", + "write_cycle", + "write_size_policy", + ":activity", + ":context", + ":poll", + ":ref_counted", + ":sync", + "//:chttp2_frame", + "//:gpr_platform", "//:grpc_public_hdrs", + "//:grpc_trace", "//src/core:event_engine_extensions", + "//src/core:event_engine_query_extensions", "//src/core:slice", "//src/core:slice_buffer", "//src/core:transport_framing_endpoint_extension", @@ -8647,15 +8807,47 @@ grpc_cc_library( "ext/transport/chttp2/transport/transport_common.h", ], external_deps = [ + "absl/container:inlined_vector", "absl/random", + "absl/strings", ], visibility = [ "//:__subpackages__", "//bazel:transport_common", ], deps = [ + "grpc_check", + "grpc_promise_endpoint", + "http2_settings", + "slice_buffer", + "write_size_policy", ":shared_bit_gen", ":time", + "//:chttp2_frame", + ], +) + +grpc_cc_library( + name = "write_cycle", + srcs = ["ext/transport/chttp2/transport/write_cycle.cc"], + hdrs = ["ext/transport/chttp2/transport/write_cycle.h"], + external_deps = [ + "absl/container:inlined_vector", + "absl/strings", + "absl/types:span", + "absl/log:check", + ], + deps = [ + "grpc_check", + "grpc_promise_endpoint", + "http2_settings", + "slice", + "slice_buffer", + "transport_common", + "write_size_policy", + "//:chttp2_frame", + "//:gpr", + "//:gpr_platform", ], ) @@ -8668,9 +8860,9 @@ grpc_cc_library( "ext/transport/chttp2/transport/http2_transport.h", ], external_deps = [ - "absl/types:span", "absl/log", "absl/status", + "absl/strings", "absl/status:statusor", ], deps = [ @@ -8696,6 +8888,8 @@ grpc_cc_library( "ph2_stream", "sync", "time", + "write_cycle", + "write_size_policy", ":event_engine_tcp_socket_utils", ":match_promise", ":poll", @@ -9020,6 +9214,7 @@ grpc_cc_library( "chaotic_good_pending_connection", "chaotic_good_tcp_frame_transport", "event_engine_extensions", + "experiments", ], ) @@ -9050,6 +9245,7 @@ grpc_cc_library( hdrs = [ "ext/transport/chaotic_good/tcp_ztrace_collector.h", ], + external_deps = ["absl/strings"], deps = [ "chaotic_good_frame_header", "chaotic_good_tcp_frame_header", @@ -9137,6 +9333,7 @@ grpc_cc_library( external_deps = [ "absl/cleanup", "absl/container:inlined_vector", + "absl/flags:flag", "absl/strings", "absl/time", "absl/log", @@ -9175,6 +9372,7 @@ grpc_cc_library( "transport_framing_endpoint_extension", "try_seq", "//:channelz", + "//:config_vars", "//:event_engine_base_hdrs", "//:gpr", "//:promise", @@ -10618,6 +10816,7 @@ grpc_cc_library( ], deps = [ "avl", + "bitset", "channelz_property_list", "dual_ref_counted", "grpc_check", @@ -10657,6 +10856,7 @@ grpc_cc_library( "absl/log", "absl/functional:any_invocable", ], + visibility = ["//bazel:wait_for_single_owner"], deps = [ "no_destruct", "time", @@ -10675,6 +10875,8 @@ grpc_cc_library( external_deps = [ "absl/log", "absl/status", + "absl/functional:any_invocable", + "absl/types:span", ], deps = [ "1999", @@ -10688,11 +10890,14 @@ grpc_cc_library( "ping_abuse_policy", "ping_callbacks", "ping_rate_policy", + "poll", "race", "shared_bit_gen", "sleep", "time", + "transport_common", "try_seq", + "write_cycle", ":slice_buffer", "//:chttp2_frame", "//:promise", @@ -10745,8 +10950,11 @@ grpc_cc_library( "if", "race", "slice_buffer", + "transport_common", "try_seq", "wait_set", + "write_cycle", + "write_size_policy", "//:chttp2_frame", "//:promise", "//:ref_counted_ptr", @@ -11284,6 +11492,11 @@ grpc_upb_proto_reflection_library( deps = ["@envoy_api//envoy/config/cluster/v3:pkg"], ) +grpc_upb_proto_library( + name = "envoy_config_common_mutation_rules_upb", + deps = ["@envoy_api//envoy/config/common/mutation_rules/v3:pkg"], +) + grpc_upb_proto_library( name = "envoy_config_core_upb", deps = ["@envoy_api//envoy/config/core/v3:pkg"], @@ -11445,6 +11658,21 @@ grpc_upb_proto_reflection_library( ], ) +grpc_upb_proto_library( + name = "envoy_extensions_grpc_service_call_credentials_access_token_upb", + deps = ["@envoy_api//envoy/extensions/grpc_service/call_credentials/access_token/v3:pkg"], +) + +grpc_upb_proto_library( + name = "envoy_extensions_grpc_service_channel_credentials_tls_upb", + deps = ["@envoy_api//envoy/extensions/grpc_service/channel_credentials/tls/v3:pkg"], +) + +grpc_upb_proto_library( + name = "envoy_extensions_grpc_service_channel_credentials_xds_upb", + deps = ["@envoy_api//envoy/extensions/grpc_service/channel_credentials/xds/v3:pkg"], +) + grpc_upb_proto_library( name = "envoy_extensions_transport_sockets_tls_upb", deps = ["@envoy_api//envoy/extensions/transport_sockets/tls/v3:pkg"], diff --git a/deps/grpc/src/core/call/call_filters.h b/deps/grpc/src/core/call/call_filters.h index c05a4bdc1c5..a39536c8682 100644 --- a/deps/grpc/src/core/call/call_filters.h +++ b/deps/grpc/src/core/call/call_filters.h @@ -309,7 +309,7 @@ struct Operator { // Return the result of the poll. // If the promise finishes, also destroy the promise data! Poll> (*promise_init)(void* promise_data, void* call_data, - void* channel_data, T value); + void* channel_data, T&& value); // Poll the promise data for this filter. // If the promise finishes, also destroy the promise data! // Note that if the promise always finishes on the first poll, then supplying @@ -505,18 +505,19 @@ template { static void Add(FilterType* channel_data, size_t call_offset, Layout& to) { - to.Add(0, 0, - Operator{ - channel_data, - call_offset, - [](void*, void* call_data, void*, T value) -> Poll> { - (static_cast(call_data)->*impl)( - *value); - return ResultOr{std::move(value), nullptr}; - }, - nullptr, - nullptr, - }); + to.Add( + 0, 0, + Operator{ + channel_data, + call_offset, + [](void*, void* call_data, void*, T&& value) -> Poll> { + (static_cast(call_data)->*impl)( + *value); + return ResultOr{std::forward(value), nullptr}; + }, + nullptr, + nullptr, + }); } }; @@ -527,18 +528,19 @@ struct AddOpImpl { static void Add(FilterType* channel_data, size_t call_offset, Layout& to) { - to.Add(0, 0, - Operator{ - channel_data, - call_offset, - [](void*, void* call_data, void*, T value) -> Poll> { - (static_cast(call_data)->*impl)( - *value); - return ResultOr{std::move(value), nullptr}; - }, - nullptr, - nullptr, - }); + to.Add( + 0, 0, + Operator{ + channel_data, + call_offset, + [](void*, void* call_data, void*, T&& value) -> Poll> { + (static_cast(call_data)->*impl)( + *value); + return ResultOr{std::forward(value), nullptr}; + }, + nullptr, + nullptr, + }); } }; @@ -555,10 +557,10 @@ struct AddOpImpl< channel_data, call_offset, [](void*, void* call_data, void* channel_data, - T value) -> Poll> { + T&& value) -> Poll> { (static_cast(call_data)->*impl)( *value, static_cast(channel_data)); - return ResultOr{std::move(value), nullptr}; + return ResultOr{std::forward(value), nullptr}; }, nullptr, nullptr, @@ -580,10 +582,10 @@ struct AddOpImpl Poll> { + T&& value) -> Poll> { (static_cast(call_data)->*impl)( *value, static_cast(channel_data)); - return ResultOr{std::move(value), nullptr}; + return ResultOr{std::forward(value), nullptr}; }, nullptr, nullptr, @@ -602,10 +604,11 @@ struct AddOpImpl { channel_data, call_offset, [](void*, void* call_data, void* channel_data, - T value) -> Poll> { + T&& value) -> Poll> { return ResultOr{ (static_cast(call_data)->*impl)( - std::move(value), static_cast(channel_data)), + std::forward(value), + static_cast(channel_data)), nullptr}; }, nullptr, @@ -626,11 +629,11 @@ struct AddOpImpl{ channel_data, call_offset, - [](void*, void* call_data, void*, T value) -> Poll> { + [](void*, void* call_data, void*, T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value); - if (r.ok()) return ResultOr{std::move(value), nullptr}; + if (r.ok()) return ResultOr{std::forward(value), nullptr}; return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -653,11 +656,11 @@ struct AddOpImpl< Operator{ channel_data, call_offset, - [](void*, void* call_data, void*, T value) -> Poll> { + [](void*, void* call_data, void*, T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value); - if (r.ok()) return ResultOr{std::move(value), nullptr}; + if (r.ok()) return ResultOr{std::forward(value), nullptr}; return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -682,11 +685,13 @@ struct AddOpImpl Poll> { + T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value, static_cast(channel_data)); - if (IsStatusOk(r)) return ResultOr{std::move(value), nullptr}; + if (IsStatusOk(r)) { + return ResultOr{std::forward(value), nullptr}; + } return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -711,11 +716,13 @@ struct AddOpImpl Poll> { + T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value, static_cast(channel_data)); - if (IsStatusOk(r)) return ResultOr{std::move(value), nullptr}; + if (IsStatusOk(r)) { + return ResultOr{std::forward(value), nullptr}; + } return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -738,10 +745,11 @@ struct AddOpImpl Poll> { + T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( - std::move(value), static_cast(channel_data)); + std::forward(value), + static_cast(channel_data)); if (IsStatusOk(r)) return ResultOr{std::move(*r), nullptr}; return ResultOr{ nullptr, StatusCast(std::move(r))}; @@ -766,11 +774,13 @@ struct AddOpImpl{ channel_data, call_offset, - [](void*, void* call_data, void*, T value) -> Poll> { + [](void*, void* call_data, void*, T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value); - if (r == nullptr) return ResultOr{std::move(value), nullptr}; + if (r == nullptr) { + return ResultOr{std::forward(value), nullptr}; + } return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -794,11 +804,13 @@ struct AddOpImpl{ channel_data, call_offset, - [](void*, void* call_data, void*, T value) -> Poll> { + [](void*, void* call_data, void*, T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value); - if (r == nullptr) return ResultOr{std::move(value), nullptr}; + if (r == nullptr) { + return ResultOr{std::forward(value), nullptr}; + } return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -823,11 +835,13 @@ struct AddOpImpl Poll> { + T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value, static_cast(channel_data)); - if (r == nullptr) return ResultOr{std::move(value), nullptr}; + if (r == nullptr) { + return ResultOr{std::forward(value), nullptr}; + } return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -852,11 +866,13 @@ struct AddOpImpl Poll> { + T&& value) -> Poll> { auto r = (static_cast(call_data)->*impl)( *value, static_cast(channel_data)); - if (r == nullptr) return ResultOr{std::move(value), nullptr}; + if (r == nullptr) { + return ResultOr{std::forward(value), nullptr}; + } return ResultOr{ nullptr, StatusCast(std::move(r))}; }, @@ -875,8 +891,9 @@ struct AddOpImpl< static void Add(FilterType* channel_data, size_t call_offset, Layout& to) { class Promise { public: - Promise(T value, typename FilterType::Call* call_data, FilterType*) - : value_(std::move(value)), impl_((call_data->*impl)(*value_)) {} + Promise(T&& value, typename FilterType::Call* call_data, FilterType*) + : value_(std::forward(value)), + impl_((call_data->*impl)(*value_)) {} Poll> PollOnce() { auto p = impl_(); @@ -899,9 +916,9 @@ struct AddOpImpl< channel_data, call_offset, [](void* promise_data, void* call_data, void* channel_data, - T value) -> Poll> { + T&& value) -> Poll> { auto* promise = new (promise_data) - Promise(std::move(value), + Promise(std::forward(value), static_cast(call_data), static_cast(channel_data)); return promise->PollOnce(); @@ -927,9 +944,9 @@ struct AddOpImpl< static void Add(FilterType* channel_data, size_t call_offset, Layout& to) { class Promise { public: - Promise(T value, typename FilterType::Call* call_data, + Promise(T&& value, typename FilterType::Call* call_data, FilterType* channel_data) - : value_(std::move(value)), + : value_(std::forward(value)), impl_((call_data->*impl)(*value_, channel_data)) {} Poll> PollOnce() { @@ -953,9 +970,9 @@ struct AddOpImpl< channel_data, call_offset, [](void* promise_data, void* call_data, void* channel_data, - T value) -> Poll> { + T&& value) -> Poll> { auto* promise = new (promise_data) - Promise(std::move(value), + Promise(std::forward(value), static_cast(call_data), static_cast(channel_data)); return promise->PollOnce(); @@ -1004,9 +1021,9 @@ struct AddOpImpl*impl)(std::move(value), channel_data)) {} + : impl_((call_data->*impl)(std::forward(value), channel_data)) {} Poll> PollOnce() { auto p = impl_(); @@ -1027,9 +1044,9 @@ struct AddOpImpl Poll> { + T&& value) -> Poll> { auto* promise = new (promise_data) - Promise(std::move(value), + Promise(std::forward(value), static_cast(call_data), static_cast(channel_data)); return promise->PollOnce(); @@ -1437,7 +1454,7 @@ class OperationExecutor { // Start executing a layout. May allocate space to store the relevant promise. // Returns the result of the first poll. // If the promise finishes, also destroy the promise data. - Poll> Start(const Layout* layout, T input, void* call_data); + Poll> Start(const Layout* layout, T&& input, void* call_data); // Continue executing a layout. Returns the result of the next poll. // If the promise finishes, also destroy the promise data. Poll> Step(void* call_data); @@ -1450,7 +1467,7 @@ class OperationExecutor { // If this op finishes immediately then we iterative move to the next step. // If we reach the end up the ops, we return the overall poll result, // otherwise we return Pending. - Poll> InitStep(T input, void* call_data); + Poll> InitStep(T&& input, void* call_data); // Continue polling on the current step of the layout. // Called on the next poll after InitStep returns pending. // If the promise is still pending, returns this. @@ -1474,31 +1491,32 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline OperationExecutor< template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll> -OperationExecutor::Start(const Layout* layout, T input, void* call_data) { +OperationExecutor::Start(const Layout* layout, T&& input, + void* call_data) { ops_ = layout->ops.data(); end_ops_ = ops_ + layout->ops.size(); if (layout->promise_size == 0) { // No call state ==> instantaneously ready - auto r = InitStep(std::move(input), call_data); + auto r = InitStep(std::forward(input), call_data); GRPC_CHECK(r.ready()); return r; } promise_data_ = gpr_malloc_aligned(layout->promise_size, layout->promise_alignment); - return InitStep(std::move(input), call_data); + return InitStep(std::forward(input), call_data); } template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll> -OperationExecutor::InitStep(T input, void* call_data) { +OperationExecutor::InitStep(T&& input, void* call_data) { GRPC_CHECK(input != nullptr); while (true) { if (ops_ == end_ops_) { - return ResultOr{std::move(input), nullptr}; + return ResultOr{std::forward(input), nullptr}; } auto p = ops_->promise_init(promise_data_, Offset(call_data, ops_->call_offset), - ops_->channel_data, std::move(input)); + ops_->channel_data, std::forward(input)); if (auto* r = p.value_if_ready()) { if (r->ok == nullptr) { ops_ = end_ops_; @@ -1556,7 +1574,8 @@ class ServerTrailingMetadataInterceptor { } }; - explicit ServerTrailingMetadataInterceptor(Fn fn) : fn_(std::move(fn)) {} + explicit ServerTrailingMetadataInterceptor(Fn&& fn) + : fn_(std::forward(fn)) {} private: GPR_NO_UNIQUE_ADDRESS Fn fn_; @@ -1583,7 +1602,8 @@ class ClientInitialMetadataInterceptor { } }; - explicit ClientInitialMetadataInterceptor(Fn fn) : fn_(std::move(fn)) {} + explicit ClientInitialMetadataInterceptor(Fn&& fn) + : fn_(std::forward(fn)) {} private: GPR_NO_UNIQUE_ADDRESS Fn fn_; @@ -1683,9 +1703,9 @@ struct TrySeqTraitsWithSfinae> { } template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll - CheckResultAndRunNext(WrappedType prior, RunNext run_next) { + CheckResultAndRunNext(WrappedType&& prior, RunNext run_next) { if (!prior.ok()) return WrappedType(prior.status()); - return run_next(std::move(prior)); + return run_next(std::forward(prior)); } }; } // namespace promise_detail @@ -1715,7 +1735,8 @@ class CallFilters { friend class CallFilters; friend class StackBuilder; friend class StackTestSpouse; - explicit Stack(filters_detail::StackData data) : data_(std::move(data)) {} + explicit Stack(filters_detail::StackData&& data) + : data_(std::forward(data)) {} const filters_detail::StackData data_; }; @@ -1754,17 +1775,19 @@ class CallFilters { } template - void AddOnClientInitialMetadata(Fn fn) { + void AddOnClientInitialMetadata(Fn&& fn) { auto filter = std::make_unique< - filters_detail::ClientInitialMetadataInterceptor>(std::move(fn)); + filters_detail::ClientInitialMetadataInterceptor>>( + std::forward(fn)); Add(filter.get()); AddOwnedObject(std::move(filter)); } template - void AddOnServerTrailingMetadata(Fn fn) { + void AddOnServerTrailingMetadata(Fn&& fn) { auto filter = std::make_unique< - filters_detail::ServerTrailingMetadataInterceptor>(std::move(fn)); + filters_detail::ServerTrailingMetadataInterceptor>>( + std::forward(fn)); Add(filter.get()); AddOwnedObject(std::move(filter)); } diff --git a/deps/grpc/src/core/call/call_spine.h b/deps/grpc/src/core/call/call_spine.h index 260b107cfb7..9513e71996c 100644 --- a/deps/grpc/src/core/call/call_spine.h +++ b/deps/grpc/src/core/call/call_spine.h @@ -17,6 +17,9 @@ #include +#include +#include + #include "src/core/call/call_arena_allocator.h" #include "src/core/call/call_filters.h" #include "src/core/call/channelz_context.h" @@ -61,15 +64,15 @@ class CallSpine final : public Party, public channelz::DataSource { // Add a callback to be called when server trailing metadata is received and // return true. // If CallOnDone has already been invoked, does nothing and returns false. - GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable fn) { + GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable&& fn) { if (call_filters().WasServerTrailingMetadataPulled()) { return false; } if (on_done_ == nullptr) { - on_done_ = std::move(fn); + on_done_ = std::forward>(fn); return true; } - on_done_ = [first = std::move(fn), + on_done_ = [first = std::forward>(fn), next = std::move(on_done_)](bool cancelled) mutable { first(cancelled); next(cancelled); @@ -136,11 +139,11 @@ class CallSpine final : public Party, public channelz::DataSource { // the rest of the call. // The resulting (returned) promise will resolve to Empty. template - auto CancelIfFails(Promise promise) { + auto CancelIfFails(Promise&& promise) { GRPC_DCHECK(GetContext() == this); - using P = promise_detail::PromiseLike; + using P = promise_detail::PromiseLike>; using ResultType = typename P::Result; - return Map(std::move(promise), + return Map(std::forward(promise), [self = RefAsSubclass()](ResultType r) { self->CancelIfFailed(r); }); @@ -160,48 +163,54 @@ class CallSpine final : public Party, public channelz::DataSource { // Spawn a promise that returns Empty{} and save some boilerplate handling // that detail. template - void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) { - Spawn(name, std::move(promise_factory), [](Empty) {}); + void SpawnInfallible(absl::string_view name, + PromiseFactory&& promise_factory) { + Spawn(name, std::forward(promise_factory), [](Empty) {}); } // Spawn a promise that returns some status-like type; if the status // represents failure automatically cancel the rest of the call. template - void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory, + void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory, DebugLocation whence = {}) { using FactoryType = - promise_detail::OncePromiseFactory; + promise_detail::OncePromiseFactory>; using PromiseType = typename FactoryType::Promise; using ResultType = typename PromiseType::Result; static_assert( std::is_same()))>::value, "SpawnGuarded promise must return a status-like object"); - Spawn(name, std::move(promise_factory), [this, whence](ResultType r) { - if (!IsStatusOk(r)) { - GRPC_TRACE_LOG(promise_primitives, INFO) - << "SpawnGuarded sees failure: " << r - << " (source: " << whence.file() << ":" << whence.line() << ")"; - auto status = StatusCast(std::move(r)); - status->Set(GrpcCallWasCancelled(), true); - PushServerTrailingMetadata(std::move(status)); - } - }); + Spawn(name, std::forward(promise_factory), + [this, whence](ResultType&& r) { + if (!IsStatusOk(r)) { + GRPC_TRACE_LOG(promise_primitives, INFO) + << "SpawnGuarded sees failure: " << r + << " (source: " << whence.file() << ":" << whence.line() + << ")"; + auto status = + StatusCast(std::forward(r)); + status->Set(GrpcCallWasCancelled(), true); + PushServerTrailingMetadata(std::move(status)); + } + }); } // Wrap a promise so that if the call completes that promise is cancelled. template - auto UntilCallCompletes(Promise promise) { - using Result = PromiseResult; - return PrioritizedRace(std::move(promise), Map(WasCancelled(), [](bool) { + auto UntilCallCompletes(Promise&& promise) { + using Result = PromiseResult>; + return PrioritizedRace(std::forward(promise), + Map(WasCancelled(), [](bool) { return FailureStatusCast(Failure{}); })); } template void SpawnGuardedUntilCallCompletes(absl::string_view name, - PromiseFactory promise_factory) { - SpawnGuarded(name, [this, promise_factory]() mutable { + PromiseFactory&& promise_factory) { + SpawnGuarded(name, [this, promise_factory = std::forward( + promise_factory)]() mutable { return UntilCallCompletes(promise_factory()); }); } @@ -353,9 +362,9 @@ class CallInitiator { // the rest of the call. // The resulting (returned) promise will resolve to Empty. template - auto CancelIfFails(Promise promise) { + auto CancelIfFails(Promise&& promise) { GRPC_DCHECK_NE(spine_.get(), nullptr); - return spine_->CancelIfFails(std::move(promise)); + return spine_->CancelIfFails(std::forward(promise)); } auto PullServerInitialMetadata() { @@ -419,40 +428,44 @@ class CallInitiator { spine_->SpawnCancel(); } - GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable fn) { + GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable&& fn) { GRPC_DCHECK_NE(spine_.get(), nullptr); - return spine_->OnDone(std::move(fn)); + return spine_->OnDone(std::forward>(fn)); } template - auto UntilCallCompletes(Promise promise) { + auto UntilCallCompletes(Promise&& promise) { GRPC_DCHECK_NE(spine_.get(), nullptr); - return spine_->UntilCallCompletes(std::move(promise)); + return spine_->UntilCallCompletes(std::forward(promise)); } template - void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory) { + void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory) { GRPC_DCHECK_NE(spine_.get(), nullptr); - spine_->SpawnGuarded(name, std::move(promise_factory)); + spine_->SpawnGuarded(name, std::forward(promise_factory)); } template void SpawnGuardedUntilCallCompletes(absl::string_view name, - PromiseFactory promise_factory) { + PromiseFactory&& promise_factory) { GRPC_DCHECK_NE(spine_.get(), nullptr); - spine_->SpawnGuardedUntilCallCompletes(name, std::move(promise_factory)); + spine_->SpawnGuardedUntilCallCompletes( + name, std::forward(promise_factory)); } template - void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) { + void SpawnInfallible(absl::string_view name, + PromiseFactory&& promise_factory) { GRPC_DCHECK_NE(spine_.get(), nullptr); - spine_->SpawnInfallible(name, std::move(promise_factory)); + spine_->SpawnInfallible(name, + std::forward(promise_factory)); } template - auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) { + auto SpawnWaitable(absl::string_view name, PromiseFactory&& promise_factory) { GRPC_DCHECK_NE(spine_.get(), nullptr); - return spine_->SpawnWaitable(name, std::move(promise_factory)); + return spine_->SpawnWaitable(name, + std::forward(promise_factory)); } bool WasCancelledPushed() const { @@ -501,16 +514,16 @@ class CallHandler { spine_->SpawnPushServerTrailingMetadata(std::move(status)); } - GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable fn) { - return spine_->OnDone(std::move(fn)); + GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable&& fn) { + return spine_->OnDone(std::forward>(fn)); } // Wrap a promise so that if it returns failure it automatically cancels // the rest of the call. // The resulting (returned) promise will resolve to Empty. template - auto CancelIfFails(Promise promise) { - return spine_->CancelIfFails(std::move(promise)); + auto CancelIfFails(Promise&& promise) { + return spine_->CancelIfFails(std::forward(promise)); } auto PushMessage(MessageHandle message) { @@ -530,30 +543,35 @@ class CallHandler { } template - auto UntilCallCompletes(Promise promise) { - return spine_->UntilCallCompletes(std::move(promise)); + auto UntilCallCompletes(Promise&& promise) { + return spine_->UntilCallCompletes(std::forward(promise)); } template - void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory, + void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory, DebugLocation whence = {}) { - spine_->SpawnGuarded(name, std::move(promise_factory), whence); + spine_->SpawnGuarded(name, std::forward(promise_factory), + whence); } template void SpawnGuardedUntilCallCompletes(absl::string_view name, - PromiseFactory promise_factory) { - spine_->SpawnGuardedUntilCallCompletes(name, std::move(promise_factory)); + PromiseFactory&& promise_factory) { + spine_->SpawnGuardedUntilCallCompletes( + name, std::forward(promise_factory)); } template - void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) { - spine_->SpawnInfallible(name, std::move(promise_factory)); + void SpawnInfallible(absl::string_view name, + PromiseFactory&& promise_factory) { + spine_->SpawnInfallible(name, + std::forward(promise_factory)); } template - auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) { - return spine_->SpawnWaitable(name, std::move(promise_factory)); + auto SpawnWaitable(absl::string_view name, PromiseFactory&& promise_factory) { + return spine_->SpawnWaitable(name, + std::forward(promise_factory)); } void AddChildCall(const CallInitiator& initiator) { @@ -577,35 +595,40 @@ class UnstartedCallHandler { spine_->PushServerTrailingMetadata(std::move(status)); } - GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable fn) { - return spine_->OnDone(std::move(fn)); + GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable&& fn) { + return spine_->OnDone(std::forward>(fn)); } template - auto CancelIfFails(Promise promise) { - return spine_->CancelIfFails(std::move(promise)); + auto CancelIfFails(Promise&& promise) { + return spine_->CancelIfFails(std::forward(promise)); } template - void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory, + void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory, DebugLocation whence = {}) { - spine_->SpawnGuarded(name, std::move(promise_factory), whence); + spine_->SpawnGuarded(name, std::forward(promise_factory), + whence); } template void SpawnGuardedUntilCallCompletes(absl::string_view name, - PromiseFactory promise_factory) { - spine_->SpawnGuardedUntilCallCompletes(name, std::move(promise_factory)); + PromiseFactory&& promise_factory) { + spine_->SpawnGuardedUntilCallCompletes( + name, std::forward(promise_factory)); } template - void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) { - spine_->SpawnInfallible(name, std::move(promise_factory)); + void SpawnInfallible(absl::string_view name, + PromiseFactory&& promise_factory) { + spine_->SpawnInfallible(name, + std::forward(promise_factory)); } template - auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) { - return spine_->SpawnWaitable(name, std::move(promise_factory)); + auto SpawnWaitable(absl::string_view name, PromiseFactory&& promise_factory) { + return spine_->SpawnWaitable(name, + std::forward(promise_factory)); } ClientMetadata& UnprocessedClientInitialMetadata() { @@ -636,12 +659,12 @@ CallInitiatorAndHandler MakeCallPair( ClientMetadataHandle client_initial_metadata, RefCountedPtr arena); template -auto MessagesFrom(CallHalf h) { +auto MessagesFrom(CallHalf&& h) { struct Wrapper { - CallHalf h; + std::decay_t h; auto Next() { return h.PullMessage(); } }; - return Wrapper{std::move(h)}; + return Wrapper{std::forward(h)}; } template diff --git a/deps/grpc/src/core/call/call_state.h b/deps/grpc/src/core/call/call_state.h index b7ed09ae903..848549cb76c 100644 --- a/deps/grpc/src/core/call/call_state.h +++ b/deps/grpc/src/core/call/call_state.h @@ -92,6 +92,9 @@ class CallState { // PULL: server -> client // Poll for initial metadata to be available. + // One and only one call to GRPC_OP_RECV_INITIAL_METADATA MUST be made on the + // client. By extension, this function is also expected to be called exactly + // once. Poll PollPullServerInitialMetadataAvailable(); // Finish pulling server initial metadata. void FinishPullServerInitialMetadata(); @@ -209,6 +212,7 @@ class CallState { kReading, // Main call loop: processing one message kProcessingServerToClientMessage, + kDone, kTerminated, }; static const char* ServerToClientPullStateString( @@ -232,6 +236,8 @@ class CallState { return "Reading"; case ServerToClientPullState::kProcessingServerToClientMessage: return "ProcessingServerToClientMessage"; + case ServerToClientPullState::kDone: + return "Done"; case ServerToClientPullState::kTerminated: return "Terminated"; } @@ -354,6 +360,7 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline void CallState::Start() { case ServerToClientPullState::kIdle: case ServerToClientPullState::kReading: case ServerToClientPullState::kProcessingServerToClientMessage: + case ServerToClientPullState::kDone: LOG(FATAL) << "Start called twice; " << GRPC_DUMP_ARGS(server_to_client_pull_state_); case ServerToClientPullState::kTerminated: @@ -747,7 +754,12 @@ CallState::PollPullServerInitialMetadataAvailable() { case ServerToClientPullState::kUnstartedReading: if (server_to_client_push_state_ == ServerToClientPushState::kTrailersOnly) { + GRPC_DCHECK(server_trailing_metadata_state_ == + ServerTrailingMetadataState::kPushedCancel || + server_trailing_metadata_state_ == + ServerTrailingMetadataState::kPulledCancel); server_to_client_pull_state_ = ServerToClientPullState::kTerminated; + server_to_client_pull_waiter_.Wake(); return false; } server_to_client_push_waiter_.pending(); @@ -766,6 +778,8 @@ CallState::PollPullServerInitialMetadataAvailable() { LOG(FATAL) << "PollPullServerInitialMetadataAvailable called twice; " << GRPC_DUMP_ARGS(server_to_client_pull_state_, server_to_client_push_state_); + // If trailing metadata has been pulled, initial metadata cannot be pulled. + case ServerToClientPullState::kDone: case ServerToClientPullState::kTerminated: return false; } @@ -829,6 +843,7 @@ CallState::FinishPullServerInitialMetadata() { LOG(FATAL) << "Out of order FinishPullServerInitialMetadata; " << GRPC_DUMP_ARGS(server_to_client_pull_state_, server_to_client_push_state_); + case ServerToClientPullState::kDone: case ServerToClientPullState::kTerminated: return; } @@ -870,12 +885,28 @@ CallState::PollPullServerToClientMessageAvailable() { switch (server_to_client_pull_state_) { case ServerToClientPullState::kUnstarted: server_to_client_pull_state_ = ServerToClientPullState::kUnstartedReading; + [[fallthrough]]; + case ServerToClientPullState::kUnstartedReading: + if (server_to_client_push_state_ == + ServerToClientPushState::kTrailersOnly) { + // Here we do not transition to kDone because this poll would return a + // null message (based on whether the trailing metadata was cancelled) + // which MUST be interpreted as end of stream. + server_to_client_pull_state_ = ServerToClientPullState::kTerminated; + server_to_client_pull_waiter_.Wake(); + GRPC_DCHECK(server_trailing_metadata_state_ != + ServerTrailingMetadataState::kNotPushed); + return WasCancelledPushed() ? Failure{} : ValueOrFailure{false}; + } + // When TrailersOnly is pushed, server_to_client_push_state_ is modified + // and the server_to_client_push_waiter_ is woken up. If this promise only + // waits on server_to_client_pull_waiter_, it may never be polled. + server_to_client_push_waiter_.pending(); return server_to_client_pull_waiter_.pending(); case ServerToClientPullState::kProcessingServerInitialMetadata: server_to_client_pull_state_ = ServerToClientPullState::kProcessingServerInitialMetadataReading; return server_to_client_pull_waiter_.pending(); - case ServerToClientPullState::kUnstartedReading: case ServerToClientPullState::kProcessingServerInitialMetadataReading: return server_to_client_pull_waiter_.pending(); case ServerToClientPullState::kStarted: @@ -884,8 +915,19 @@ CallState::PollPullServerToClientMessageAvailable() { case ServerToClientPullState::kStartedReading: if (server_to_client_push_state_ == ServerToClientPushState::kTrailersOnly) { - return false; + // Here we do not transition to kDone because this poll would return a + // null message (based on whether the trailing metadata was cancelled) + // which MUST be interpreted as end of stream. + server_to_client_pull_state_ = ServerToClientPullState::kTerminated; + server_to_client_pull_waiter_.Wake(); + GRPC_DCHECK(server_trailing_metadata_state_ != + ServerTrailingMetadataState::kNotPushed); + return WasCancelledPushed() ? Failure{} : ValueOrFailure{false}; } + // When TrailersOnly is pushed, server_to_client_push_state_ is modified + // and the server_to_client_push_waiter_ is woken up. If this promise only + // waits on server_to_client_pull_waiter_, it may never be polled. + server_to_client_push_waiter_.pending(); return server_to_client_pull_waiter_.pending(); case ServerToClientPullState::kIdle: server_to_client_pull_state_ = ServerToClientPullState::kReading; @@ -898,6 +940,12 @@ CallState::PollPullServerToClientMessageAvailable() { "processing a message; " << GRPC_DUMP_ARGS(server_to_client_pull_state_, server_to_client_push_state_); + case ServerToClientPullState::kDone: + // Return EndOfStream to the upper layer. Any further attempts to read + // message will be treated as failures. + server_to_client_pull_state_ = ServerToClientPullState::kTerminated; + server_to_client_pull_waiter_.Wake(); + return false; case ServerToClientPullState::kTerminated: return Failure{}; } @@ -949,6 +997,7 @@ CallState::PollPullServerToClientMessageStarted() { case ServerToClientPullState::kReading: case ServerToClientPullState::kProcessingServerToClientMessage: return Success{}; + case ServerToClientPullState::kDone: case ServerToClientPullState::kTerminated: return Failure{}; } @@ -977,6 +1026,7 @@ CallState::FinishPullServerToClientMessage() { << GRPC_DUMP_ARGS(server_to_client_pull_state_, server_to_client_push_state_); case ServerToClientPullState::kReading: + case ServerToClientPullState::kDone: LOG(FATAL) << "FinishPullServerToClientMessage called before " << "PollPullServerToClientMessageAvailable; " << GRPC_DUMP_ARGS(server_to_client_pull_state_, @@ -1027,6 +1077,7 @@ CallState::PollServerTrailingMetadataAvailable() { case ServerToClientPullState::kProcessingServerToClientMessage: case ServerToClientPullState::kProcessingServerInitialMetadataReading: case ServerToClientPullState::kUnstartedReading: + server_trailing_metadata_waiter_.pending(); return server_to_client_pull_waiter_.pending(); case ServerToClientPullState::kStartedReading: case ServerToClientPullState::kReading: @@ -1045,6 +1096,7 @@ CallState::PollServerTrailingMetadataAvailable() { case ServerToClientPushState:: kPushedServerInitialMetadataAndPushedMessage: case ServerToClientPushState::kPushedMessage: + server_trailing_metadata_waiter_.pending(); server_to_client_push_waiter_.pending(); return server_to_client_pull_waiter_.pending(); } @@ -1057,19 +1109,23 @@ CallState::PollServerTrailingMetadataAvailable() { break; // Ready for processing } return server_trailing_metadata_waiter_.pending(); + case ServerToClientPullState::kDone: case ServerToClientPullState::kTerminated: break; } - server_to_client_pull_state_ = ServerToClientPullState::kTerminated; - server_to_client_pull_waiter_.Wake(); + switch (server_trailing_metadata_state_) { case ServerTrailingMetadataState::kPushed: server_trailing_metadata_state_ = ServerTrailingMetadataState::kPulled; + server_to_client_pull_state_ = ServerToClientPullState::kDone; + server_to_client_pull_waiter_.Wake(); server_trailing_metadata_waiter_.Wake(); break; case ServerTrailingMetadataState::kPushedCancel: server_trailing_metadata_state_ = ServerTrailingMetadataState::kPulledCancel; + server_to_client_pull_state_ = ServerToClientPullState::kTerminated; + server_to_client_pull_waiter_.Wake(); server_trailing_metadata_waiter_.Wake(); break; case ServerTrailingMetadataState::kNotPushed: diff --git a/deps/grpc/src/core/call/client_call.cc b/deps/grpc/src/core/call/client_call.cc index 0dc6c9fdece..ba945624317 100644 --- a/deps/grpc/src/core/call/client_call.cc +++ b/deps/grpc/src/core/call/client_call.cc @@ -211,7 +211,7 @@ void ClientCall::CancelWithError(grpc_error_handle error) { } template -void ClientCall::ScheduleCommittedBatch(Batch batch) { +void ClientCall::ScheduleCommittedBatch(Batch&& batch) { GRPC_LATENT_SEE_SCOPE("ClientCall::ScheduleCommittedBatch"); auto cur_state = call_state_.load(std::memory_order_acquire); while (true) { @@ -219,12 +219,12 @@ void ClientCall::ScheduleCommittedBatch(Batch batch) { case kUnstarted: default: { // UnorderedStart auto pending = std::make_unique(); - pending->start_pending_batch = [this, - batch = std::move(batch)]() mutable { - started_call_initiator_.SpawnInfallible( - "batch", - GRPC_LATENT_SEE_PROMISE("ClientCallBatch", std::move(batch))); - }; + pending->start_pending_batch = + [this, batch = std::forward(batch)]() mutable { + started_call_initiator_.SpawnInfallible( + "batch", GRPC_LATENT_SEE_PROMISE("ClientCallBatch", + std::forward(batch))); + }; while (true) { pending->next = reinterpret_cast(cur_state); if (call_state_.compare_exchange_strong( @@ -244,8 +244,8 @@ void ClientCall::ScheduleCommittedBatch(Batch batch) { } case kStarted: started_call_initiator_.SpawnInfallible( - "batch", - GRPC_LATENT_SEE_PROMISE("ClientCallBatch", std::move(batch))); + "batch", GRPC_LATENT_SEE_PROMISE("ClientCallBatch", + std::forward(batch))); return; case kCancelled: return; diff --git a/deps/grpc/src/core/call/client_call.h b/deps/grpc/src/core/call/client_call.h index 553c99075cd..cf151b71923 100644 --- a/deps/grpc/src/core/call/client_call.h +++ b/deps/grpc/src/core/call/client_call.h @@ -130,7 +130,7 @@ class ClientCall final void CommitBatch(const grpc_op* ops, size_t nops, void* notify_tag, bool is_notify_tag_closure); template - void ScheduleCommittedBatch(Batch batch); + void ScheduleCommittedBatch(Batch&& batch); Party::WakeupHold StartCall(const grpc_op& send_initial_metadata_op); // Attempt to start the call and send handler down the stack; returns true if // state was updated, false otherwise (with cur_state updated to the new diff --git a/deps/grpc/src/core/call/metadata_batch.cc b/deps/grpc/src/core/call/metadata_batch.cc index 35c5df92867..4f0ca14735d 100644 --- a/deps/grpc/src/core/call/metadata_batch.cc +++ b/deps/grpc/src/core/call/metadata_batch.cc @@ -59,6 +59,8 @@ bool IsMetadataKeyAllowedInDebugOutput(absl::string_view key) { if (key == UserAgentMetadata::key()) return true; if (key == W3CTraceParentMetadata::key()) return true; if (key == XEnvoyPeerMetadata::key()) return true; + if (key == XForwardedForMetadata::key()) return true; + if (key == XForwardedHostMetadata::key()) return true; // go/keep-sorted end // go/keep-sorted start if (key == GrpcCallWasCancelled::DebugKey()) return true; diff --git a/deps/grpc/src/core/call/metadata_batch.h b/deps/grpc/src/core/call/metadata_batch.h index 675578ba752..74ef28103f4 100644 --- a/deps/grpc/src/core/call/metadata_batch.h +++ b/deps/grpc/src/core/call/metadata_batch.h @@ -73,6 +73,7 @@ size_t EncodedSizeOfKey(Key, const typename Key::ValueType& value) { // to name this in MetadataMap, but ultimately once the transition is done we // should not need to. struct GrpcTimeoutMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using ValueType = Timestamp; @@ -90,6 +91,7 @@ struct GrpcTimeoutMetadata { // TE metadata trait. struct TeMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; // HTTP2 says that TE can either be empty or "trailers". @@ -120,6 +122,7 @@ inline size_t EncodedSizeOfKey(TeMetadata, TeMetadata::ValueType x) { // content-type metadata trait. struct ContentTypeMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = true; // gRPC says that content-type can be application/grpc[;something] @@ -149,6 +152,7 @@ struct ContentTypeMetadata { // scheme metadata trait. struct HttpSchemeMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; enum ValueType : uint8_t { @@ -179,6 +183,7 @@ size_t EncodedSizeOfKey(HttpSchemeMetadata, HttpSchemeMetadata::ValueType x); // method metadata trait. struct HttpMethodMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; enum ValueType : uint8_t { @@ -228,6 +233,7 @@ struct CompressionAlgorithmBasedMetadata { // grpc-encoding metadata trait. struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = @@ -237,6 +243,7 @@ struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata { // grpc-internal-encoding-request metadata trait. struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -245,6 +252,7 @@ struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata { // grpc-accept-encoding metadata trait. struct GrpcAcceptEncodingMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "grpc-accept-encoding"; } @@ -264,6 +272,7 @@ struct GrpcAcceptEncodingMetadata { // user-agent metadata trait. struct UserAgentMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = true; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = StableValueCompressor; @@ -272,6 +281,7 @@ struct UserAgentMetadata : public SimpleSliceBasedMetadata { // grpc-message metadata trait. struct GrpcMessageMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -280,6 +290,7 @@ struct GrpcMessageMetadata : public SimpleSliceBasedMetadata { // host metadata trait. struct HostMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = true; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -288,6 +299,7 @@ struct HostMetadata : public SimpleSliceBasedMetadata { // endpoint-load-metrics-bin metadata trait. struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -296,6 +308,7 @@ struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata { // grpc-server-stats-bin metadata trait. struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -304,6 +317,7 @@ struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata { // grpc-trace-bin metadata trait. struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor; @@ -312,6 +326,7 @@ struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata { // grpc-tags-bin metadata trait. struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor; @@ -320,14 +335,34 @@ struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata { // XEnvoyPeerMetadata struct XEnvoyPeerMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = true; using CompressionTraits = StableValueCompressor; static absl::string_view key() { return "x-envoy-peer-metadata"; } }; +// x-forwarded-for metadata trait for HTTP connect. +struct XForwardedForMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = true; + static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; + using CompressionTraits = StableValueCompressor; + static absl::string_view key() { return "x-forwarded-for"; } +}; + +// x-forwarded-host metadata trait for HTTP connect. +struct XForwardedHostMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = true; + static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; + using CompressionTraits = StableValueCompressor; + static absl::string_view key() { return "x-forwarded-host"; } +}; + // :authority metadata trait. struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = SmallSetOfValuesCompressor; @@ -336,6 +371,7 @@ struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata { // :path metadata trait. struct HttpPathMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = SmallSetOfValuesCompressor; @@ -415,6 +451,7 @@ struct GrpcStatusMetadata { } } static auto DisplayMemento(MementoType x) { return DisplayValue(x); } + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = SmallIntegralValuesCompressor<16>; @@ -441,6 +478,7 @@ struct GrpcStatusMetadata { // grpc-previous-rpc-attempts metadata trait. struct GrpcPreviousRpcAttemptsMetadata : public SimpleIntBasedMetadata { + static constexpr bool kPublishToApp = true; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -449,6 +487,7 @@ struct GrpcPreviousRpcAttemptsMetadata // grpc-retry-pushback-ms metadata trait. struct GrpcRetryPushbackMsMetadata { + static constexpr bool kPublishToApp = true; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "grpc-retry-pushback-ms"; } @@ -467,6 +506,7 @@ struct GrpcRetryPushbackMsMetadata { // :status metadata trait. // TODO(ctiller): consider moving to uint16_t struct HttpStatusMetadata : public SimpleIntBasedMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = true; using CompressionTraits = HttpStatusCompressor; @@ -478,6 +518,7 @@ struct HttpStatusMetadata : public SimpleIntBasedMetadata { class GrpcLbClientStats; struct GrpcLbClientStatsMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "grpclb_client_stats"; } @@ -503,6 +544,7 @@ inline size_t EncodedSizeOfKey(GrpcLbClientStatsMetadata, // lb-token metadata struct LbTokenMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = true; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -511,6 +553,7 @@ struct LbTokenMetadata : public SimpleSliceBasedMetadata { // lb-cost-bin metadata struct LbCostBinMetadata { + static constexpr bool kPublishToApp = false; static constexpr bool kRepeatable = true; static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "lb-cost-bin"; } @@ -531,6 +574,7 @@ struct LbCostBinMetadata { // traceparent metadata struct W3CTraceParentMetadata : public SimpleSliceBasedMetadata { + static constexpr bool kPublishToApp = true; static constexpr bool kRepeatable = false; static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; @@ -1278,6 +1322,8 @@ MetadataValueAsSlice(typename Which::ValueType value) { // Encodable traits have the following signature: // // Traits for the "grpc-xyz" metadata field: // struct GrpcXyzMetadata { +// // Should this metadata be published to the application? +// static constexpr bool kPublishToApp = ...; // // Can this metadata field be repeated? // static constexpr bool kRepeatable = ...; // // Should this metadata be transferred from server headers to trailers on @@ -1652,7 +1698,8 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap< grpc_core::GrpcServerStatsBinMetadata, grpc_core::GrpcTraceBinMetadata, grpc_core::GrpcTagsBinMetadata, grpc_core::GrpcLbClientStatsMetadata, grpc_core::LbCostBinMetadata, grpc_core::LbTokenMetadata, - grpc_core::XEnvoyPeerMetadata, grpc_core::W3CTraceParentMetadata, + grpc_core::XEnvoyPeerMetadata, grpc_core::XForwardedForMetadata, + grpc_core::XForwardedHostMetadata, grpc_core::W3CTraceParentMetadata, // Non-encodable things grpc_core::GrpcStreamNetworkState, grpc_core::PeerString, grpc_core::GrpcStatusContext, grpc_core::GrpcStatusFromWire, diff --git a/deps/grpc/src/core/call/metadata_info.cc b/deps/grpc/src/core/call/metadata_info.cc index 02be5a4d115..cd18ba08c55 100644 --- a/deps/grpc/src/core/call/metadata_info.cc +++ b/deps/grpc/src/core/call/metadata_info.cc @@ -17,13 +17,40 @@ #include #include +#include #include #include "src/core/lib/slice/slice.h" +#include "absl/functional/function_ref.h" #include "absl/strings/str_cat.h" +#include "absl/strings/string_view.h" namespace grpc_core { +namespace { +class KeyValueEmitEncoder { + public: + explicit KeyValueEmitEncoder( + absl::FunctionRef + f) + : f_(f) {} + + void Encode(const Slice& key, const Slice& value) { + f_(key.as_string_view(), static_cast(value.size())); + } + + template + void Encode(Key, const Value& value) { + f_(Key::key(), static_cast(EncodedSizeOfKey(Key(), value))); + } + + private: + absl::FunctionRef + f_; +}; +} // namespace + class MetadataSizesAnnotation::MetadataSizeEncoder { public: explicit MetadataSizeEncoder(std::string& summary, uint64_t soft_limit, @@ -70,4 +97,12 @@ std::string MetadataSizesAnnotation::ToString() const { return metadata_annotation; } +void MetadataSizesAnnotation::ForEachKeyValue( + absl::FunctionRef f) const { + f("soft_limit", static_cast(soft_limit_)); + f("hard_limit", static_cast(hard_limit_)); + KeyValueEmitEncoder encoder(f); + metadata_buffer_->Encode(&encoder); +} + } // namespace grpc_core \ No newline at end of file diff --git a/deps/grpc/src/core/call/metadata_info.h b/deps/grpc/src/core/call/metadata_info.h index b878b3db6e1..215ca4b7149 100644 --- a/deps/grpc/src/core/call/metadata_info.h +++ b/deps/grpc/src/core/call/metadata_info.h @@ -72,6 +72,8 @@ class MetadataSizesAnnotation hard_limit_(hard_limit) {} std::string ToString() const override; + void ForEachKeyValue( + absl::FunctionRef f) const override; private: class MetadataSizeEncoder; diff --git a/deps/grpc/src/core/call/simple_slice_based_metadata.h b/deps/grpc/src/core/call/simple_slice_based_metadata.h index b595b1fd8ca..05cb59b95ef 100644 --- a/deps/grpc/src/core/call/simple_slice_based_metadata.h +++ b/deps/grpc/src/core/call/simple_slice_based_metadata.h @@ -25,7 +25,8 @@ namespace grpc_core { // Models grpc metadata (as per the rules for MetadataMap) for a metadata // element that consists of a Slice. -// Use by deriving from this class and adding `kRepeatable` and `key()`. +// Use by deriving from this class and adding `kPublishToApp`, `kRepeatable` and +// `key()`. struct SimpleSliceBasedMetadata { using ValueType = Slice; using MementoType = Slice; diff --git a/deps/grpc/src/core/channelz/channelz.cc b/deps/grpc/src/core/channelz/channelz.cc index 986819cb3e0..8c7492aa559 100644 --- a/deps/grpc/src/core/channelz/channelz.cc +++ b/deps/grpc/src/core/channelz/channelz.cc @@ -63,14 +63,17 @@ namespace channelz { void DataSinkImplementation::AddData(absl::string_view name, std::unique_ptr data) { MutexLock lock(&mu_); - additional_info_.emplace(name, std::move(data)); + additional_info_.emplace_back(Element{std::string(name), std::move(data)}); } -Json::Object DataSinkImplementation::Finalize(bool) { +Json::Array DataSinkImplementation::Finalize(bool) { MutexLock lock(&mu_); - Json::Object out; + Json::Array out; for (auto& [name, additional_info] : additional_info_) { - out[name] = Json::FromObject(additional_info->ToJson()); + Json::Object obj; + obj["name"] = Json::FromString(name); + obj["value"] = Json::FromObject(additional_info->ToJson()); + out.push_back(Json::FromObject(std::move(obj))); } return out; } @@ -119,10 +122,10 @@ std::string BaseNode::RenderJsonString() { void BaseNode::PopulateJsonFromDataSources(Json::Object& json) { auto info = AdditionalInfo(); if (info.empty()) return; - json["additionalInfo"] = Json::FromObject(std::move(info)); + json["additionalInfo"] = Json::FromArray(std::move(info)); } -Json::Object BaseNode::AdditionalInfo() { +Json::Array BaseNode::AdditionalInfo() { auto done = std::make_shared(); auto sink_impl = std::make_shared(); { diff --git a/deps/grpc/src/core/channelz/channelz.h b/deps/grpc/src/core/channelz/channelz.h index 3c36d516e16..a8d111e187c 100644 --- a/deps/grpc/src/core/channelz/channelz.h +++ b/deps/grpc/src/core/channelz/channelz.h @@ -253,7 +253,7 @@ class BaseNode : public DualRefCounted { std::shared_ptr event_engine, ZTrace::Callback callback); - Json::Object AdditionalInfo(); + Json::Array AdditionalInfo(); const ChannelTrace& trace() const { return trace_; } template @@ -331,14 +331,17 @@ class DataSinkImplementation { }; void AddData(absl::string_view name, std::unique_ptr data); - Json::Object Finalize(bool timed_out); + Json::Array Finalize(bool timed_out); void Finalize(bool timed_out, grpc_channelz_v2_Entity* entity, upb_Arena* arena); private: Mutex mu_; - std::map> additional_info_ - ABSL_GUARDED_BY(mu_); + struct Element { + std::string name; + std::unique_ptr data; + }; + std::vector additional_info_ ABSL_GUARDED_BY(mu_); }; // Wrapper around absl::AnyInvocable that is used to notify when the diff --git a/deps/grpc/src/core/channelz/property_list.h b/deps/grpc/src/core/channelz/property_list.h index 8ea4936b264..0ce30bde7b9 100644 --- a/deps/grpc/src/core/channelz/property_list.h +++ b/deps/grpc/src/core/channelz/property_list.h @@ -146,6 +146,11 @@ class PropertyList final : public OtherPropertyValue { void FillUpbProto(grpc_channelz_v2_PropertyList* proto, upb_Arena* arena); void FillAny(google_protobuf_Any* any, upb_Arena* arena) override; + const std::vector>& property_list() + const { + return property_list_; + } + private: void SetInternal(absl::string_view key, std::optional value); diff --git a/deps/grpc/src/core/channelz/v2tov1/convert.cc b/deps/grpc/src/core/channelz/v2tov1/convert.cc index 4af35fc3d14..c732542f43f 100644 --- a/deps/grpc/src/core/channelz/v2tov1/convert.cc +++ b/deps/grpc/src/core/channelz/v2tov1/convert.cc @@ -673,7 +673,7 @@ absl::StatusOr ConvertListenSocket( v1_ref, CopyStdStringToUpbString(*name, arena.ptr())); } } - if (auto socket_props = GetPropertyList(entity, "socket", arena.ptr()); + if (auto socket_props = GetPropertyList(entity, "listen_socket", arena.ptr()); socket_props != nullptr) { if (auto local = StringFromPropertyList(socket_props, "local"); local.has_value()) { diff --git a/deps/grpc/src/core/channelz/v2tov1/legacy_api.cc b/deps/grpc/src/core/channelz/v2tov1/legacy_api.cc index a9effcb55f7..e5ccc87eb50 100644 --- a/deps/grpc/src/core/channelz/v2tov1/legacy_api.cc +++ b/deps/grpc/src/core/channelz/v2tov1/legacy_api.cc @@ -37,6 +37,16 @@ namespace grpc_core { namespace channelz { namespace v2tov1 { + +std::string StripAdditionalInfoFromJson(absl::string_view json_str) { + auto json = JsonParse(json_str); + if (!json.ok()) return std::string(json_str); + if (json->type() != Json::Type::kObject) return std::string(json_str); + Json::Object object = json->object(); + object.erase("additionalInfo"); + return JsonDump(Json::FromObject(std::move(object))); +} + namespace { class RegistryEntityFetcher : public EntityFetcher { @@ -69,61 +79,8 @@ class RegistryEntityFetcher : public EntityFetcher { } }; -template -std::string RenderArray(std::tuple values_and_end, - const std::string& key) { - auto& [values, end] = values_and_end; - Json::Object object; - if (!values.empty()) { - // Create list of channels. - Json::Array array; - for (size_t i = 0; i < values.size(); ++i) { - array.emplace_back(values[i]->RenderJson()); - } - object[key] = Json::FromArray(std::move(array)); - } - if (end) { - object["end"] = Json::FromBool(true); - } - return JsonDump(Json::FromObject(std::move(object))); -} - -Json RemoveAdditionalInfo(const Json& json) { - switch (json.type()) { - case Json::Type::kArray: { - Json::Array out; - for (const auto& node : json.array()) { - out.emplace_back(RemoveAdditionalInfo(node)); - } - return Json::FromArray(std::move(out)); - } break; - case Json::Type::kObject: { - Json::Object out; - for (const auto& [key, value] : json.object()) { - if (key == "additionalInfo") continue; - out[key] = RemoveAdditionalInfo(value); - } - return Json::FromObject(std::move(out)); - } break; - default: - return json; - } -} - } // namespace -std::string StripAdditionalInfoFromJson(absl::string_view json_str) { - auto json = JsonParse(json_str); - if (!json.ok()) return std::string(json_str); - return JsonDump(RemoveAdditionalInfo(*json)); -} - -// TODO(ctiller): Temporary hack to remove fields that are objectionable to the -// protobuf parser (because we've not published them in protobuf yet). -char* ApplyHacks(const std::string& json_str) { - return gpr_strdup(StripAdditionalInfoFromJson(json_str).c_str()); -} - } // namespace v2tov1 } // namespace channelz } // namespace grpc_core @@ -133,299 +90,199 @@ using grpc_core::channelz::v2tov1::RegistryEntityFetcher; char* grpc_channelz_get_top_channels(intptr_t start_channel_id) { grpc_core::ExecCtx exec_ctx; - if (grpc_core::IsChannelzUseV2ForV1ApiEnabled()) { - RegistryEntityFetcher fetcher; - auto [channels, end] = ChannelzRegistry::GetTopChannels(start_channel_id); - grpc_core::Json::Array array; - for (const auto& channel_node : channels) { - if (channel_node == nullptr) continue; - auto serialized_v2 = - channel_node->SerializeEntityToString(absl::ZeroDuration()); - auto serialized_v1 = grpc_core::channelz::v2tov1::ConvertChannel( - serialized_v2, fetcher, true); - if (!serialized_v1.ok()) { - LOG(ERROR) << "Failed to convert channel: " << serialized_v1.status(); - continue; - } - auto json = grpc_core::JsonParse(*serialized_v1); - if (!json.ok()) { - LOG(ERROR) << "Failed to parse converted channel json: " - << json.status(); - continue; - } - array.emplace_back(std::move(*json)); + RegistryEntityFetcher fetcher; + auto [channels, end] = ChannelzRegistry::GetTopChannels(start_channel_id); + grpc_core::Json::Array array; + for (const auto& channel_node : channels) { + if (channel_node == nullptr) continue; + auto serialized_v2 = + channel_node->SerializeEntityToString(absl::ZeroDuration()); + auto serialized_v1 = grpc_core::channelz::v2tov1::ConvertChannel( + serialized_v2, fetcher, true); + if (!serialized_v1.ok()) { + LOG(ERROR) << "Failed to convert channel: " << serialized_v1.status(); + continue; } - grpc_core::Json json = grpc_core::Json::FromObject({ - {"channel", grpc_core::Json::FromArray(std::move(array))}, - {"end", grpc_core::Json::FromBool(end)}, - }); - std::string json_str = grpc_core::JsonDump(json); - return gpr_strdup(json_str.c_str()); - } else { - return grpc_core::channelz::v2tov1::ApplyHacks( - grpc_core::channelz::v2tov1::RenderArray( - grpc_core::channelz::ChannelzRegistry::GetTopChannels( - start_channel_id), - "channel")); - } -} - -char* grpc_channelz_get_servers(intptr_t start_server_id) { - grpc_core::ExecCtx exec_ctx; - if (grpc_core::IsChannelzUseV2ForV1ApiEnabled()) { - RegistryEntityFetcher fetcher; - auto [servers, end] = ChannelzRegistry::GetServers(start_server_id); - grpc_core::Json::Array array; - for (const auto& server_node : servers) { - if (server_node == nullptr) continue; - auto serialized_v2 = - server_node->SerializeEntityToString(absl::ZeroDuration()); - auto serialized_v1 = grpc_core::channelz::v2tov1::ConvertServer( - serialized_v2, fetcher, true); - if (!serialized_v1.ok()) { - LOG(ERROR) << "Failed to convert server: " << serialized_v1.status(); - continue; - } - auto json = grpc_core::JsonParse(*serialized_v1); - if (!json.ok()) { - LOG(ERROR) << "Failed to parse converted server json: " - << json.status(); - continue; - } - array.emplace_back(std::move(*json)); + auto json = grpc_core::JsonParse(*serialized_v1); + if (!json.ok()) { + LOG(ERROR) << "Failed to parse converted channel json: " << json.status(); + continue; } - grpc_core::Json json = grpc_core::Json::FromObject({ - {"server", grpc_core::Json::FromArray(std::move(array))}, - {"end", grpc_core::Json::FromBool(end)}, - }); - std::string json_str = grpc_core::JsonDump(json); - return gpr_strdup(json_str.c_str()); - } else { - return grpc_core::channelz::v2tov1::ApplyHacks( - grpc_core::channelz::v2tov1::RenderArray( - grpc_core::channelz::ChannelzRegistry::GetServers(start_server_id), - "server")); + array.emplace_back(std::move(*json)); } + grpc_core::Json json = grpc_core::Json::FromObject({ + {"channel", grpc_core::Json::FromArray(std::move(array))}, + {"end", grpc_core::Json::FromBool(end)}, + }); + std::string json_str = grpc_core::JsonDump(json); + return gpr_strdup(json_str.c_str()); } -char* grpc_channelz_get_server(intptr_t server_id) { +char* grpc_channelz_get_servers(intptr_t start_server_id) { grpc_core::ExecCtx exec_ctx; - if (grpc_core::IsChannelzUseV2ForV1ApiEnabled()) { - auto server_node = ChannelzRegistry::GetServer(server_id); - if (server_node == nullptr) return nullptr; - RegistryEntityFetcher fetcher; + RegistryEntityFetcher fetcher; + auto [servers, end] = ChannelzRegistry::GetServers(start_server_id); + grpc_core::Json::Array array; + for (const auto& server_node : servers) { + if (server_node == nullptr) continue; auto serialized_v2 = server_node->SerializeEntityToString(absl::ZeroDuration()); auto serialized_v1 = grpc_core::channelz::v2tov1::ConvertServer( serialized_v2, fetcher, true); if (!serialized_v1.ok()) { LOG(ERROR) << "Failed to convert server: " << serialized_v1.status(); - return nullptr; + continue; } auto json = grpc_core::JsonParse(*serialized_v1); if (!json.ok()) { LOG(ERROR) << "Failed to parse converted server json: " << json.status(); - return nullptr; - } - grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ - {"server", std::move(*json)}, - }); - std::string json_str = grpc_core::JsonDump(wrapped_json); - return gpr_strdup(json_str.c_str()); - } else { - grpc_core::WeakRefCountedPtr server_node = - grpc_core::channelz::ChannelzRegistry::Get(server_id); - if (server_node == nullptr || - server_node->type() != - grpc_core::channelz::BaseNode::EntityType::kServer) { - return nullptr; + continue; } - grpc_core::Json json = grpc_core::Json::FromObject({ - {"server", server_node->RenderJson()}, - }); - return grpc_core::channelz::v2tov1::ApplyHacks( - grpc_core::JsonDump(json).c_str()); + array.emplace_back(std::move(*json)); } + grpc_core::Json json = grpc_core::Json::FromObject({ + {"server", grpc_core::Json::FromArray(std::move(array))}, + {"end", grpc_core::Json::FromBool(end)}, + }); + std::string json_str = grpc_core::JsonDump(json); + return gpr_strdup(json_str.c_str()); +} + +char* grpc_channelz_get_server(intptr_t server_id) { + grpc_core::ExecCtx exec_ctx; + auto server_node = ChannelzRegistry::GetServer(server_id); + if (server_node == nullptr) return nullptr; + RegistryEntityFetcher fetcher; + auto serialized_v2 = + server_node->SerializeEntityToString(absl::ZeroDuration()); + auto serialized_v1 = + grpc_core::channelz::v2tov1::ConvertServer(serialized_v2, fetcher, true); + if (!serialized_v1.ok()) { + LOG(ERROR) << "Failed to convert server: " << serialized_v1.status(); + return nullptr; + } + auto json = grpc_core::JsonParse(*serialized_v1); + if (!json.ok()) { + LOG(ERROR) << "Failed to parse converted server json: " << json.status(); + return nullptr; + } + grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ + {"server", std::move(*json)}, + }); + std::string json_str = grpc_core::JsonDump(wrapped_json); + return gpr_strdup(json_str.c_str()); } char* grpc_channelz_get_server_sockets(intptr_t server_id, intptr_t start_socket_id, intptr_t max_results) { grpc_core::ExecCtx exec_ctx; - if (grpc_core::IsChannelzUseV2ForV1ApiEnabled()) { - auto server_node = ChannelzRegistry::GetServer(server_id); - if (server_node == nullptr) return nullptr; - size_t max = - max_results == 0 ? std::numeric_limits::max() : max_results; - auto [sockets, end] = ChannelzRegistry::GetChildrenOfType( - start_socket_id, server_node.get(), - grpc_core::channelz::BaseNode::EntityType::kSocket, max); - grpc_core::Json::Array array; - for (const auto& socket_node : sockets) { - if (socket_node == nullptr) continue; - array.emplace_back(grpc_core::Json::FromObject({ - {"socketId", - grpc_core::Json::FromString(absl::StrCat(socket_node->uuid()))}, - {"name", grpc_core::Json::FromString(socket_node->name())}, - })); - } - grpc_core::Json json = grpc_core::Json::FromObject({ - {"socketRef", grpc_core::Json::FromArray(std::move(array))}, - {"end", grpc_core::Json::FromBool(end)}, - }); - std::string json_str = grpc_core::JsonDump(json); - return gpr_strdup(json_str.c_str()); - } else { - // Validate inputs before handing them of to the renderer. - grpc_core::WeakRefCountedPtr base_node = - grpc_core::channelz::ChannelzRegistry::Get(server_id); - if (base_node == nullptr || - base_node->type() != - grpc_core::channelz::BaseNode::EntityType::kServer || - start_socket_id < 0 || max_results < 0) { - return nullptr; - } - // This cast is ok since we have just checked to make sure base_node is - // actually a server node. - grpc_core::channelz::ServerNode* server_node = - static_cast(base_node.get()); - return grpc_core::channelz::v2tov1::ApplyHacks( - server_node->RenderServerSockets(start_socket_id, max_results).c_str()); + auto server_node = ChannelzRegistry::GetServer(server_id); + if (server_node == nullptr) return nullptr; + size_t max = + max_results == 0 ? std::numeric_limits::max() : max_results; + auto [sockets, end] = ChannelzRegistry::GetChildrenOfType( + start_socket_id, server_node.get(), + grpc_core::channelz::BaseNode::EntityType::kSocket, max); + grpc_core::Json::Array array; + for (const auto& socket_node : sockets) { + if (socket_node == nullptr) continue; + array.emplace_back(grpc_core::Json::FromObject({ + {"socketId", + grpc_core::Json::FromString(absl::StrCat(socket_node->uuid()))}, + {"name", grpc_core::Json::FromString(socket_node->name())}, + })); } + grpc_core::Json json = grpc_core::Json::FromObject({ + {"socketRef", grpc_core::Json::FromArray(std::move(array))}, + {"end", grpc_core::Json::FromBool(end)}, + }); + std::string json_str = grpc_core::JsonDump(json); + return gpr_strdup(json_str.c_str()); } char* grpc_channelz_get_channel(intptr_t channel_id) { grpc_core::ExecCtx exec_ctx; - if (grpc_core::IsChannelzUseV2ForV1ApiEnabled()) { - auto channel_node = ChannelzRegistry::GetChannel(channel_id); - if (channel_node == nullptr) return nullptr; - RegistryEntityFetcher fetcher; - auto serialized_v2 = - channel_node->SerializeEntityToString(absl::ZeroDuration()); - auto serialized_v1 = grpc_core::channelz::v2tov1::ConvertChannel( - serialized_v2, fetcher, true); - if (!serialized_v1.ok()) { - LOG(ERROR) << "Failed to convert channel: " << serialized_v1.status(); - return nullptr; - } - auto json = grpc_core::JsonParse(*serialized_v1); - if (!json.ok()) { - LOG(ERROR) << "Failed to parse converted channel json: " << json.status(); - return nullptr; - } - grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ - {"channel", std::move(*json)}, - }); - std::string json_str = grpc_core::JsonDump(wrapped_json); - return gpr_strdup(json_str.c_str()); - } else { - grpc_core::WeakRefCountedPtr channel_node = - grpc_core::channelz::ChannelzRegistry::Get(channel_id); - if (channel_node == nullptr || - (channel_node->type() != - grpc_core::channelz::BaseNode::EntityType::kTopLevelChannel && - channel_node->type() != - grpc_core::channelz::BaseNode::EntityType::kInternalChannel)) { - return nullptr; - } - grpc_core::Json json = grpc_core::Json::FromObject({ - {"channel", channel_node->RenderJson()}, - }); - return grpc_core::channelz::v2tov1::ApplyHacks( - grpc_core::JsonDump(json).c_str()); + auto channel_node = ChannelzRegistry::GetChannel(channel_id); + if (channel_node == nullptr) return nullptr; + RegistryEntityFetcher fetcher; + auto serialized_v2 = + channel_node->SerializeEntityToString(absl::ZeroDuration()); + auto serialized_v1 = + grpc_core::channelz::v2tov1::ConvertChannel(serialized_v2, fetcher, true); + if (!serialized_v1.ok()) { + LOG(ERROR) << "Failed to convert channel: " << serialized_v1.status(); + return nullptr; } + auto json = grpc_core::JsonParse(*serialized_v1); + if (!json.ok()) { + LOG(ERROR) << "Failed to parse converted channel json: " << json.status(); + return nullptr; + } + grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ + {"channel", std::move(*json)}, + }); + std::string json_str = grpc_core::JsonDump(wrapped_json); + return gpr_strdup(json_str.c_str()); } char* grpc_channelz_get_subchannel(intptr_t subchannel_id) { grpc_core::ExecCtx exec_ctx; - if (grpc_core::IsChannelzUseV2ForV1ApiEnabled()) { - auto subchannel_node = ChannelzRegistry::GetSubchannel(subchannel_id); - if (subchannel_node == nullptr) return nullptr; - RegistryEntityFetcher fetcher; - auto serialized_v2 = - subchannel_node->SerializeEntityToString(absl::ZeroDuration()); - auto serialized_v1 = grpc_core::channelz::v2tov1::ConvertSubchannel( - serialized_v2, fetcher, true); - if (!serialized_v1.ok()) { - LOG(ERROR) << "Failed to convert subchannel: " << serialized_v1.status(); - return nullptr; - } - auto json = grpc_core::JsonParse(*serialized_v1); - if (!json.ok()) { - LOG(ERROR) << "Failed to parse converted subchannel json: " - << json.status(); - return nullptr; - } - grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ - {"subchannel", std::move(*json)}, - }); - std::string json_str = grpc_core::JsonDump(wrapped_json); - return gpr_strdup(json_str.c_str()); - } else { - grpc_core::WeakRefCountedPtr - subchannel_node = - grpc_core::channelz::ChannelzRegistry::Get(subchannel_id); - if (subchannel_node == nullptr || - subchannel_node->type() != - grpc_core::channelz::BaseNode::EntityType::kSubchannel) { - return nullptr; - } - grpc_core::Json json = grpc_core::Json::FromObject({ - {"subchannel", subchannel_node->RenderJson()}, - }); - return grpc_core::channelz::v2tov1::ApplyHacks( - grpc_core::JsonDump(json).c_str()); + auto subchannel_node = ChannelzRegistry::GetSubchannel(subchannel_id); + if (subchannel_node == nullptr) return nullptr; + RegistryEntityFetcher fetcher; + auto serialized_v2 = + subchannel_node->SerializeEntityToString(absl::ZeroDuration()); + auto serialized_v1 = grpc_core::channelz::v2tov1::ConvertSubchannel( + serialized_v2, fetcher, true); + if (!serialized_v1.ok()) { + LOG(ERROR) << "Failed to convert subchannel: " << serialized_v1.status(); + return nullptr; + } + auto json = grpc_core::JsonParse(*serialized_v1); + if (!json.ok()) { + LOG(ERROR) << "Failed to parse converted subchannel json: " + << json.status(); + return nullptr; } + grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ + {"subchannel", std::move(*json)}, + }); + std::string json_str = grpc_core::JsonDump(wrapped_json); + return gpr_strdup(json_str.c_str()); } char* grpc_channelz_get_socket(intptr_t socket_id) { grpc_core::ExecCtx exec_ctx; - if (grpc_core::IsChannelzUseV2ForV1ApiEnabled()) { - auto node = ChannelzRegistry::GetNode(socket_id); - if (node == nullptr) return nullptr; - RegistryEntityFetcher fetcher; - auto serialized_v2 = node->SerializeEntityToString(absl::ZeroDuration()); - absl::StatusOr serialized_v1; - if (node->type() == grpc_core::channelz::BaseNode::EntityType::kSocket) { - serialized_v1 = grpc_core::channelz::v2tov1::ConvertSocket(serialized_v2, - fetcher, true); - } else if (node->type() == - grpc_core::channelz::BaseNode::EntityType::kListenSocket) { - serialized_v1 = grpc_core::channelz::v2tov1::ConvertListenSocket( - serialized_v2, fetcher, true); - } else { - return nullptr; - } - if (!serialized_v1.ok()) { - LOG(ERROR) << "Failed to convert socket: " << serialized_v1.status(); - return nullptr; - } - // The old API returned a JSON object with a "socket" key. - // The new converter returns the socket JSON directly. We need to wrap it. - auto json = grpc_core::JsonParse(*serialized_v1); - if (!json.ok()) { - LOG(ERROR) << "Failed to parse converted socket json: " << json.status(); - return nullptr; - } - grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ - {"socket", std::move(*json)}, - }); - std::string json_str = grpc_core::JsonDump(wrapped_json); - return gpr_strdup(json_str.c_str()); + auto node = ChannelzRegistry::GetNode(socket_id); + if (node == nullptr) return nullptr; + RegistryEntityFetcher fetcher; + auto serialized_v2 = node->SerializeEntityToString(absl::ZeroDuration()); + absl::StatusOr serialized_v1; + if (node->type() == grpc_core::channelz::BaseNode::EntityType::kSocket) { + serialized_v1 = grpc_core::channelz::v2tov1::ConvertSocket(serialized_v2, + fetcher, true); + } else if (node->type() == + grpc_core::channelz::BaseNode::EntityType::kListenSocket) { + serialized_v1 = grpc_core::channelz::v2tov1::ConvertListenSocket( + serialized_v2, fetcher, true); } else { - grpc_core::WeakRefCountedPtr socket_node = - grpc_core::channelz::ChannelzRegistry::Get(socket_id); - if (socket_node == nullptr || - (socket_node->type() != - grpc_core::channelz::BaseNode::EntityType::kSocket && - socket_node->type() != - grpc_core::channelz::BaseNode::EntityType::kListenSocket)) { - return nullptr; - } - grpc_core::Json json = grpc_core::Json::FromObject({ - {"socket", socket_node->RenderJson()}, - }); - return grpc_core::channelz::v2tov1::ApplyHacks( - grpc_core::JsonDump(json).c_str()); + return nullptr; + } + if (!serialized_v1.ok()) { + LOG(ERROR) << "Failed to convert socket: " << serialized_v1.status(); + return nullptr; + } + // The old API returned a JSON object with a "socket" key. + // The new converter returns the socket JSON directly. We need to wrap it. + auto json = grpc_core::JsonParse(*serialized_v1); + if (!json.ok()) { + LOG(ERROR) << "Failed to parse converted socket json: " << json.status(); + return nullptr; } + grpc_core::Json wrapped_json = grpc_core::Json::FromObject({ + {"socket", std::move(*json)}, + }); + std::string json_str = grpc_core::JsonDump(wrapped_json); + return gpr_strdup(json_str.c_str()); } diff --git a/deps/grpc/src/core/channelz/zviz/data.cc b/deps/grpc/src/core/channelz/zviz/data.cc index fa356b507b7..ce0eb1fcd3a 100644 --- a/deps/grpc/src/core/channelz/zviz/data.cc +++ b/deps/grpc/src/core/channelz/zviz/data.cc @@ -164,6 +164,21 @@ void PromiseFormatterImpl(const grpc::channelz::v2::Promise& promise, std::string(indent, ' '), ")"); break; } + case grpc::channelz::v2::Promise::kForEachPromise: { + const auto& for_each = promise.for_each_promise(); + absl::StrAppend(&out, "ForEach(\n", std::string(indent + 2, ' '), + FormatFactory(for_each.reader_factory()), ", ", + FormatFactory(for_each.action_factory())); + if (for_each.has_reader_promise()) { + absl::StrAppend(&out, ",\n", std::string(indent + 2, ' ')); + PromiseFormatterImpl(for_each.reader_promise(), out, indent + 2); + } else if (for_each.has_action_promise()) { + absl::StrAppend(&out, ",\n", std::string(indent + 2, ' ')); + PromiseFormatterImpl(for_each.action_promise(), out, indent + 2); + } + absl::StrAppend(&out, "\n", std::string(indent, ' '), ")"); + break; + } case grpc::channelz::v2::Promise::kIfPromise: { const auto& if_p = promise.if_promise(); absl::StrAppend(&out, "If(", if_p.condition() ? "true" : "false", ", ", @@ -262,7 +277,7 @@ bool PromiseFormatter(Environment&, google::protobuf::Any value, layout::Element& element) { grpc::channelz::v2::Promise promise; if (!value.UnpackTo(&promise)) return false; - element.AppendText(layout::Intent::kData, grpc_zviz::Format(promise)); + element.AppendText(layout::Intent::kCode, grpc_zviz::Format(promise)); return true; } diff --git a/deps/grpc/src/core/channelz/zviz/layout.h b/deps/grpc/src/core/channelz/zviz/layout.h index 9fe76d1f612..bb82466277b 100644 --- a/deps/grpc/src/core/channelz/zviz/layout.h +++ b/deps/grpc/src/core/channelz/zviz/layout.h @@ -37,11 +37,15 @@ enum class Intent { kKey, kValue, kWarning, + kCode, }; template void AbslStringify(Sink& sink, Intent intent) { switch (intent) { + case Intent::kCode: + sink.Append("code"); + break; case Intent::kBanner: sink.Append("banner"); break; diff --git a/deps/grpc/src/core/channelz/zviz/style.cc b/deps/grpc/src/core/channelz/zviz/style.cc index 88066594f44..f2202c3d18e 100644 --- a/deps/grpc/src/core/channelz/zviz/style.cc +++ b/deps/grpc/src/core/channelz/zviz/style.cc @@ -50,6 +50,8 @@ body { margin-top: 0; } .zviz-data { + white-space: pre-wrap; + font-family: monospace; } .zviz-key { font-weight: bold; diff --git a/deps/grpc/src/core/client_channel/buffered_call.cc b/deps/grpc/src/core/client_channel/buffered_call.cc index 82b779a4f0c..6eb4f37ea8a 100644 --- a/deps/grpc/src/core/client_channel/buffered_call.cc +++ b/deps/grpc/src/core/client_channel/buffered_call.cc @@ -111,7 +111,8 @@ void BufferedCall::ResumePendingBatchInCallCombiner( // This is called via the call combiner, so access to calld is synchronized. void BufferedCall::Resume( - absl::AnyInvocable start_batch) { + absl::AnyInvocable start_batch, + YieldCallCombinerPredicate yield_call_combiner_predicate) { if (GRPC_TRACE_FLAG_ENABLED_OBJ(*tracer_)) { size_t num_batches = 0; for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) { @@ -133,8 +134,11 @@ void BufferedCall::Resume( batch = nullptr; } } - // Note: This will release the call combiner. - closures.RunClosures(call_combiner_); + if (yield_call_combiner_predicate(closures)) { + closures.RunClosures(call_combiner_); + } else { + closures.RunClosuresWithoutYielding(call_combiner_); + } } } // namespace grpc_core diff --git a/deps/grpc/src/core/client_channel/buffered_call.h b/deps/grpc/src/core/client_channel/buffered_call.h index 395348d0c02..08379ce4a41 100644 --- a/deps/grpc/src/core/client_channel/buffered_call.h +++ b/deps/grpc/src/core/client_channel/buffered_call.h @@ -45,11 +45,6 @@ class BufferedCall { // Must be called from within the call combiner. void EnqueueBatch(grpc_transport_stream_op_batch* batch); - // Resumes all queued batches by passing them to start_batch(). - // Must be called from within the call combiner. - void Resume( - absl::AnyInvocable start_batch); - // A predicate type and some useful implementations for Fail(). typedef bool (*YieldCallCombinerPredicate)( const CallCombinerClosureList& closures); @@ -63,6 +58,17 @@ class BufferedCall { const CallCombinerClosureList& closures) { return closures.size() > 0; } + + // Resumes all queued batches by passing them to start_batch(). + // Must be called from within the call combiner. + void Resume( + absl::AnyInvocable start_batch) { + Resume(std::move(start_batch), YieldCallCombiner); + } + void Resume( + absl::AnyInvocable start_batch, + YieldCallCombinerPredicate yield_call_combiner_predicate); + // Fails all queued batches. // Must be called from within the call combiner. // If yield_call_combiner_predicate returns true, assumes responsibility for diff --git a/deps/grpc/src/core/client_channel/client_channel.cc b/deps/grpc/src/core/client_channel/client_channel.cc index 67336025ed9..24e34cda878 100644 --- a/deps/grpc/src/core/client_channel/client_channel.cc +++ b/deps/grpc/src/core/client_channel/client_channel.cc @@ -275,7 +275,7 @@ class ClientChannel::SubchannelWrapper::WatcherWrapper << subchannel_wrapper_->subchannel_.get() << " watcher=" << watcher_.get() << " state=" << ConnectivityStateName(state) << " status=" << status; - if (!IsTransportStateWatcherEnabled()) { + if (!IsSubchannelConnectionScalingEnabled()) { auto keepalive_throttling = status.GetPayload(kKeepaliveThrottlingKey); if (keepalive_throttling.has_value()) { int new_keepalive_time_ms = -1; @@ -679,7 +679,7 @@ ClientChannel::ClientChannel( client_channel_factory_(client_channel_factory), channelz_node_(channel_args_.GetObject()), idle_timeout_(GetClientIdleTimeout(channel_args_)), - resolver_data_for_calls_(ResolverDataForCalls{}), + resolver_data_for_calls_(nullptr), picker_(nullptr), call_destination_( call_destination_factory->CreateCallDestination(picker_)), @@ -906,6 +906,72 @@ grpc_call* ClientChannel::CreateCall( compression_options(), std::move(arena), Ref()); } +namespace { + +class FilterChainImpl final : public FilterChain { + public: + explicit FilterChainImpl(RefCountedPtr destination) + : destination_(std::move(destination)) {} + + UnstartedCallDestination* destination() const { return destination_.get(); } + + private: + RefCountedPtr destination_; +}; + +class FilterChainBuilderImpl final : public FilterChainBuilder { + public: + FilterChainBuilderImpl( + bool enable_retries, const ChannelArgs& channel_args, + Blackboard* blackboard, + std::function on_server_trailing_metadata, + RefCountedPtr destination) + : enable_retries_(enable_retries), + channel_args_(channel_args), + blackboard_(blackboard), + on_server_trailing_metadata_(std::move(on_server_trailing_metadata)), + destination_(std::move(destination)) {} + + absl::StatusOr> Build() override { + if (builder_ == nullptr) InitBuilder(); + if (enable_retries_) builder_->Add(nullptr); + auto top_of_stack_destination = builder_->Build(destination_); + if (!top_of_stack_destination.ok()) { + return MaybeRewriteIllegalStatusCode(top_of_stack_destination.status(), + "channel construction"); + } + builder_.reset(); + return MakeRefCounted( + std::move(*top_of_stack_destination)); + } + + private: + void AddFilter(const FilterHandle& filter_handle, + RefCountedPtr config) override { + if (builder_ == nullptr) InitBuilder(); + filter_handle.AddToBuilder(builder_.get(), std::move(config)); + } + + void InitBuilder() { + builder_ = + std::make_unique(channel_args_, blackboard_); + if (on_server_trailing_metadata_ != nullptr) { + builder_->AddOnServerTrailingMetadata(on_server_trailing_metadata_); + } + CoreConfiguration::Get().channel_init().AddToInterceptionChainBuilder( + GRPC_CLIENT_CHANNEL, *builder_); + } + + const bool enable_retries_; + const ChannelArgs channel_args_; + const Blackboard* blackboard_; + const std::function on_server_trailing_metadata_; + const RefCountedPtr destination_; + std::unique_ptr builder_; +}; + +} // namespace + void ClientChannel::StartCall(UnstartedCallHandler unstarted_handler) { // Increment call count. if (idle_timeout_ != Duration::Zero()) idle_state_.IncreaseCallCount(); @@ -924,31 +990,32 @@ void ClientChannel::StartCall(UnstartedCallHandler unstarted_handler) { // Wait for the resolver result. CheckDelayed(self->resolver_data_for_calls_.NextWhen( [wait_for_ready]( - const absl::StatusOr result) { + const absl::StatusOr> + config_selector) { bool got_result = false; // If the resolver reports an error but the call is // wait_for_ready, keep waiting for the next result // instead of failing the call. - if (!result.ok()) { + if (!config_selector.ok()) { got_result = !wait_for_ready; } else { // Not an error. Make sure we actually have a result. - got_result = result->config_selector != nullptr; + got_result = *config_selector != nullptr; } return got_result; })), // Handle resolver result. [self, unstarted_handler]( - std::tuple, bool> + std::tuple>, bool> result_and_delayed) mutable { - auto& resolver_data = std::get<0>(result_and_delayed); - const bool was_queued = std::get<1>(result_and_delayed); - if (!resolver_data.ok()) return resolver_data.status(); + auto& [config_selector, was_queued] = result_and_delayed; + if (!config_selector.ok()) return config_selector.status(); // Apply service config to call. - absl::Status status = self->ApplyServiceConfigToCall( - *resolver_data->config_selector, - unstarted_handler.UnprocessedClientInitialMetadata()); - if (!status.ok()) return status; + absl::StatusOr> filter_chain = + self->ApplyServiceConfigToCall( + **config_selector, + unstarted_handler.UnprocessedClientInitialMetadata()); + if (!filter_chain.ok()) return filter_chain.status(); // If the call was queued, add trace annotation. if (was_queued) { auto* call_tracer = MaybeGetContext(); @@ -959,8 +1026,10 @@ void ClientChannel::StartCall(UnstartedCallHandler unstarted_handler) { } // Start the call on the destination provided by the // resolver. - resolver_data->call_destination->StartCall( - std::move(unstarted_handler)); + auto destination = + DownCast(filter_chain->get()) + ->destination(); + destination->StartCall(std::move(unstarted_handler)); return absl::OkStatus(); }); }); @@ -992,7 +1061,7 @@ void ClientChannel::DestroyResolverAndLbPolicyLocked() { resolver_.reset(); saved_service_config_.reset(); saved_config_selector_.reset(); - resolver_data_for_calls_.Set(ResolverDataForCalls{nullptr, nullptr}); + resolver_data_for_calls_.Set(nullptr); // Clear LB policy if set. if (lb_policy_ != nullptr) { GRPC_TRACE_LOG(client_channel, INFO) @@ -1324,35 +1393,26 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked( ChannelArgs new_args = args.SetObject(this).SetObject(saved_service_config_); // Construct filter stack. auto new_blackboard = MakeRefCounted(); - InterceptionChainBuilder builder(new_args, new_blackboard.get()); - if (idle_timeout_ != Duration::Zero()) { - builder.AddOnServerTrailingMetadata([this](ServerMetadata&) { - if (idle_state_.DecreaseCallCount()) StartIdleTimer(); - }); - } - CoreConfiguration::Get().channel_init().AddToInterceptionChainBuilder( - GRPC_CLIENT_CHANNEL, builder); - // Add filters returned by the config selector (e.g., xDS HTTP filters). - config_selector->AddFilters(builder, blackboard_.get(), new_blackboard.get()); const bool enable_retries = !channel_args_.WantMinimalStack() && channel_args_.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true); if (enable_retries) { RetryInterceptor::UpdateBlackboard(*saved_service_config_, blackboard_.get(), new_blackboard.get()); - builder.Add(nullptr); } - blackboard_ = std::move(new_blackboard); - // Create call destination. - auto top_of_stack_call_destination = builder.Build(call_destination_); - // Send result to data plane. - if (!top_of_stack_call_destination.ok()) { - resolver_data_for_calls_.Set(MaybeRewriteIllegalStatusCode( - top_of_stack_call_destination.status(), "channel construction")); - } else { - resolver_data_for_calls_.Set(ResolverDataForCalls{ - std::move(config_selector), std::move(*top_of_stack_call_destination)}); + std::function on_server_trailing_metadata; + if (idle_timeout_ != Duration::Zero()) { + on_server_trailing_metadata = [this](ServerMetadata&) { + if (idle_state_.DecreaseCallCount()) StartIdleTimer(); + }; } + FilterChainBuilderImpl filter_chain_builder( + enable_retries, new_args, new_blackboard.get(), + std::move(on_server_trailing_metadata), call_destination_); + config_selector->BuildFilterChains(filter_chain_builder, blackboard_.get(), + new_blackboard.get()); + blackboard_ = std::move(new_blackboard); + resolver_data_for_calls_.Set(std::move(config_selector)); } void ClientChannel::UpdateStateLocked(grpc_connectivity_state state, @@ -1423,7 +1483,8 @@ void ClientChannel::StartIdleTimer() { std::move(arena))); } -absl::Status ClientChannel::ApplyServiceConfigToCall( +absl::StatusOr> +ClientChannel::ApplyServiceConfigToCall( ConfigSelector& config_selector, ClientMetadata& client_initial_metadata) const { GRPC_TRACE_LOG(client_channel_call, INFO) @@ -1438,11 +1499,12 @@ absl::Status ClientChannel::ApplyServiceConfigToCall( GetContext()->New( GetContext()); // Use the ConfigSelector to determine the config for the call. - absl::Status call_config_status = config_selector.GetCallConfig( - {&client_initial_metadata, GetContext(), - service_config_call_data}); - if (!call_config_status.ok()) { - return MaybeRewriteIllegalStatusCode(call_config_status, "ConfigSelector"); + auto filter_chain = config_selector.GetCallConfig({&client_initial_metadata, + GetContext(), + service_config_call_data}); + if (!filter_chain.ok()) { + return MaybeRewriteIllegalStatusCode(filter_chain.status(), + "ConfigSelector"); } // Apply our own method params to the call. auto* method_params = DownCast( @@ -1467,7 +1529,7 @@ absl::Status ClientChannel::ApplyServiceConfigToCall( wait_for_ready->value = method_params->wait_for_ready().value(); } } - return absl::OkStatus(); + return filter_chain; } } // namespace grpc_core diff --git a/deps/grpc/src/core/client_channel/client_channel.h b/deps/grpc/src/core/client_channel/client_channel.h index 55e5f438c4a..43f1ce663cd 100644 --- a/deps/grpc/src/core/client_channel/client_channel.h +++ b/deps/grpc/src/core/client_channel/client_channel.h @@ -166,7 +166,7 @@ class ClientChannel : public Channel { // Applies service config settings from config_selector to the call. // May modify call context and client_initial_metadata. - absl::Status ApplyServiceConfigToCall( + absl::StatusOr> ApplyServiceConfigToCall( ConfigSelector& config_selector, ClientMetadata& client_initial_metadata) const; @@ -192,11 +192,8 @@ class ClientChannel : public Channel { // // Fields related to name resolution. // - struct ResolverDataForCalls { - RefCountedPtr config_selector; - RefCountedPtr call_destination; - }; - Observable> resolver_data_for_calls_; + Observable>> + resolver_data_for_calls_; // // Fields related to LB picks. diff --git a/deps/grpc/src/core/client_channel/client_channel_filter.cc b/deps/grpc/src/core/client_channel/client_channel_filter.cc index 270dc734993..22182b90670 100644 --- a/deps/grpc/src/core/client_channel/client_channel_filter.cc +++ b/deps/grpc/src/core/client_channel/client_channel_filter.cc @@ -217,7 +217,7 @@ class ClientChannelFilter::CallData { grpc_closure* original_recv_trailing_metadata_ready_ = nullptr; grpc_closure recv_trailing_metadata_ready_; - RefCountedPtr dynamic_filters_; + RefCountedPtr dynamic_filters_; RefCountedPtr dynamic_call_; BufferedCall buffered_call_; @@ -300,7 +300,7 @@ class DynamicTerminationFilter::CallData final { const grpc_call_final_info* /*final_info*/, grpc_closure* then_schedule_closure) { auto* calld = static_cast(elem->call_data); - RefCountedPtr subchannel_call; + RefCountedPtr subchannel_call; if (GPR_LIKELY(calld->lb_call_ != nullptr)) { subchannel_call = calld->lb_call_->subchannel_call(); } @@ -504,8 +504,13 @@ class ClientChannelFilter::SubchannelWrapper final watcher_map_.erase(it); } - RefCountedPtr connected_subchannel() const { - return subchannel_->connected_subchannel(); + absl::Status Ping(grpc_closure* on_initiate, grpc_closure* on_ack) { + return subchannel_->Ping(on_initiate, on_ack); + } + + RefCountedPtr CreateCall(Subchannel::CreateCallArgs args, + grpc_error_handle* error) { + return subchannel_->CreateCall(args, error); } void RequestConnection() override { subchannel_->RequestConnection(); } @@ -599,7 +604,7 @@ class ClientChannelFilter::SubchannelWrapper final << parent_.get() << " subchannel " << parent_->subchannel_.get() << " watcher=" << watcher_.get() << " state=" << ConnectivityStateName(state) << " status=" << status; - if (!IsTransportStateWatcherEnabled()) { + if (!IsSubchannelConnectionScalingEnabled()) { auto keepalive_throttling = status.GetPayload(kKeepaliveThrottlingKey); if (keepalive_throttling.has_value()) { int new_keepalive_time_ms = -1; @@ -1412,6 +1417,46 @@ void ClientChannelFilter::UpdateServiceConfigInControlPlaneLocked( << saved_config_selector_.get(); } +namespace { + +// Filter chain builder impl to inject into ConfigSelector. +class LegacyFilterChainBuilder final : public FilterChainBuilder { + public: + LegacyFilterChainBuilder(bool enable_retries, const ChannelArgs& channel_args, + const Blackboard* blackboard) + : enable_retries_(enable_retries), + channel_args_(channel_args), + blackboard_(blackboard) {} + + absl::StatusOr> Build() override { + if (enable_retries_) { + filters_.push_back({&RetryFilter::kFilterVtable, nullptr}); + } else { + filters_.push_back({&DynamicTerminationFilter::kFilterVtable, nullptr}); + } + RefCountedPtr dynamic_filters = + DynamicFilters::Create(channel_args_, std::move(filters_), blackboard_); + if (dynamic_filters == nullptr) { + return absl::InternalError("error constructing dynamic filter stack"); + } + filters_.clear(); + return dynamic_filters; + } + + private: + void AddFilter(const FilterHandle& filter_handle, + RefCountedPtr config) override { + filter_handle.AddToBuilder(&filters_, std::move(config)); + } + + const bool enable_retries_; + const ChannelArgs channel_args_; + const Blackboard* blackboard_; + std::vector filters_; +}; + +} // namespace + void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked( const ChannelArgs& args) { // Grab ref to service config. @@ -1432,19 +1477,15 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked( new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true); // Construct dynamic filter stack. auto new_blackboard = MakeRefCounted(); - std::vector filters = - config_selector->GetFilters(blackboard_.get(), new_blackboard.get()); if (enable_retries) { RetryFilter::UpdateBlackboard(*service_config, blackboard_.get(), new_blackboard.get()); - filters.push_back(&RetryFilter::kVtable); - } else { - filters.push_back(&DynamicTerminationFilter::kFilterVtable); } + LegacyFilterChainBuilder filter_chain_builder(enable_retries, new_args, + new_blackboard.get()); + config_selector->BuildFilterChains(filter_chain_builder, blackboard_.get(), + new_blackboard.get()); blackboard_ = std::move(new_blackboard); - RefCountedPtr dynamic_filters = - DynamicFilters::Create(new_args, std::move(filters), blackboard_.get()); - GRPC_CHECK(dynamic_filters != nullptr); // Grab data plane lock to update service config. // // We defer unreffing the old values (and deallocating memory) until @@ -1457,7 +1498,6 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked( // Old values will be unreffed after lock is released. service_config_.swap(service_config); config_selector_.swap(config_selector); - dynamic_filters_.swap(dynamic_filters); // Re-process queued calls asynchronously. ReprocessQueuedResolverCalls(); } @@ -1495,13 +1535,11 @@ void ClientChannelFilter::DestroyResolverAndLbPolicyLocked() { // after we release the lock. RefCountedPtr service_config_to_unref; RefCountedPtr config_selector_to_unref; - RefCountedPtr dynamic_filters_to_unref; { MutexLock lock(&resolution_mu_); received_service_config_data_ = false; service_config_to_unref = std::move(service_config_); config_selector_to_unref = std::move(config_selector_); - dynamic_filters_to_unref = std::move(dynamic_filters_); } // Clear LB policy if set. if (lb_policy_ != nullptr) { @@ -1604,17 +1642,11 @@ grpc_error_handle ClientChannelFilter::DoPingLocked(grpc_transport_op* op) { // Complete pick. [op](LoadBalancingPolicy::PickResult::Complete* complete_pick) ABSL_EXCLUSIVE_LOCKS_REQUIRED( - *ClientChannelFilter::work_serializer_) { - SubchannelWrapper* subchannel = static_cast( - complete_pick->subchannel.get()); - RefCountedPtr connected_subchannel = - subchannel->connected_subchannel(); - if (connected_subchannel == nullptr) { - return GRPC_ERROR_CREATE("LB pick for ping not connected"); - } - connected_subchannel->Ping(op->send_ping.on_initiate, - op->send_ping.on_ack); - return absl::OkStatus(); + *ClientChannelFilter::work_serializer_) -> grpc_error_handle { + SubchannelWrapper* subchannel = + DownCast(complete_pick->subchannel.get()); + return subchannel->Ping(op->send_ping.on_initiate, + op->send_ping.on_ack); }, // Queue pick. [](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) { @@ -1850,14 +1882,14 @@ grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked( auto* service_config_call_data = arena_->New(arena_); // Use the ConfigSelector to determine the config for the call. - absl::Status call_config_status = - (*config_selector) - ->GetCallConfig( - {send_initial_metadata(), arena_, service_config_call_data}); - if (!call_config_status.ok()) { + auto filter_chain = (*config_selector) + ->GetCallConfig({send_initial_metadata(), arena_, + service_config_call_data}); + if (!filter_chain.ok()) { return absl_status_to_grpc_error( - MaybeRewriteIllegalStatusCode(call_config_status, "ConfigSelector")); + MaybeRewriteIllegalStatusCode(filter_chain.status(), "ConfigSelector")); } + dynamic_filters_ = filter_chain->TakeAsSubclass(); // Apply our own method params to the call. auto* method_params = static_cast( service_config_call_data->GetMethodParsedConfig( @@ -1938,7 +1970,6 @@ bool ClientChannelFilter::CallData::CheckResolutionLocked( } // Result found. *config_selector = chand()->config_selector_; - dynamic_filters_ = chand()->dynamic_filters_; return true; } @@ -2106,7 +2137,7 @@ void ClientChannelFilter::CallData::CreateDynamicCall() { call_start_time_, deadline_, arena_, call_combiner_}; grpc_error_handle error; - DynamicFilters* channel_stack = args.channel_stack.get(); + const DynamicFilters* channel_stack = args.channel_stack.get(); GRPC_TRACE_LOG(client_channel_call, INFO) << "chand=" << chand() << " calld=" << this << ": creating dynamic call stack on channel_stack=" << channel_stack; @@ -2461,7 +2492,7 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) { bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl( LoadBalancingPolicy::SubchannelPicker* picker, grpc_error_handle* error) { - GRPC_CHECK(connected_subchannel_ == nullptr); + GRPC_CHECK(subchannel_call_ == nullptr); // Perform LB pick. LoadBalancingPolicy::PickArgs pick_args; Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata()); @@ -2475,7 +2506,7 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl( return HandlePickResult( &result, // CompletePick - [this](LoadBalancingPolicy::PickResult::Complete* complete_pick) { + [this, &error](LoadBalancingPolicy::PickResult::Complete* complete_pick) { GRPC_TRACE_LOG(client_channel_lb_call, INFO) << "chand=" << chand_ << " lb_call=" << this << ": LB pick succeeded: subchannel=" @@ -2485,12 +2516,24 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl( // holding the data plane mutex. SubchannelWrapper* subchannel = static_cast(complete_pick->subchannel.get()); - connected_subchannel_ = subchannel->connected_subchannel(); + Subchannel::CreateCallArgs call_args = { + pollent_, /*start_time=*/0, arena_->GetContext()->deadline(), + // TODO(roth): When we implement hedging support, we will probably + // need to use a separate call arena for each subchannel call. + arena_, call_combiner_}; + subchannel_call_ = subchannel->CreateCall(call_args, error); + if (subchannel_call_ != nullptr && + on_call_destruction_complete_ != nullptr) { + subchannel_call_->SetAfterCallStackDestroy( + on_call_destruction_complete_); + on_call_destruction_complete_ = nullptr; + } + if (!error->ok()) return true; // If the subchannel has no connected subchannel (e.g., if the // subchannel has moved out of state READY but the LB policy hasn't // yet seen that change and given us a new picker), then just // queue the pick. We'll try again as soon as we get a new picker. - if (connected_subchannel_ == nullptr) { + if (subchannel_call_ == nullptr) { GRPC_TRACE_LOG(client_channel_lb_call, INFO) << "chand=" << chand_ << " lb_call=" << this << ": subchannel returned by LB picker " @@ -2726,7 +2769,7 @@ void ClientChannelFilter::LoadBalancedCall::TryPick(bool was_queued) { buffered_call_.Fail(*result, BufferedCall::YieldCallCombiner); return; } - CreateSubchannelCall(); + StartSubchannelCall(); } } @@ -2759,32 +2802,15 @@ void ClientChannelFilter::LoadBalancedCall::RetryPickLocked() { absl::OkStatus()); } -void ClientChannelFilter::LoadBalancedCall::CreateSubchannelCall() { - SubchannelCall::Args call_args = { - connected_subchannel_->Ref(), pollent_, /*start_time=*/0, - arena_->GetContext()->deadline(), - // TODO(roth): When we implement hedging support, we will probably - // need to use a separate call arena for each subchannel call. - arena_, call_combiner_}; - grpc_error_handle error; - subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error); +void ClientChannelFilter::LoadBalancedCall::StartSubchannelCall() { GRPC_TRACE_LOG(client_channel_lb_call, INFO) << "chand=" << chand_ << " lb_call=" << this - << ": create subchannel_call=" << subchannel_call_.get() - << ": error=" << StatusToString(error); - if (on_call_destruction_complete_ != nullptr) { - subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_); - on_call_destruction_complete_ = nullptr; - } - if (GPR_UNLIKELY(!error.ok())) { - buffered_call_.Fail(error, BufferedCall::YieldCallCombiner); - } else { - buffered_call_.Resume([subchannel_call = subchannel_call_]( - grpc_transport_stream_op_batch* batch) { - // Note: This will release the call combiner. - subchannel_call->StartTransportStreamOpBatch(batch); - }); - } + << ": starting subchannel_call=" << subchannel_call_.get(); + buffered_call_.Resume([subchannel_call = subchannel_call_]( + grpc_transport_stream_op_batch* batch) { + // Note: This will release the call combiner. + subchannel_call->StartTransportStreamOpBatch(batch); + }); } } // namespace grpc_core diff --git a/deps/grpc/src/core/client_channel/client_channel_filter.h b/deps/grpc/src/core/client_channel/client_channel_filter.h index 5c260ecdceb..ca2ffba7934 100644 --- a/deps/grpc/src/core/client_channel/client_channel_filter.h +++ b/deps/grpc/src/core/client_channel/client_channel_filter.h @@ -276,8 +276,6 @@ class ClientChannelFilter final { RefCountedPtr service_config_ ABSL_GUARDED_BY(resolution_mu_); RefCountedPtr config_selector_ ABSL_GUARDED_BY(resolution_mu_); - RefCountedPtr dynamic_filters_ - ABSL_GUARDED_BY(resolution_mu_); // // Fields related to LB picks. Guarded by lb_mu_. @@ -369,7 +367,7 @@ class ClientChannelFilter::LoadBalancedCall final void RetryPickLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_); - RefCountedPtr subchannel_call() const { + RefCountedPtr subchannel_call() const { return subchannel_call_; } @@ -423,7 +421,7 @@ class ClientChannelFilter::LoadBalancedCall final // and when it is queued and the channel gets a new picker. void TryPick(bool was_queued); - void CreateSubchannelCall(); + void StartSubchannelCall(); ClientChannelFilter* chand_; // When we start a new attempt for a call, we might not have cleaned up the @@ -443,7 +441,6 @@ class ClientChannelFilter::LoadBalancedCall final absl::AnyInvocable on_commit_; - RefCountedPtr connected_subchannel_; const BackendMetricData* backend_metric_data_ = nullptr; std::unique_ptr lb_subchannel_call_tracker_; @@ -459,7 +456,7 @@ class ClientChannelFilter::LoadBalancedCall final LbQueuedCallCanceller* lb_call_canceller_ ABSL_GUARDED_BY(&ClientChannelFilter::lb_mu_) = nullptr; - RefCountedPtr subchannel_call_; + RefCountedPtr subchannel_call_; // For intercepting recv_initial_metadata_ready. grpc_metadata_batch* recv_initial_metadata_ = nullptr; diff --git a/deps/grpc/src/core/client_channel/client_channel_internal.h b/deps/grpc/src/core/client_channel/client_channel_internal.h index 392cfc18d85..ca14d8fd36e 100644 --- a/deps/grpc/src/core/client_channel/client_channel_internal.h +++ b/deps/grpc/src/core/client_channel/client_channel_internal.h @@ -45,6 +45,11 @@ #define GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL \ "grpc.internal.max_connections_per_subchannel" +// EXPERIMENTAL: Fail requests at the client if the client is over max +// concurrent streams, so they may be retried elsewhere. +#define GRPC_ARG_MAX_CONCURRENT_STREAMS_REJECT_ON_CLIENT \ + "grpc.http.max_concurrent_streams_reject_on_client" + namespace grpc_core { // Internal type for LB call state interface. Provides an interface for diff --git a/deps/grpc/src/core/client_channel/config_selector.h b/deps/grpc/src/core/client_channel/config_selector.h index 89dd2380979..d94f920ebf1 100644 --- a/deps/grpc/src/core/client_channel/config_selector.h +++ b/deps/grpc/src/core/client_channel/config_selector.h @@ -28,6 +28,7 @@ #include "src/core/call/metadata_batch.h" #include "src/core/client_channel/client_channel_internal.h" #include "src/core/filter/blackboard.h" +#include "src/core/filter/filter_chain.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/slice/slice.h" @@ -61,15 +62,10 @@ class ConfigSelector : public RefCounted { } // The channel will call this when the resolver returns a new ConfigSelector - // to determine what set of dynamic filters will be configured. - virtual void AddFilters(InterceptionChainBuilder& /*builder*/, - const Blackboard* /*old_blackboard*/, - Blackboard* /*new_blackboard*/) {} - // TODO(roth): Remove this once the legacy filter stack goes away. - virtual std::vector GetFilters( - const Blackboard* /*old_blackboard*/, Blackboard* /*new_blackboard*/) { - return {}; - } + // to initialize the filter chains that the ConfigSelector may need. + virtual void BuildFilterChains(FilterChainBuilder& builder, + const Blackboard* old_blackboard, + Blackboard* new_blackboard) = 0; // Gets the configuration for the call and stores it in service config // call data. @@ -78,7 +74,8 @@ class ConfigSelector : public RefCounted { Arena* arena; ClientChannelServiceConfigCallData* service_config_call_data; }; - virtual absl::Status GetCallConfig(GetCallConfigArgs args) = 0; + virtual absl::StatusOr> GetCallConfig( + GetCallConfigArgs args) = 0; static absl::string_view ChannelArgName() { return GRPC_ARG_CONFIG_SELECTOR; } static int ChannelArgsCompare(const ConfigSelector* a, @@ -108,14 +105,21 @@ class DefaultConfigSelector final : public ConfigSelector { return kFactory.Create(); } - absl::Status GetCallConfig(GetCallConfigArgs args) override { + void BuildFilterChains(FilterChainBuilder& builder, + const Blackboard* /*old_blackboard*/, + Blackboard* /*new_blackboard*/) override { + filter_chain_ = builder.Build(); + } + + absl::StatusOr> GetCallConfig( + GetCallConfigArgs args) override { Slice* path = args.initial_metadata->get_pointer(HttpPathMetadata()); GRPC_CHECK_NE(path, nullptr); auto* parsed_method_configs = service_config_->GetMethodParsedConfigVector(path->c_slice()); args.service_config_call_data->SetServiceConfig(service_config_, parsed_method_configs); - return absl::OkStatus(); + return filter_chain_; } // Only comparing the ConfigSelector itself, not the underlying @@ -124,6 +128,7 @@ class DefaultConfigSelector final : public ConfigSelector { private: RefCountedPtr service_config_; + absl::StatusOr> filter_chain_; }; } // namespace grpc_core diff --git a/deps/grpc/src/core/client_channel/dynamic_filters.cc b/deps/grpc/src/core/client_channel/dynamic_filters.cc index 70abb90a1aa..989156856dd 100644 --- a/deps/grpc/src/core/client_channel/dynamic_filters.cc +++ b/deps/grpc/src/core/client_channel/dynamic_filters.cc @@ -109,7 +109,8 @@ void DynamicFilters::Call::Destroy(void* arg, grpc_error_handle /*error*/) { DynamicFilters::Call* self = static_cast(arg); // Keep some members before destroying the subchannel call. grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_; - RefCountedPtr channel_stack = std::move(self->channel_stack_); + RefCountedPtr channel_stack = + std::move(self->channel_stack_); // Destroy the subchannel call. self->~Call(); // Destroy the call stack. This should be after destroying the call, because @@ -136,12 +137,12 @@ void DynamicFilters::Call::IncrementRefCount(const DebugLocation& /*location*/, namespace { absl::StatusOr> CreateChannelStack( - const ChannelArgs& args, std::vector filters, + const ChannelArgs& args, std::vector filters, const Blackboard* blackboard) { ChannelStackBuilderImpl builder("DynamicFilters", GRPC_CLIENT_DYNAMIC, args); builder.SetBlackboard(blackboard); - for (auto filter : filters) { - builder.AppendFilter(filter); + for (auto& [filter, config] : filters) { + builder.AppendFilter(filter, std::move(config)); } return builder.Build(); } @@ -149,7 +150,7 @@ absl::StatusOr> CreateChannelStack( } // namespace RefCountedPtr DynamicFilters::Create( - const ChannelArgs& args, std::vector filters, + const ChannelArgs& args, std::vector filters, const Blackboard* blackboard) { // Attempt to create channel stack from requested filters. auto p = CreateChannelStack(args, std::move(filters), blackboard); @@ -158,13 +159,13 @@ RefCountedPtr DynamicFilters::Create( // Create with lame filter instead. auto error = p.status(); p = CreateChannelStack(args.Set(MakeLameClientErrorArg(&error)), - {&LameClientFilter::kFilter}, nullptr); + {{&LameClientFilter::kFilter, nullptr}}, nullptr); } return MakeRefCounted(std::move(p.value())); } RefCountedPtr DynamicFilters::CreateCall( - DynamicFilters::Call::Args args, grpc_error_handle* error) { + DynamicFilters::Call::Args args, grpc_error_handle* error) const { size_t allocation_size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(Call)) + channel_stack_->call_stack_size; Call* call = static_cast(args.arena->Alloc(allocation_size)); diff --git a/deps/grpc/src/core/client_channel/dynamic_filters.h b/deps/grpc/src/core/client_channel/dynamic_filters.h index 7e81a5d709f..263d41bb489 100644 --- a/deps/grpc/src/core/client_channel/dynamic_filters.h +++ b/deps/grpc/src/core/client_channel/dynamic_filters.h @@ -24,6 +24,7 @@ #include #include "src/core/filter/blackboard.h" +#include "src/core/filter/filter_chain.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack.h" @@ -41,13 +42,13 @@ namespace grpc_core { -class DynamicFilters final : public RefCounted { +class DynamicFilters final : public FilterChain { public: // Implements the interface of RefCounted<>. class Call { public: struct Args { - RefCountedPtr channel_stack; + RefCountedPtr channel_stack; grpc_polling_entity* pollent; gpr_cycle_counter start_time; Timestamp deadline; @@ -84,18 +85,19 @@ class DynamicFilters final : public RefCounted { static void Destroy(void* arg, grpc_error_handle error); - RefCountedPtr channel_stack_; + RefCountedPtr channel_stack_; grpc_closure* after_call_stack_destroy_ = nullptr; }; static RefCountedPtr Create( - const ChannelArgs& args, std::vector filters, + const ChannelArgs& args, std::vector filters, const Blackboard* blackboard); explicit DynamicFilters(RefCountedPtr channel_stack) : channel_stack_(std::move(channel_stack)) {} - RefCountedPtr CreateCall(Call::Args args, grpc_error_handle* error); + RefCountedPtr CreateCall(Call::Args args, + grpc_error_handle* error) const; grpc_channel_stack* channel_stack() const { return channel_stack_.get(); } diff --git a/deps/grpc/src/core/client_channel/retry_filter.cc b/deps/grpc/src/core/client_channel/retry_filter.cc index ac494396b27..2e28c0565de 100644 --- a/deps/grpc/src/core/client_channel/retry_filter.cc +++ b/deps/grpc/src/core/client_channel/retry_filter.cc @@ -127,7 +127,7 @@ const RetryMethodConfig* RetryFilter::GetRetryPolicy(Arena* arena) { svc_cfg_call_data->GetMethodParsedConfig(service_config_parser_index_)); } -const grpc_channel_filter RetryFilter::kVtable = { +const grpc_channel_filter RetryFilter::kFilterVtable = { RetryFilter::LegacyCallData::StartTransportStreamOpBatch, RetryFilter::StartTransportOp, sizeof(RetryFilter::LegacyCallData), diff --git a/deps/grpc/src/core/client_channel/retry_filter.h b/deps/grpc/src/core/client_channel/retry_filter.h index aa1286e3008..53430cb8de2 100644 --- a/deps/grpc/src/core/client_channel/retry_filter.h +++ b/deps/grpc/src/core/client_channel/retry_filter.h @@ -43,7 +43,7 @@ namespace grpc_core { class RetryFilter final { public: - static const grpc_channel_filter kVtable; + static const grpc_channel_filter kFilterVtable; static void UpdateBlackboard(const ServiceConfig& service_config, const Blackboard* old_blackboard, @@ -89,7 +89,7 @@ class RetryFilter final { static grpc_error_handle Init(grpc_channel_element* elem, grpc_channel_element_args* args) { GRPC_CHECK(args->is_last); - GRPC_CHECK(elem->filter == &kVtable); + GRPC_CHECK(elem->filter == &kFilterVtable); new (elem->channel_data) RetryFilter(*args); return absl::OkStatus(); } diff --git a/deps/grpc/src/core/client_channel/subchannel.cc b/deps/grpc/src/core/client_channel/subchannel.cc index bf7b827e280..afcae28c709 100644 --- a/deps/grpc/src/core/client_channel/subchannel.cc +++ b/deps/grpc/src/core/client_channel/subchannel.cc @@ -32,8 +32,10 @@ #include "src/core/call/interception_chain.h" #include "src/core/channelz/channel_trace.h" #include "src/core/channelz/channelz.h" +#include "src/core/client_channel/buffered_call.h" #include "src/core/client_channel/client_channel_internal.h" #include "src/core/client_channel/subchannel_pool_interface.h" +#include "src/core/client_channel/subchannel_stream_limiter.h" #include "src/core/config/core_configuration.h" #include "src/core/handshaker/proxy_mapper_registry.h" #include "src/core/lib/address_utils/sockaddr_utils.h" @@ -90,21 +92,111 @@ namespace grpc_core { using ::grpc_event_engine::experimental::EventEngine; +// To avoid a naming conflict between +// ConnectivityStateWatcherInterface and +// Subchannel::ConnectivityStateWatcherInterface. +using TransportConnectivityStateWatcher = ConnectivityStateWatcherInterface; + +// +// Subchannel::Call +// + +RefCountedPtr Subchannel::Call::Ref() { + IncrementRefCount(); + return RefCountedPtr(this); +} + +RefCountedPtr Subchannel::Call::Ref( + const DebugLocation& location, const char* reason) { + IncrementRefCount(location, reason); + return RefCountedPtr(this); +} + +// +// Subchannel +// + +RefCountedPtr Subchannel::Create( + OrphanablePtr connector, + const grpc_resolved_address& address, const ChannelArgs& args) { + if (!IsSubchannelConnectionScalingEnabled()) { + return OldSubchannel::Create(std::move(connector), address, args); + } + return NewSubchannel::Create(std::move(connector), address, args); +} + +Subchannel::Subchannel() + : DualRefCounted(GRPC_TRACE_FLAG_ENABLED(subchannel_refcount) + ? "Subchannel" + : nullptr) {} + +ChannelArgs Subchannel::MakeSubchannelArgs( + const ChannelArgs& channel_args, const ChannelArgs& address_args, + const RefCountedPtr& subchannel_pool, + const std::string& channel_default_authority) { + // Note that we start with the channel-level args and then apply the + // per-address args, so that if a value is present in both, the one + // in the channel-level args is used. This is particularly important + // for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow + // resolvers to set on a per-address basis only if the application + // did not explicitly set it at the channel level. + return channel_args.UnionWith(address_args) + .SetObject(subchannel_pool) + // If we haven't already set the default authority arg (i.e., it + // was not explicitly set by the application nor overridden by + // the resolver), add it from the channel's default. + .SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority) + // Remove channel args that should not affect subchannel + // uniqueness. + .Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME) + .Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING) + .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL) + .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP) + .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE) + // Remove all keys with the no-subchannel prefix. + .RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX); +} + // -// ConnectedSubchannel +// OldSubchannel::ConnectedSubchannel // -ConnectedSubchannel::ConnectedSubchannel(const ChannelArgs& args) - : RefCounted( - GRPC_TRACE_FLAG_ENABLED(subchannel_refcount) ? "ConnectedSubchannel" - : nullptr), - args_(args) {} +class OldSubchannel::ConnectedSubchannel + : public RefCounted { + public: + const ChannelArgs& args() const { return args_; } + + virtual void StartWatch( + grpc_pollset_set* interested_parties, + OrphanablePtr watcher) = 0; + + // Methods for v3 stack. + virtual void Ping(absl::AnyInvocable on_ack) = 0; + virtual RefCountedPtr unstarted_call_destination() + const = 0; + + // Methods for legacy stack. + virtual RefCountedPtr CreateCall(CreateCallArgs args, + grpc_error_handle* error) = 0; + virtual void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) = 0; + + protected: + explicit ConnectedSubchannel(const ChannelArgs& args) + : RefCounted( + GRPC_TRACE_FLAG_ENABLED(subchannel_refcount) ? "ConnectedSubchannel" + : nullptr), + args_(args) {} + + private: + ChannelArgs args_; +}; // -// LegacyConnectedSubchannel +// OldSubchannel::LegacyConnectedSubchannel // -class LegacyConnectedSubchannel : public ConnectedSubchannel { +class OldSubchannel::LegacyConnectedSubchannel final + : public ConnectedSubchannel { public: LegacyConnectedSubchannel( RefCountedPtr channel_stack, const ChannelArgs& args, @@ -117,13 +209,9 @@ class LegacyConnectedSubchannel : public ConnectedSubchannel { channel_stack_.reset(DEBUG_LOCATION, "ConnectedSubchannel"); } - channelz::SubchannelNode* channelz_node() const override { - return channelz_node_.get(); - } - void StartWatch( grpc_pollset_set* interested_parties, - OrphanablePtr watcher) override { + OrphanablePtr watcher) override { grpc_transport_op* op = grpc_make_transport_op(nullptr); op->start_connectivity_watch = std::move(watcher); op->start_connectivity_watch_state = GRPC_CHANNEL_READY; @@ -142,13 +230,15 @@ class LegacyConnectedSubchannel : public ConnectedSubchannel { Crash("call v3 unstarted_call_destination method called in legacy impl"); } - grpc_channel_stack* channel_stack() const override { - return channel_stack_.get(); - } - - size_t GetInitialCallSizeEstimate() const override { - return GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)) + - channel_stack_->call_stack_size; + RefCountedPtr CreateCall(CreateCallArgs args, + grpc_error_handle* error) override { + const size_t allocation_size = + GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)) + + channel_stack_->call_stack_size; + Arena* arena = args.arena; + return RefCountedPtr( + new (arena->Alloc(allocation_size)) SubchannelCall( + RefAsSubclass(), args, error)); } void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) override { @@ -161,88 +251,58 @@ class LegacyConnectedSubchannel : public ConnectedSubchannel { } private: - RefCountedPtr channelz_node_; - RefCountedPtr channel_stack_; -}; - -// -// NewConnectedSubchannel -// - -class NewConnectedSubchannel : public ConnectedSubchannel { - public: - class TransportCallDestination final : public CallDestination { + class SubchannelCall final : public Call { public: - explicit TransportCallDestination(OrphanablePtr transport) - : transport_(std::move(transport)) {} + SubchannelCall( + RefCountedPtr connected_subchannel, + CreateCallArgs args, grpc_error_handle* error); - ClientTransport* transport() { return transport_.get(); } + void StartTransportStreamOpBatch( + grpc_transport_stream_op_batch* batch) override; - void HandleCall(CallHandler handler) override { - transport_->StartCall(std::move(handler)); - } + void SetAfterCallStackDestroy(grpc_closure* closure) override; - void Orphaned() override { transport_.reset(); } + // When refcount drops to 0, destroys itself and the associated call stack, + // but does NOT free the memory because it's in the call arena. + void Unref() override; + void Unref(const DebugLocation& location, const char* reason) override; private: - OrphanablePtr transport_; + // If channelz is enabled, intercepts recv_trailing so that we may check the + // status and associate it to a subchannel. + void MaybeInterceptRecvTrailingMetadata( + grpc_transport_stream_op_batch* batch); + + static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); + + // Interface of RefCounted<>. + void IncrementRefCount() override; + void IncrementRefCount(const DebugLocation& location, + const char* reason) override; + + static void Destroy(void* arg, grpc_error_handle error); + + RefCountedPtr connected_subchannel_; + grpc_closure* after_call_stack_destroy_ = nullptr; + // State needed to support channelz interception of recv trailing metadata. + grpc_closure recv_trailing_metadata_ready_; + grpc_closure* original_recv_trailing_metadata_ = nullptr; + grpc_metadata_batch* recv_trailing_metadata_ = nullptr; + Timestamp deadline_; }; - NewConnectedSubchannel( - RefCountedPtr call_destination, - RefCountedPtr transport, - const ChannelArgs& args) - : ConnectedSubchannel(args), - call_destination_(std::move(call_destination)), - transport_(std::move(transport)) {} - - void StartWatch( - grpc_pollset_set*, - OrphanablePtr watcher) override { - transport_->transport()->StartConnectivityWatch(std::move(watcher)); - } - - void Ping(absl::AnyInvocable) override { - // TODO(ctiller): add new transport API for this in v3 stack - Crash("not implemented"); - } - - RefCountedPtr unstarted_call_destination() - const override { - return call_destination_; - } - - grpc_channel_stack* channel_stack() const override { return nullptr; } - - size_t GetInitialCallSizeEstimate() const override { return 0; } - - void Ping(grpc_closure*, grpc_closure*) override { - Crash("legacy ping method called in call v3 impl"); - } - - channelz::SubchannelNode* channelz_node() const override { return nullptr; } - - private: - RefCountedPtr call_destination_; - RefCountedPtr transport_; + RefCountedPtr channelz_node_; + RefCountedPtr channel_stack_; }; // -// SubchannelCall +// OldSubchannel::LegacyConnectedSubchannel::SubchannelCall // -RefCountedPtr SubchannelCall::Create(Args args, - grpc_error_handle* error) { - const size_t allocation_size = - args.connected_subchannel->GetInitialCallSizeEstimate(); - Arena* arena = args.arena; - return RefCountedPtr(new ( - arena->Alloc(allocation_size)) SubchannelCall(std::move(args), error)); -} - -SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error) - : connected_subchannel_(args.connected_subchannel - .TakeAsSubclass()), +OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::SubchannelCall( + RefCountedPtr connected_subchannel, + CreateCallArgs args, grpc_error_handle* error) + : connected_subchannel_(std::move(connected_subchannel)), deadline_(args.deadline) { grpc_call_stack* callstk = SUBCHANNEL_CALL_TO_CALL_STACK(this); const grpc_call_element_args call_args = { @@ -253,21 +313,20 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error) args.arena, // arena args.call_combiner // call_combiner }; - *error = grpc_call_stack_init(connected_subchannel_->channel_stack(), 1, + *error = grpc_call_stack_init(connected_subchannel_->channel_stack_.get(), 1, SubchannelCall::Destroy, this, &call_args); if (GPR_UNLIKELY(!error->ok())) { LOG(ERROR) << "error: " << StatusToString(*error); return; } grpc_call_stack_set_pollset_or_pollset_set(callstk, args.pollent); - auto* channelz_node = connected_subchannel_->channelz_node(); - if (channelz_node != nullptr) { - channelz_node->RecordCallStarted(); + if (connected_subchannel_->channelz_node_ != nullptr) { + connected_subchannel_->channelz_node_->RecordCallStarted(); } } -void SubchannelCall::StartTransportStreamOpBatch( - grpc_transport_stream_op_batch* batch) { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch) { MaybeInterceptRecvTrailingMetadata(batch); grpc_call_stack* call_stack = SUBCHANNEL_CALL_TO_CALL_STACK(this); grpc_call_element* top_elem = grpc_call_stack_element(call_stack, 0); @@ -277,37 +336,24 @@ void SubchannelCall::StartTransportStreamOpBatch( top_elem->filter->start_transport_stream_op_batch(top_elem, batch); } -grpc_call_stack* SubchannelCall::GetCallStack() { - return SUBCHANNEL_CALL_TO_CALL_STACK(this); -} - -void SubchannelCall::SetAfterCallStackDestroy(grpc_closure* closure) { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + SetAfterCallStackDestroy(grpc_closure* closure) { GRPC_CHECK_EQ(after_call_stack_destroy_, nullptr); GRPC_CHECK_NE(closure, nullptr); after_call_stack_destroy_ = closure; } -RefCountedPtr SubchannelCall::Ref() { - IncrementRefCount(); - return RefCountedPtr(this); -} - -RefCountedPtr SubchannelCall::Ref(const DebugLocation& location, - const char* reason) { - IncrementRefCount(location, reason); - return RefCountedPtr(this); -} - -void SubchannelCall::Unref() { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref() { GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), ""); } -void SubchannelCall::Unref(const DebugLocation& /*location*/, - const char* reason) { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref( + const DebugLocation& /*location*/, const char* reason) { GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason); } -void SubchannelCall::Destroy(void* arg, grpc_error_handle /*error*/) { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall::Destroy( + void* arg, grpc_error_handle /*error*/) { SubchannelCall* self = static_cast(arg); // Keep some members before destroying the subchannel call. grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_; @@ -325,12 +371,12 @@ void SubchannelCall::Destroy(void* arg, grpc_error_handle /*error*/) { // stack. } -void SubchannelCall::MaybeInterceptRecvTrailingMetadata( - grpc_transport_stream_op_batch* batch) { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + MaybeInterceptRecvTrailingMetadata(grpc_transport_stream_op_batch* batch) { // only intercept payloads with recv trailing. if (!batch->recv_trailing_metadata) return; // only add interceptor is channelz is enabled. - if (connected_subchannel_->channelz_node() == nullptr) return; + if (connected_subchannel_->channelz_node_ == nullptr) return; GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady, this, grpc_schedule_on_exec_ctx); // save some state needed for the interception callback. @@ -357,14 +403,14 @@ void GetCallStatus(grpc_status_code* status, Timestamp deadline, } // namespace -void SubchannelCall::RecvTrailingMetadataReady(void* arg, - grpc_error_handle error) { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + RecvTrailingMetadataReady(void* arg, grpc_error_handle error) { SubchannelCall* call = static_cast(arg); GRPC_CHECK_NE(call->recv_trailing_metadata_, nullptr); grpc_status_code status = GRPC_STATUS_OK; GetCallStatus(&status, call->deadline_, call->recv_trailing_metadata_, error); channelz::SubchannelNode* channelz_node = - call->connected_subchannel_->channelz_node(); + call->connected_subchannel_->channelz_node_.get(); GRPC_CHECK_NE(channelz_node, nullptr); if (status == GRPC_STATUS_OK) { channelz_node->RecordCallSucceeded(); @@ -374,24 +420,85 @@ void SubchannelCall::RecvTrailingMetadataReady(void* arg, Closure::Run(DEBUG_LOCATION, call->original_recv_trailing_metadata_, error); } -void SubchannelCall::IncrementRefCount() { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + IncrementRefCount() { GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), ""); } -void SubchannelCall::IncrementRefCount(const DebugLocation& /*location*/, - const char* reason) { +void OldSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + IncrementRefCount(const DebugLocation& /*location*/, const char* reason) { GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason); } // -// Subchannel::ConnectedSubchannelStateWatcher +// OldSubchannel::NewConnectedSubchannel +// + +class OldSubchannel::NewConnectedSubchannel final : public ConnectedSubchannel { + public: + class TransportCallDestination final : public CallDestination { + public: + explicit TransportCallDestination(OrphanablePtr transport) + : transport_(std::move(transport)) {} + + ClientTransport* transport() { return transport_.get(); } + + void HandleCall(CallHandler handler) override { + transport_->StartCall(std::move(handler)); + } + + void Orphaned() override { transport_.reset(); } + + private: + OrphanablePtr transport_; + }; + + NewConnectedSubchannel( + RefCountedPtr call_destination, + RefCountedPtr transport, + const ChannelArgs& args) + : ConnectedSubchannel(args), + call_destination_(std::move(call_destination)), + transport_(std::move(transport)) {} + + void StartWatch( + grpc_pollset_set*, + OrphanablePtr watcher) override { + transport_->transport()->StartConnectivityWatch(std::move(watcher)); + } + + void Ping(absl::AnyInvocable) override { + // TODO(ctiller): add new transport API for this in v3 stack + Crash("not implemented"); + } + + RefCountedPtr unstarted_call_destination() + const override { + return call_destination_; + } + + RefCountedPtr CreateCall(CreateCallArgs, grpc_error_handle*) override { + Crash("legacy CreateCall() called on v3 impl"); + } + + void Ping(grpc_closure*, grpc_closure*) override { + Crash("legacy ping method called in call v3 impl"); + } + + private: + RefCountedPtr call_destination_; + RefCountedPtr transport_; +}; + +// +// OldSubchannel::ConnectedSubchannelStateWatcher // -class Subchannel::ConnectedSubchannelStateWatcher final +class OldSubchannel::ConnectedSubchannelStateWatcher final : public AsyncConnectivityStateWatcherInterface { public: // Must be instantiated while holding c->mu. - explicit ConnectedSubchannelStateWatcher(WeakRefCountedPtr c) + explicit ConnectedSubchannelStateWatcher(WeakRefCountedPtr c) : subchannel_(std::move(c)) {} ~ConnectedSubchannelStateWatcher() override { @@ -401,7 +508,7 @@ class Subchannel::ConnectedSubchannelStateWatcher final private: void OnConnectivityStateChange(grpc_connectivity_state new_state, const absl::Status& status) override { - Subchannel* c = subchannel_.get(); + OldSubchannel* c = subchannel_.get(); { MutexLock lock(&c->mu_); // If we're either shutting down or have already seen this connection @@ -442,86 +549,24 @@ class Subchannel::ConnectedSubchannelStateWatcher final } } - WeakRefCountedPtr subchannel_; -}; - -// -// Subchannel::ConnectionStateWatcher -// - -class Subchannel::ConnectionStateWatcher final - : public Transport::StateWatcher { - public: - explicit ConnectionStateWatcher(WeakRefCountedPtr subchannel) - : subchannel_(std::move(subchannel)) {} - - ~ConnectionStateWatcher() override { - subchannel_.reset(DEBUG_LOCATION, "state_watcher"); - } - - void OnDisconnect(absl::Status status, - DisconnectInfo disconnect_info) override { - MutexLock lock(&subchannel_->mu_); - // Handle keepalive update. - if (disconnect_info.keepalive_time.has_value()) { - subchannel_->ThrottleKeepaliveTimeLocked(*disconnect_info.keepalive_time); - subchannel_->watcher_list_.NotifyOnKeepaliveUpdateLocked( - *disconnect_info.keepalive_time); - } - // We shouldn't ever see OnDisconnect() more than once for a given - // connection, but we'll be defensive just in case: if the connected - // subchannel has already been cleared, then this becomes a no-op. - RefCountedPtr connected_subchannel = - std::move(subchannel_->connected_subchannel_); - if (connected_subchannel == nullptr) return; - GRPC_TRACE_LOG(subchannel, INFO) - << "subchannel " << subchannel_.get() << " " - << subchannel_->key_.ToString() << ": connected subchannel " - << connected_subchannel.get() << " reports disconnection: " << status; - // If the subchannel was created from an endpoint, then we report - // TRANSIENT_FAILURE here instead of IDLE. The subchannel will never - // leave TRANSIENT_FAILURE state, because there is no way for us to - // establish a new connection. Otherwise, we report IDLE here. - if (subchannel_->created_from_endpoint_) { - subchannel_->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE, - status); - } else { - subchannel_->SetConnectivityStateLocked(GRPC_CHANNEL_IDLE, - absl::OkStatus()); - } - subchannel_->backoff_.Reset(); - } - - void OnPeerMaxConcurrentStreamsUpdate( - uint32_t /*max_concurrent_streams*/, - std::unique_ptr /*on_done*/) - override { - // TODO(roth): Implement this as part of adding connection scaling. - } - - grpc_pollset_set* interested_parties() const override { - return subchannel_->pollset_set_; - } - - private: - WeakRefCountedPtr subchannel_; + WeakRefCountedPtr subchannel_; }; // -// Subchannel::ConnectivityStateWatcherList +// OldSubchannel::ConnectivityStateWatcherList // -void Subchannel::ConnectivityStateWatcherList::AddWatcherLocked( +void OldSubchannel::ConnectivityStateWatcherList::AddWatcherLocked( RefCountedPtr watcher) { watchers_.insert(std::move(watcher)); } -void Subchannel::ConnectivityStateWatcherList::RemoveWatcherLocked( +void OldSubchannel::ConnectivityStateWatcherList::RemoveWatcherLocked( ConnectivityStateWatcherInterface* watcher) { watchers_.erase(watcher); } -void Subchannel::ConnectivityStateWatcherList::NotifyLocked( +void OldSubchannel::ConnectivityStateWatcherList::NotifyLocked( grpc_connectivity_state state, const absl::Status& status) { for (const auto& watcher : watchers_) { subchannel_->work_serializer_.Run([watcher, state, status]() { @@ -530,7 +575,7 @@ void Subchannel::ConnectivityStateWatcherList::NotifyLocked( } } -void Subchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked( +void OldSubchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked( Duration new_keepalive_time) { for (const auto& watcher : watchers_) { subchannel_->work_serializer_.Run([watcher, new_keepalive_time]() { @@ -540,7 +585,7 @@ void Subchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked( } uint32_t -Subchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel() +OldSubchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel() const { uint32_t max_connections_per_subchannel = 1; for (const auto& watcher : watchers_) { @@ -552,7 +597,7 @@ Subchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel() } // -// Subchannel +// OldSubchannel // namespace { @@ -595,13 +640,10 @@ BackOff::Options ParseArgsForBackoffValues(const ChannelArgs& args, } // namespace -Subchannel::Subchannel(SubchannelKey key, - OrphanablePtr connector, - const ChannelArgs& args) - : DualRefCounted(GRPC_TRACE_FLAG_ENABLED(subchannel_refcount) - ? "Subchannel" - : nullptr), - key_(std::move(key)), +OldSubchannel::OldSubchannel(SubchannelKey key, + OrphanablePtr connector, + const ChannelArgs& args) + : key_(std::move(key)), created_from_endpoint_(args.Contains(GRPC_ARG_SUBCHANNEL_ENDPOINT)), args_(args), pollset_set_(grpc_pollset_set_create()), @@ -646,7 +688,7 @@ Subchannel::Subchannel(SubchannelKey key, } } -Subchannel::~Subchannel() { +OldSubchannel::~OldSubchannel() { if (channelz_node_ != nullptr) { GRPC_CHANNELZ_LOG(channelz_node_) << "Subchannel destroyed"; channelz_node_->UpdateConnectivityState(GRPC_CHANNEL_SHUTDOWN); @@ -657,17 +699,18 @@ Subchannel::~Subchannel() { ShutdownInternally(); } -RefCountedPtr Subchannel::Create( +RefCountedPtr OldSubchannel::Create( OrphanablePtr connector, const grpc_resolved_address& address, const ChannelArgs& args) { SubchannelKey key(address, args); auto* subchannel_pool = args.GetObject(); GRPC_CHECK_NE(subchannel_pool, nullptr); - RefCountedPtr c = subchannel_pool->FindSubchannel(key); + RefCountedPtr c = + subchannel_pool->FindSubchannel(key).TakeAsSubclass(); if (c != nullptr) { return c; } - c = MakeRefCounted(std::move(key), std::move(connector), args); + c = MakeRefCounted(std::move(key), std::move(connector), args); if (c->created_from_endpoint_) { // We don't interact with the subchannel pool in this case. // Instead, we unconditionally return the newly created subchannel. @@ -681,18 +724,19 @@ RefCountedPtr Subchannel::Create( // Otherwise, in case of a registration race, unreffing c in // RegisterSubchannel() will cause c to be tried to be unregistered, while // its key maps to a different subchannel. - RefCountedPtr registered = - subchannel_pool->RegisterSubchannel(c->key_, c); + RefCountedPtr registered = + subchannel_pool->RegisterSubchannel(c->key_, c) + .TakeAsSubclass(); if (registered == c) c->subchannel_pool_ = subchannel_pool->Ref(); return registered; } -void Subchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) { +void OldSubchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) { MutexLock lock(&mu_); ThrottleKeepaliveTimeLocked(new_keepalive_time); } -void Subchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) { +void OldSubchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) { // Only update the value if the new keepalive time is larger. if (new_keepalive_time > keepalive_time_) { keepalive_time_ = new_keepalive_time; @@ -703,11 +747,11 @@ void Subchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) { } } -channelz::SubchannelNode* Subchannel::channelz_node() { +channelz::SubchannelNode* OldSubchannel::channelz_node() { return channelz_node_.get(); } -void Subchannel::WatchConnectivityState( +void OldSubchannel::WatchConnectivityState( RefCountedPtr watcher) { MutexLock lock(&mu_); grpc_pollset_set* interested_parties = watcher->interested_parties(); @@ -722,7 +766,7 @@ void Subchannel::WatchConnectivityState( watcher_list_.AddWatcherLocked(std::move(watcher)); } -void Subchannel::CancelConnectivityStateWatch( +void OldSubchannel::CancelConnectivityStateWatch( ConnectivityStateWatcherInterface* watcher) { MutexLock lock(&mu_); grpc_pollset_set* interested_parties = watcher->interested_parties(); @@ -732,14 +776,14 @@ void Subchannel::CancelConnectivityStateWatch( watcher_list_.RemoveWatcherLocked(watcher); } -void Subchannel::RequestConnection() { +void OldSubchannel::RequestConnection() { MutexLock lock(&mu_); if (state_ == GRPC_CHANNEL_IDLE) { StartConnectingLocked(); } } -void Subchannel::ResetBackoff() { +void OldSubchannel::ResetBackoff() { // Hold a ref to ensure cancellation and subsequent deletion of the closure // does not eliminate the last ref and destroy the Subchannel before the // method returns. @@ -754,7 +798,7 @@ void Subchannel::ResetBackoff() { } } -void Subchannel::Orphaned() { +void OldSubchannel::Orphaned() { // The subchannel_pool is only used once here in this subchannel, so the // access can be outside of the lock. if (subchannel_pool_ != nullptr) { @@ -768,7 +812,7 @@ void Subchannel::Orphaned() { connected_subchannel_.reset(); } -void Subchannel::GetOrAddDataProducer( +void OldSubchannel::GetOrAddDataProducer( UniqueTypeName type, std::function get_or_add) { MutexLock lock(&mu_); @@ -776,7 +820,7 @@ void Subchannel::GetOrAddDataProducer( get_or_add(&it->second); } -void Subchannel::RemoveDataProducer(DataProducerInterface* data_producer) { +void OldSubchannel::RemoveDataProducer(DataProducerInterface* data_producer) { MutexLock lock(&mu_); auto it = data_producer_map_.find(data_producer->type()); if (it != data_producer_map_.end() && it->second == data_producer) { @@ -785,8 +829,8 @@ void Subchannel::RemoveDataProducer(DataProducerInterface* data_producer) { } // Note: Must be called with a state that is different from the current state. -void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state, - const absl::Status& status) { +void OldSubchannel::SetConnectivityStateLocked(grpc_connectivity_state state, + const absl::Status& status) { state_ = state; if (status.ok()) { status_ = status; @@ -819,12 +863,12 @@ void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state, watcher_list_.NotifyLocked(state, status_); } -void Subchannel::OnRetryTimer() { +void OldSubchannel::OnRetryTimer() { MutexLock lock(&mu_); OnRetryTimerLocked(); } -void Subchannel::OnRetryTimerLocked() { +void OldSubchannel::OnRetryTimerLocked() { if (shutdown_) return; GRPC_TRACE_LOG(subchannel, INFO) << "subchannel " << this << " " << key_.ToString() @@ -832,7 +876,7 @@ void Subchannel::OnRetryTimerLocked() { SetConnectivityStateLocked(GRPC_CHANNEL_IDLE, absl::OkStatus()); } -void Subchannel::StartConnectingLocked() { +void OldSubchannel::StartConnectingLocked() { // Set next attempt time. const Timestamp now = Timestamp::Now(); const Timestamp min_deadline = now + min_connect_timeout_; @@ -849,8 +893,8 @@ void Subchannel::StartConnectingLocked() { connector_->Connect(args, &connecting_result_, &on_connecting_finished_); } -void Subchannel::OnConnectingFinished(void* arg, grpc_error_handle error) { - WeakRefCountedPtr c(static_cast(arg)); +void OldSubchannel::OnConnectingFinished(void* arg, grpc_error_handle error) { + WeakRefCountedPtr c(static_cast(arg)); { MutexLock lock(&c->mu_); c->OnConnectingFinishedLocked(error); @@ -858,7 +902,7 @@ void Subchannel::OnConnectingFinished(void* arg, grpc_error_handle error) { c.reset(DEBUG_LOCATION, "Connect"); } -void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) { +void OldSubchannel::OnConnectingFinishedLocked(grpc_error_handle error) { if (shutdown_) { connecting_result_.Reset(); return; @@ -884,7 +928,8 @@ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) { if (created_from_endpoint_) return; retry_timer_handle_ = event_engine_->RunAfter( time_until_next_attempt, - [self = WeakRef(DEBUG_LOCATION, "RetryTimer")]() mutable { + [self = WeakRef(DEBUG_LOCATION, "RetryTimer") + .TakeAsSubclass()]() mutable { { ExecCtx exec_ctx; self->OnRetryTimer(); @@ -900,13 +945,8 @@ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) { } } -bool Subchannel::PublishTransportLocked() { +bool OldSubchannel::PublishTransportLocked() { auto socket_node = connecting_result_.transport->GetSocketNode(); - if (IsTransportStateWatcherEnabled()) { - connecting_result_.transport->StartWatch( - MakeRefCounted( - WeakRef(DEBUG_LOCATION, "state_watcher"))); - } if (connecting_result_.transport->filter_stack_transport() != nullptr) { // Construct channel stack. // Builder takes ownership of transport. @@ -976,41 +1016,1417 @@ bool Subchannel::PublishTransportLocked() { socket_node->AddParent(channelz_node_.get()); } } - if (!IsTransportStateWatcherEnabled()) { - connected_subchannel_->StartWatch( - pollset_set_, MakeOrphanable( - WeakRef(DEBUG_LOCATION, "state_watcher"))); - } + connected_subchannel_->StartWatch( + pollset_set_, MakeOrphanable( + WeakRef(DEBUG_LOCATION, "state_watcher") + .TakeAsSubclass())); // Report initial state. SetConnectivityStateLocked(GRPC_CHANNEL_READY, absl::Status()); return true; } -ChannelArgs Subchannel::MakeSubchannelArgs( - const ChannelArgs& channel_args, const ChannelArgs& address_args, - const RefCountedPtr& subchannel_pool, - const std::string& channel_default_authority) { - // Note that we start with the channel-level args and then apply the - // per-address args, so that if a value is present in both, the one - // in the channel-level args is used. This is particularly important - // for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow - // resolvers to set on a per-address basis only if the application - // did not explicitly set it at the channel level. - return channel_args.UnionWith(address_args) - .SetObject(subchannel_pool) - // If we haven't already set the default authority arg (i.e., it - // was not explicitly set by the application nor overridden by - // the resolver), add it from the channel's default. - .SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority) - // Remove channel args that should not affect subchannel - // uniqueness. - .Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME) - .Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING) - .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL) - .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP) - .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE) - // Remove all keys with the no-subchannel prefix. - .RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX); +RefCountedPtr OldSubchannel::CreateCall( + CreateCallArgs args, grpc_error_handle* error) { + auto connected_subchannel = GetConnectedSubchannel(); + if (connected_subchannel == nullptr) return nullptr; + return connected_subchannel->CreateCall(args, error); +} + +RefCountedPtr OldSubchannel::call_destination() { + auto connected_subchannel = GetConnectedSubchannel(); + if (connected_subchannel == nullptr) return nullptr; + return connected_subchannel->unstarted_call_destination(); +} + +void OldSubchannel::Ping(absl::AnyInvocable) { + // TODO(ctiller): Implement +} + +absl::Status OldSubchannel::Ping(grpc_closure* on_initiate, + grpc_closure* on_ack) { + auto connected_subchannel = GetConnectedSubchannel(); + if (connected_subchannel == nullptr) { + return absl::UnavailableError("no connection"); + } + connected_subchannel->Ping(on_initiate, on_ack); + return absl::OkStatus(); +} + +RefCountedPtr +OldSubchannel::GetConnectedSubchannel() { + MutexLock lock(&mu_); + return connected_subchannel_; +} + +// +// NewSubchannel::ConnectedSubchannel +// + +class NewSubchannel::ConnectedSubchannel + : public DualRefCounted { + public: + ~ConnectedSubchannel() override { + subchannel_.reset(DEBUG_LOCATION, "ConnectedSubchannel"); + } + + const ChannelArgs& args() const { return args_; } + NewSubchannel* subchannel() const { return subchannel_.get(); } + + virtual void StartWatch( + grpc_pollset_set* interested_parties, + OrphanablePtr watcher) = 0; + + // Methods for v3 stack. + virtual void Ping(absl::AnyInvocable on_ack) = 0; + virtual RefCountedPtr unstarted_call_destination() + const = 0; + + // Methods for legacy stack. + virtual RefCountedPtr CreateCall(CreateCallArgs args, + grpc_error_handle* error) = 0; + virtual void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) = 0; + + // Returns true if there is quota for another RPC to start on this + // connection. + GRPC_MUST_USE_RESULT bool SetMaxConcurrentStreams( + uint32_t max_concurrent_streams) { + return stream_limiter_.SetMaxConcurrentStreams(max_concurrent_streams); + } + + // Returns true if the RPC can start. + bool GetQuotaForRpc() { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << subchannel_.get() << " connection " << this + << ": attempting to get quota for an RPC..."; + bool result = stream_limiter_.GetQuotaForRpc(); + GRPC_TRACE_LOG(subchannel_call, INFO) << " quota acquired: " << result; + return result; + } + + // Returns true if this RPC finishing brought the connection below quota. + bool ReturnQuotaForRpc() { return stream_limiter_.ReturnQuotaForRpc(); } + + protected: + explicit ConnectedSubchannel(WeakRefCountedPtr subchannel, + const ChannelArgs& args, + uint32_t max_concurrent_streams) + : DualRefCounted( + GRPC_TRACE_FLAG_ENABLED(subchannel_refcount) ? "ConnectedSubchannel" + : nullptr), + subchannel_(std::move(subchannel)), + args_(args), + stream_limiter_(max_concurrent_streams) {} + + private: + WeakRefCountedPtr subchannel_; + ChannelArgs args_; + SubchannelStreamLimiter stream_limiter_; +}; + +// +// NewSubchannel::LegacyConnectedSubchannel +// + +class NewSubchannel::LegacyConnectedSubchannel final + : public ConnectedSubchannel { + public: + LegacyConnectedSubchannel( + WeakRefCountedPtr subchannel, + RefCountedPtr channel_stack, const ChannelArgs& args, + RefCountedPtr channelz_node, + uint32_t max_concurrent_streams) + : ConnectedSubchannel(std::move(subchannel), args, + max_concurrent_streams), + channelz_node_(std::move(channelz_node)), + channel_stack_(std::move(channel_stack)) {} + + void Orphaned() override { + channel_stack_.reset(DEBUG_LOCATION, "ConnectedSubchannel"); + } + + void StartWatch( + grpc_pollset_set* interested_parties, + OrphanablePtr watcher) override { + grpc_transport_op* op = grpc_make_transport_op(nullptr); + op->start_connectivity_watch = std::move(watcher); + op->start_connectivity_watch_state = GRPC_CHANNEL_READY; + op->bind_pollset_set = interested_parties; + grpc_channel_element* elem = + grpc_channel_stack_element(channel_stack_.get(), 0); + elem->filter->start_transport_op(elem, op); + } + + void Ping(absl::AnyInvocable) override { + Crash("call v3 ping method called in legacy impl"); + } + + RefCountedPtr unstarted_call_destination() + const override { + Crash("call v3 unstarted_call_destination method called in legacy impl"); + } + + RefCountedPtr CreateCall(CreateCallArgs args, + grpc_error_handle* error) override { + const size_t allocation_size = + GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)) + + channel_stack_->call_stack_size; + Arena* arena = args.arena; + return RefCountedPtr( + new (arena->Alloc(allocation_size)) SubchannelCall( + RefAsSubclass(), args, error)); + } + + void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) override { + grpc_transport_op* op = grpc_make_transport_op(nullptr); + op->send_ping.on_initiate = on_initiate; + op->send_ping.on_ack = on_ack; + grpc_channel_element* elem = + grpc_channel_stack_element(channel_stack_.get(), 0); + elem->filter->start_transport_op(elem, op); + } + + private: + class SubchannelCall final : public Call { + public: + SubchannelCall( + RefCountedPtr connected_subchannel, + CreateCallArgs args, grpc_error_handle* error); + + void StartTransportStreamOpBatch( + grpc_transport_stream_op_batch* batch) override; + + void SetAfterCallStackDestroy(grpc_closure* closure) override; + + // When refcount drops to 0, destroys itself and the associated call stack, + // but does NOT free the memory because it's in the call arena. + void Unref() override; + void Unref(const DebugLocation& location, const char* reason) override; + + private: + // If channelz is enabled, intercepts recv_trailing so that we may check the + // status and associate it to a subchannel. + void MaybeInterceptRecvTrailingMetadata( + grpc_transport_stream_op_batch* batch); + + static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); + + // Interface of RefCounted<>. + void IncrementRefCount() override; + void IncrementRefCount(const DebugLocation& location, + const char* reason) override; + + static void Destroy(void* arg, grpc_error_handle error); + + // Returns the quota for this RPC. If that brings the connection + // below quota, then try to drain the queue. + void MaybeReturnQuota(); + + RefCountedPtr connected_subchannel_; + grpc_closure* after_call_stack_destroy_ = nullptr; + // State needed to support channelz interception of recv trailing metadata. + grpc_closure recv_trailing_metadata_ready_; + grpc_closure* original_recv_trailing_metadata_ = nullptr; + grpc_metadata_batch* recv_trailing_metadata_ = nullptr; + Timestamp deadline_; + bool returned_quota_ = false; + }; + + RefCountedPtr channelz_node_; + RefCountedPtr channel_stack_; +}; + +// +// NewSubchannel::LegacyConnectedSubchannel::SubchannelCall +// + +NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::SubchannelCall( + RefCountedPtr connected_subchannel, + CreateCallArgs args, grpc_error_handle* error) + : connected_subchannel_(std::move(connected_subchannel)), + deadline_(args.deadline) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << connected_subchannel_->subchannel() << " connection " + << connected_subchannel_.get() << ": created call " << this; + grpc_call_stack* callstk = SUBCHANNEL_CALL_TO_CALL_STACK(this); + const grpc_call_element_args call_args = { + callstk, // call_stack + nullptr, // server_transport_data + args.start_time, // start_time + args.deadline, // deadline + args.arena, // arena + args.call_combiner // call_combiner + }; + *error = grpc_call_stack_init(connected_subchannel_->channel_stack_.get(), 1, + SubchannelCall::Destroy, this, &call_args); + if (GPR_UNLIKELY(!error->ok())) { + LOG(ERROR) << "error: " << StatusToString(*error); + return; + } + grpc_call_stack_set_pollset_or_pollset_set(callstk, args.pollent); + if (connected_subchannel_->channelz_node_ != nullptr) { + connected_subchannel_->channelz_node_->RecordCallStarted(); + } +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << connected_subchannel_->subchannel() << " connection " + << connected_subchannel_.get() << " call " << this << ": starting batch: " + << grpc_transport_stream_op_batch_string(batch, false); + MaybeInterceptRecvTrailingMetadata(batch); + grpc_call_stack* call_stack = SUBCHANNEL_CALL_TO_CALL_STACK(this); + grpc_call_element* top_elem = grpc_call_stack_element(call_stack, 0); + GRPC_TRACE_LOG(channel, INFO) + << "OP[" << top_elem->filter->name << ":" << top_elem + << "]: " << grpc_transport_stream_op_batch_string(batch, false); + top_elem->filter->start_transport_stream_op_batch(top_elem, batch); +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + SetAfterCallStackDestroy(grpc_closure* closure) { + GRPC_CHECK_EQ(after_call_stack_destroy_, nullptr); + GRPC_CHECK_NE(closure, nullptr); + after_call_stack_destroy_ = closure; +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref() { + GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), ""); +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::Unref( + const DebugLocation& /*location*/, const char* reason) { + GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason); +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall::Destroy( + void* arg, grpc_error_handle /*error*/) { + SubchannelCall* self = static_cast(arg); + // Just in case we didn't already take care of this in the + // recv_trailing_metadata callback, return the quota now. + self->MaybeReturnQuota(); + // Keep some members before destroying the subchannel call. + grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_; + RefCountedPtr connected_subchannel = + std::move(self->connected_subchannel_); + // Destroy the subchannel call. + self->~SubchannelCall(); + // Destroy the call stack. This should be after destroying the subchannel + // call, because call->after_call_stack_destroy(), if not null, will free + // the call arena. + grpc_call_stack_destroy(SUBCHANNEL_CALL_TO_CALL_STACK(self), nullptr, + after_call_stack_destroy); + // Automatically reset connected_subchannel. This should be after destroying + // the call stack, because destroying call stack needs access to the channel + // stack. +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + MaybeInterceptRecvTrailingMetadata(grpc_transport_stream_op_batch* batch) { + // only intercept payloads with recv trailing. + if (!batch->recv_trailing_metadata) return; + GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady, + this, grpc_schedule_on_exec_ctx); + // save some state needed for the interception callback. + GRPC_CHECK_EQ(recv_trailing_metadata_, nullptr); + recv_trailing_metadata_ = + batch->payload->recv_trailing_metadata.recv_trailing_metadata; + original_recv_trailing_metadata_ = + batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready; + batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready = + &recv_trailing_metadata_ready_; +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + RecvTrailingMetadataReady(void* arg, grpc_error_handle error) { + SubchannelCall* call = static_cast(arg); + GRPC_CHECK_NE(call->recv_trailing_metadata_, nullptr); + // Return MAX_CONCURRENT_STREAMS quota. + call->MaybeReturnQuota(); + // If channelz is enabled, record the success or failure of the call. + if (auto* channelz_node = call->connected_subchannel_->channelz_node_.get(); + channelz_node != nullptr) { + grpc_status_code status = GRPC_STATUS_OK; + GetCallStatus(&status, call->deadline_, call->recv_trailing_metadata_, + error); + GRPC_CHECK_NE(channelz_node, nullptr); + if (status == GRPC_STATUS_OK) { + channelz_node->RecordCallSucceeded(); + } else { + channelz_node->RecordCallFailed(); + } + } + Closure::Run(DEBUG_LOCATION, call->original_recv_trailing_metadata_, error); +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + MaybeReturnQuota() { + if (returned_quota_) return; // Already returned. + returned_quota_ = true; + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << connected_subchannel_->subchannel() << " connection " + << connected_subchannel_.get() << ": call " << this + << " complete, returning quota"; + if (connected_subchannel_->ReturnQuotaForRpc()) { + connected_subchannel_->subchannel()->RetryQueuedRpcs(); + } +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + IncrementRefCount() { + GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), ""); +} + +void NewSubchannel::LegacyConnectedSubchannel::SubchannelCall:: + IncrementRefCount(const DebugLocation& /*location*/, const char* reason) { + GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(this), reason); +} + +// +// NewSubchannel::QueuedCall +// + +class NewSubchannel::QueuedCall final : public Subchannel::Call { + public: + QueuedCall(WeakRefCountedPtr subchannel, CreateCallArgs args); + ~QueuedCall() override; + + void StartTransportStreamOpBatch( + grpc_transport_stream_op_batch* batch) override; + + void SetAfterCallStackDestroy(grpc_closure* closure) override; + + // Interface of RefCounted<>. + // When refcount drops to 0, the dtor is called, but we do not + // free memory, because it's allocated on the arena. + void Unref() override { + if (ref_count_.Unref()) this->~QueuedCall(); + } + void Unref(const DebugLocation& location, const char* reason) override { + if (ref_count_.Unref(location, reason)) this->~QueuedCall(); + } + + void ResumeOnConnectionLocked(ConnectedSubchannel* connected_subchannel) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(&NewSubchannel::mu_); + + void FailLocked(absl::Status status) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(&NewSubchannel::mu_); + + private: + // Allow RefCountedPtr<> to access IncrementRefCount(). + template + friend class RefCountedPtr; + + class Canceller; + + // Interface of RefCounted<>. + void IncrementRefCount() override { ref_count_.Ref(); } + void IncrementRefCount(const DebugLocation& location, + const char* reason) override { + ref_count_.Ref(location, reason); + } + + static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); + + RefCount ref_count_; + WeakRefCountedPtr subchannel_; + CreateCallArgs args_; + + // Note that unlike in the resolver and LB code, the subchannel code + // adds the call to the queue before adding batches to buffered_call_, + // so it's possible that the subchannel will get quota for the call + // and try to resume it before buffered_call_ contains any batches. + // In that case, we will not be holding the call combiner here, so we + // need a mutex for synchronization. + Mutex mu_ ABSL_ACQUIRED_AFTER(NewSubchannel::mu_); + grpc_closure* after_call_stack_destroy_ ABSL_GUARDED_BY(&mu_) = nullptr; + grpc_error_handle cancel_error_ ABSL_GUARDED_BY(&mu_); + BufferedCall buffered_call_ ABSL_GUARDED_BY(&mu_); + RefCountedPtr subchannel_call_ ABSL_GUARDED_BY(&mu_); + + // The queue holds a raw pointer to this QueuedCall object, and this + // is a reference to that pointer. If the call gets cancelled while + // in the queue, we set this pointer to null. The queuing code knows to + // ignore null pointers when draining the queue, which ensures that we + // don't try to dequeue this call after it's been cancelled. + QueuedCall*& queue_entry_; + + Canceller* canceller_ ABSL_GUARDED_BY(&NewSubchannel::mu_); + + std::atomic is_retriable_{false}; + grpc_closure recv_trailing_metadata_ready_; + grpc_closure* original_recv_trailing_metadata_ = nullptr; + grpc_metadata_batch* recv_trailing_metadata_ = nullptr; +}; + +// Handles call combiner cancellation. We don't yield the call combiner +// when queuing the call, which means that if the call gets cancelled +// while we're queued, the surface will be unable to immediately start the +// cancel_stream batch to let us know about the cancellation. Instead, +// this object registers itself with the call combiner to be called if +// the call is cancelled. In that case, it removes the call from the +// queue and fails any pending batches, thus immediately releasing the +// call combiner and allowing the cancellation to proceed. +class NewSubchannel::QueuedCall::Canceller final { + public: + explicit Canceller(RefCountedPtr call) : call_(std::move(call)) { + GRPC_CLOSURE_INIT(&cancel_, CancelLocked, this, nullptr); + call_->args_.call_combiner->SetNotifyOnCancel(&cancel_); + } + + private: + static void CancelLocked(void* arg, grpc_error_handle error) { + auto* self = static_cast(arg); + bool cancelled = false; + { + MutexLock lock(&self->call_->subchannel_->mu_); + if (self->call_->canceller_ == self && !error.ok()) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << self->call_->subchannel_.get() + << " queued call " << self->call_.get() + << ": call combiner canceller called"; + // Remove from queue. + self->call_->queue_entry_ = nullptr; + cancelled = true; + } + } + if (cancelled) { + MutexLock lock(&self->call_->mu_); + // Fail pending batches on the call. + self->call_->buffered_call_.Fail( + error, BufferedCall::YieldCallCombinerIfPendingBatchesFound); + } + delete self; + } + + RefCountedPtr call_; + grpc_closure cancel_; +}; + +NewSubchannel::QueuedCall::QueuedCall( + WeakRefCountedPtr subchannel, CreateCallArgs args) + : subchannel_(std::move(subchannel)), + args_(args), + buffered_call_(args_.call_combiner, &subchannel_call_trace), + queue_entry_(subchannel_->queued_calls_.emplace_back(this)) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << subchannel_.get() << ": created queued call " << this + << ", queue size=" << subchannel_->queued_calls_.size(); + canceller_ = new Canceller(Ref().TakeAsSubclass()); +} + +NewSubchannel::QueuedCall::~QueuedCall() { + GRPC_TRACE_LOG(subchannel_call, INFO) << "subchannel " << subchannel_.get() + << ": destroying queued call " << this; + if (after_call_stack_destroy_ != nullptr) { + ExecCtx::Run(DEBUG_LOCATION, after_call_stack_destroy_, absl::OkStatus()); + } +} + +void NewSubchannel::QueuedCall::SetAfterCallStackDestroy( + grpc_closure* closure) { + GRPC_CHECK_NE(closure, nullptr); + MutexLock lock(&mu_); + if (subchannel_call_ != nullptr) { + subchannel_call_->SetAfterCallStackDestroy(closure); + } else { + GRPC_CHECK_EQ(after_call_stack_destroy_, nullptr); + after_call_stack_destroy_ = closure; + } +} + +void NewSubchannel::QueuedCall::StartTransportStreamOpBatch( + grpc_transport_stream_op_batch* batch) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << subchannel_.get() << " queued call " << this + << ": starting batch: " + << grpc_transport_stream_op_batch_string(batch, false); + MutexLock lock(&mu_); + // If we already have a real subchannel call, pass the batch down to it. + if (subchannel_call_ != nullptr) { + subchannel_call_->StartTransportStreamOpBatch(batch); + return; + } + // Intercept recv_trailing_metadata, so that we can mark the call as + // eligible for transparent retries if we fail it due to all + // connections failing. + if (batch->recv_trailing_metadata) { + GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady, + this, grpc_schedule_on_exec_ctx); + GRPC_CHECK_EQ(recv_trailing_metadata_, nullptr); + recv_trailing_metadata_ = + batch->payload->recv_trailing_metadata.recv_trailing_metadata; + original_recv_trailing_metadata_ = + batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready; + batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready = + &recv_trailing_metadata_ready_; + } + // If we've previously been cancelled, immediately fail the new batch. + if (!cancel_error_.ok()) { + // Note: This will release the call combiner. + grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_, + args_.call_combiner); + return; + } + // Handle cancellation batches. + if (batch->cancel_stream) { + cancel_error_ = batch->payload->cancel_stream.cancel_error; + buffered_call_.Fail(cancel_error_, BufferedCall::NoYieldCallCombiner); + // Note: This will release the call combiner. + grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_, + args_.call_combiner); + return; + } + // Enqueue the batch. + buffered_call_.EnqueueBatch(batch); + // We hold on to the call combiner for the send_initial_metadata batch, + // but yield it for other batches. This ensures that we are holding on + // to the call combiner exactly once when we are ready to resume. + if (!batch->send_initial_metadata) { + GRPC_CALL_COMBINER_STOP(args_.call_combiner, + "batch does not include send_initial_metadata"); + } +} + +void NewSubchannel::QueuedCall::RecvTrailingMetadataReady( + void* arg, grpc_error_handle error) { + QueuedCall* call = static_cast(arg); + GRPC_CHECK_NE(call->recv_trailing_metadata_, nullptr); + if (call->is_retriable_.load()) { + call->recv_trailing_metadata_->Set(GrpcStreamNetworkState(), + GrpcStreamNetworkState::kNotSentOnWire); + } + Closure::Run(DEBUG_LOCATION, call->original_recv_trailing_metadata_, error); +} + +void NewSubchannel::QueuedCall::ResumeOnConnectionLocked( + ConnectedSubchannel* connected_subchannel) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << subchannel_.get() << " queued call " << this + << ": resuming on connected_subchannel " << connected_subchannel; + canceller_ = nullptr; + queue_entry_ = nullptr; + MutexLock lock(&mu_); + grpc_error_handle error; + subchannel_call_ = connected_subchannel->CreateCall(args_, &error); + if (after_call_stack_destroy_ != nullptr) { + subchannel_call_->SetAfterCallStackDestroy(after_call_stack_destroy_); + after_call_stack_destroy_ = nullptr; + } + // It's possible that the subchannel will get quota for the call + // and try to resume it before buffered_call_ contains any batches. + // In that case, we will not be holding the call combiner here, so we + // must not yeild it. That's why we use + // YieldCallCombinerIfPendingBatchesFound here. + if (!error.ok()) { + buffered_call_.Fail(error, + BufferedCall::YieldCallCombinerIfPendingBatchesFound); + } else { + buffered_call_.Resume( + [subchannel_call = + subchannel_call_](grpc_transport_stream_op_batch* batch) { + // This will release the call combiner. + subchannel_call->StartTransportStreamOpBatch(batch); + }, + BufferedCall::YieldCallCombinerIfPendingBatchesFound); + } +} + +void NewSubchannel::QueuedCall::FailLocked(absl::Status status) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << subchannel_.get() << " queued call " << this + << ": failing: " << status; + canceller_ = nullptr; + queue_entry_ = nullptr; + is_retriable_.store(true); + MutexLock lock(&mu_); + cancel_error_ = status; + buffered_call_.Fail(status, + BufferedCall::YieldCallCombinerIfPendingBatchesFound); +} + +// +// NewSubchannel::NewConnectedSubchannel +// + +class NewSubchannel::NewConnectedSubchannel final : public ConnectedSubchannel { + public: + class TransportCallDestination final : public CallDestination { + public: + explicit TransportCallDestination(OrphanablePtr transport) + : transport_(std::move(transport)) {} + + ClientTransport* transport() { return transport_.get(); } + + void HandleCall(CallHandler handler) override { + transport_->StartCall(std::move(handler)); + } + + void Orphaned() override { transport_.reset(); } + + private: + OrphanablePtr transport_; + }; + + NewConnectedSubchannel( + WeakRefCountedPtr subchannel, + RefCountedPtr call_destination, + RefCountedPtr transport, + const ChannelArgs& args, uint32_t max_concurrent_streams) + : ConnectedSubchannel(std::move(subchannel), args, + max_concurrent_streams), + call_destination_(std::move(call_destination)), + transport_(std::move(transport)) {} + + void Orphaned() override { + call_destination_.reset(); + transport_.reset(); + } + + void StartWatch( + grpc_pollset_set*, + OrphanablePtr watcher) override { + transport_->transport()->StartConnectivityWatch(std::move(watcher)); + } + + void Ping(absl::AnyInvocable) override { + // TODO(ctiller): add new transport API for this in v3 stack + Crash("not implemented"); + } + + RefCountedPtr unstarted_call_destination() + const override { + return call_destination_; + } + + RefCountedPtr CreateCall(CreateCallArgs, grpc_error_handle*) override { + Crash("legacy CreateCall() called on v3 impl"); + } + + void Ping(grpc_closure*, grpc_closure*) override { + Crash("legacy ping method called in call v3 impl"); + } + + private: + RefCountedPtr call_destination_; + RefCountedPtr transport_; +}; + +// +// NewSubchannel::ConnectionStateWatcher +// + +class NewSubchannel::ConnectionStateWatcher final + : public Transport::StateWatcher { + public: + explicit ConnectionStateWatcher( + WeakRefCountedPtr connected_subchannel) + : connected_subchannel_(std::move(connected_subchannel)) {} + + void OnDisconnect(absl::Status status, + DisconnectInfo disconnect_info) override { + NewSubchannel* subchannel = connected_subchannel_->subchannel(); + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << subchannel << " " << subchannel->key_.ToString() + << ": connected subchannel " << connected_subchannel_.get() + << " reports disconnection: " << status; + MutexLock lock(&subchannel->mu_); + // Handle keepalive update. + if (disconnect_info.keepalive_time.has_value()) { + subchannel->ThrottleKeepaliveTimeLocked(*disconnect_info.keepalive_time); + subchannel->watcher_list_.NotifyOnKeepaliveUpdateLocked( + *disconnect_info.keepalive_time); + } + // Remove the connection from the subchannel's list of connections. + subchannel->RemoveConnectionLocked(connected_subchannel_.get()); + // If this was the last connection, then fail all queued RPCs and + // update the connectivity state. + if (subchannel->connections_.empty()) { + subchannel->FailAllQueuedRpcsLocked( + absl::UnavailableError("subchannel lost all connections")); + subchannel->MaybeUpdateConnectivityStateLocked(); + } else { + // Otherwise, retry queued RPCs, which may trigger a new + // connection attempt. + subchannel->RetryQueuedRpcsLocked(); + } + } + + void OnPeerMaxConcurrentStreamsUpdate( + uint32_t max_concurrent_streams, + std::unique_ptr /*on_done*/) + override { + NewSubchannel* subchannel = connected_subchannel_->subchannel(); + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << subchannel << " " << subchannel->key_.ToString() + << ": connection " << connected_subchannel_.get() + << ": setting MAX_CONCURRENT_STREAMS=" << max_concurrent_streams; + if (connected_subchannel_->SetMaxConcurrentStreams( + max_concurrent_streams)) { + subchannel->RetryQueuedRpcs(); + } + } + + grpc_pollset_set* interested_parties() const override { + return connected_subchannel_->subchannel()->pollset_set_; + } + + private: + WeakRefCountedPtr connected_subchannel_; +}; + +// +// NewSubchannel::ConnectivityStateWatcherList +// + +void NewSubchannel::ConnectivityStateWatcherList::AddWatcherLocked( + RefCountedPtr watcher) { + watchers_.insert(std::move(watcher)); +} + +void NewSubchannel::ConnectivityStateWatcherList::RemoveWatcherLocked( + ConnectivityStateWatcherInterface* watcher) { + watchers_.erase(watcher); +} + +void NewSubchannel::ConnectivityStateWatcherList::NotifyLocked( + grpc_connectivity_state state, const absl::Status& status) { + for (const auto& watcher : watchers_) { + subchannel_->work_serializer_.Run([watcher, state, status]() { + watcher->OnConnectivityStateChange(state, status); + }); + } +} + +void NewSubchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked( + Duration new_keepalive_time) { + for (const auto& watcher : watchers_) { + subchannel_->work_serializer_.Run([watcher, new_keepalive_time]() { + watcher->OnKeepaliveUpdate(new_keepalive_time); + }); + } +} + +uint32_t +NewSubchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel() + const { + uint32_t max_connections_per_subchannel = 1; + for (const auto& watcher : watchers_) { + max_connections_per_subchannel = + std::max(max_connections_per_subchannel, + watcher->max_connections_per_subchannel()); + } + return max_connections_per_subchannel; +} + +// +// NewSubchannel +// + +NewSubchannel::NewSubchannel(SubchannelKey key, + OrphanablePtr connector, + const ChannelArgs& args) + : key_(std::move(key)), + created_from_endpoint_(args.Contains(GRPC_ARG_SUBCHANNEL_ENDPOINT)), + args_(args), + pollset_set_(grpc_pollset_set_create()), + connector_(std::move(connector)), + watcher_list_(this), + work_serializer_(args_.GetObjectRef()), + backoff_(ParseArgsForBackoffValues(args_, &min_connect_timeout_)), + event_engine_(args_.GetObjectRef()) { + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() << ": created"; + // A grpc_init is added here to ensure that grpc_shutdown does not happen + // until the subchannel is destroyed. Subchannels can persist longer than + // channels because they maybe reused/shared among multiple channels. As a + // result the subchannel destruction happens asynchronously to channel + // destruction. If the last channel destruction triggers a grpc_shutdown + // before the last subchannel destruction, then there maybe race conditions + // triggering segmentation faults. To prevent this issue, we call a + // grpc_init here and a grpc_shutdown in the subchannel destructor. + InitInternally(); + global_stats().IncrementClientSubchannelsCreated(); + GRPC_CLOSURE_INIT(&on_connecting_finished_, OnConnectingFinished, this, + grpc_schedule_on_exec_ctx); + // Check proxy mapper to determine address to connect to and channel + // args to use. + address_for_connect_ = CoreConfiguration::Get() + .proxy_mapper_registry() + .MapAddress(key_.address(), &args_) + .value_or(key_.address()); + // Initialize channelz. + const bool channelz_enabled = args_.GetBool(GRPC_ARG_ENABLE_CHANNELZ) + .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT); + if (channelz_enabled) { + const size_t channel_tracer_max_memory = Clamp( + args_.GetInt(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE) + .value_or(GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT), + 0, INT_MAX); + channelz_node_ = MakeRefCounted( + grpc_sockaddr_to_uri(&key_.address()) + .value_or(""), + channel_tracer_max_memory); + GRPC_CHANNELZ_LOG(channelz_node_) << "subchannel created"; + channelz_node_->SetChannelArgs(args_); + args_ = args_.SetObject(channelz_node_); + } +} + +NewSubchannel::~NewSubchannel() { + if (channelz_node_ != nullptr) { + GRPC_CHANNELZ_LOG(channelz_node_) << "Subchannel destroyed"; + channelz_node_->UpdateConnectivityState(GRPC_CHANNEL_SHUTDOWN); + } + connector_.reset(); + grpc_pollset_set_destroy(pollset_set_); + // grpc_shutdown is called here because grpc_init is called in the ctor. + ShutdownInternally(); +} + +RefCountedPtr NewSubchannel::Create( + OrphanablePtr connector, + const grpc_resolved_address& address, const ChannelArgs& args) { + SubchannelKey key(address, args); + auto* subchannel_pool = args.GetObject(); + GRPC_CHECK_NE(subchannel_pool, nullptr); + RefCountedPtr c = + subchannel_pool->FindSubchannel(key).TakeAsSubclass(); + if (c != nullptr) { + return c; + } + c = MakeRefCounted(std::move(key), std::move(connector), args); + if (c->created_from_endpoint_) { + // We don't interact with the subchannel pool in this case. + // Instead, we unconditionally return the newly created subchannel. + // Before returning, we explicitly trigger a connection attempt + // by calling RequestConnection(), which sets the subchannel's + // connectivity state to CONNECTING. + c->RequestConnection(); + return c; + } + // Try to register the subchannel before setting the subchannel pool. + // Otherwise, in case of a registration race, unreffing c in + // RegisterSubchannel() will cause c to be tried to be unregistered, while + // its key maps to a different subchannel. + RefCountedPtr registered = + subchannel_pool->RegisterSubchannel(c->key_, c) + .TakeAsSubclass(); + if (registered == c) c->subchannel_pool_ = subchannel_pool->Ref(); + return registered; +} + +void NewSubchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) { + MutexLock lock(&mu_); + ThrottleKeepaliveTimeLocked(new_keepalive_time); +} + +void NewSubchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) { + // Only update the value if the new keepalive time is larger. + if (new_keepalive_time > keepalive_time_) { + keepalive_time_ = new_keepalive_time; + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": throttling keepalive time to " << new_keepalive_time; + args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, new_keepalive_time.millis()); + } +} + +channelz::SubchannelNode* NewSubchannel::channelz_node() { + return channelz_node_.get(); +} + +void NewSubchannel::WatchConnectivityState( + RefCountedPtr watcher) { + MutexLock lock(&mu_); + grpc_pollset_set* interested_parties = watcher->interested_parties(); + if (interested_parties != nullptr) { + grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties); + } + work_serializer_.Run( + [watcher, state = state_, status = ConnectivityStatusToReportLocked()]() { + watcher->OnConnectivityStateChange(state, status); + }, + DEBUG_LOCATION); + watcher_list_.AddWatcherLocked(std::move(watcher)); + // The max_connections_per_subchannel setting may have changed, so + // this may trigger another connection attempt. + RetryQueuedRpcsLocked(); +} + +void NewSubchannel::CancelConnectivityStateWatch( + ConnectivityStateWatcherInterface* watcher) { + MutexLock lock(&mu_); + grpc_pollset_set* interested_parties = watcher->interested_parties(); + if (interested_parties != nullptr) { + grpc_pollset_set_del_pollset_set(pollset_set_, interested_parties); + } + watcher_list_.RemoveWatcherLocked(watcher); +} + +void NewSubchannel::RequestConnection() { + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": RequestConnection()"; + MutexLock lock(&mu_); + if (state_ == GRPC_CHANNEL_IDLE) { + StartConnectingLocked(); + } +} + +void NewSubchannel::ResetBackoff() { + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() << ": ResetBackoff()"; + // Hold a ref to ensure cancellation and subsequent deletion of the closure + // does not eliminate the last ref and destroy the Subchannel before the + // method returns. + auto self = WeakRef(DEBUG_LOCATION, "ResetBackoff"); + MutexLock lock(&mu_); + backoff_.Reset(); + if (retry_timer_handle_.has_value() && + event_engine_->Cancel(*retry_timer_handle_)) { + OnRetryTimerLocked(); + } else if (connection_attempt_in_flight_) { + next_attempt_time_ = Timestamp::Now(); + } +} + +void NewSubchannel::Orphaned() { + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() << ": shutting down"; + // The subchannel_pool is only used once here in this subchannel, so the + // access can be outside of the lock. + if (subchannel_pool_ != nullptr) { + subchannel_pool_->UnregisterSubchannel(key_, this); + subchannel_pool_.reset(); + } + MutexLock lock(&mu_); + GRPC_CHECK(!shutdown_); + shutdown_ = true; + connector_.reset(); + connections_.clear(); + if (retry_timer_handle_.has_value()) { + event_engine_->Cancel(*retry_timer_handle_); + } +} + +void NewSubchannel::GetOrAddDataProducer( + UniqueTypeName type, + std::function get_or_add) { + MutexLock lock(&mu_); + auto it = data_producer_map_.emplace(type, nullptr).first; + get_or_add(&it->second); +} + +void NewSubchannel::RemoveDataProducer(DataProducerInterface* data_producer) { + MutexLock lock(&mu_); + auto it = data_producer_map_.find(data_producer->type()); + if (it != data_producer_map_.end() && it->second == data_producer) { + data_producer_map_.erase(it); + } +} + +namespace { + +absl::Status PrependAddressToStatusMessage(const SubchannelKey& key, + const absl::Status& status) { + return AddMessagePrefix( + grpc_sockaddr_to_uri(&key.address()).value_or(""), + status); +} + +} // namespace + +void NewSubchannel::SetLastFailureLocked(const absl::Status& status) { + // Augment status message to include IP address. + last_failure_status_ = PrependAddressToStatusMessage(key_, status); +} + +grpc_connectivity_state NewSubchannel::ComputeConnectivityStateLocked() const { + // If we have at least one connection, report READY. + if (!connections_.empty()) return GRPC_CHANNEL_READY; + // If we were created from an endpoint and the connection is closed, + // we have no way to create a new connection, so we report + // TRANSIENT_FAILURE, and we'll never leave that state. + if (created_from_endpoint_) return GRPC_CHANNEL_TRANSIENT_FAILURE; + // If there's a connection attempt in flight, report CONNECTING. + if (connection_attempt_in_flight_) return GRPC_CHANNEL_CONNECTING; + // If we're in backoff delay, report TRANSIENT_FAILURE. + if (retry_timer_handle_.has_value()) { + return GRPC_CHANNEL_TRANSIENT_FAILURE; + } + // Otherwise, report IDLE. + return GRPC_CHANNEL_IDLE; +} + +absl::Status NewSubchannel::ConnectivityStatusToReportLocked() const { + // Report status in TRANSIENT_FAILURE state. + if (state_ == GRPC_CHANNEL_TRANSIENT_FAILURE) return last_failure_status_; + return absl::OkStatus(); +} + +void NewSubchannel::MaybeUpdateConnectivityStateLocked() { + // Determine what state we are in. + grpc_connectivity_state new_state = ComputeConnectivityStateLocked(); + // If we're already in that state, no need to report a change. + if (new_state == state_) return; + state_ = new_state; + absl::Status status = ConnectivityStatusToReportLocked(); + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": reporting connectivity state " << ConnectivityStateName(new_state) + << ", status: " << status; + // Update channelz. + if (channelz_node_ != nullptr) { + channelz_node_->UpdateConnectivityState(new_state); + if (status.ok()) { + GRPC_CHANNELZ_LOG(channelz_node_) + << "Subchannel connectivity state changed to " + << ConnectivityStateName(new_state); + } else { + GRPC_CHANNELZ_LOG(channelz_node_) + << "Subchannel connectivity state changed to " + << ConnectivityStateName(new_state) << ": " << status; + } + } + // Notify watchers. + watcher_list_.NotifyLocked(new_state, status); +} + +bool NewSubchannel::RemoveConnectionLocked( + ConnectedSubchannel* connected_subchannel) { + for (auto it = connections_.begin(); it != connections_.end(); ++it) { + if (*it == connected_subchannel) { + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": removing connection " << connected_subchannel; + connections_.erase(it); + return true; + } + } + return false; +} + +void NewSubchannel::OnRetryTimer() { + MutexLock lock(&mu_); + OnRetryTimerLocked(); +} + +void NewSubchannel::OnRetryTimerLocked() { + retry_timer_handle_.reset(); + if (shutdown_) return; + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": backoff delay elapsed"; + RetryQueuedRpcsLocked(); // May trigger another connection attempt. + MaybeUpdateConnectivityStateLocked(); +} + +void NewSubchannel::StartConnectingLocked() { + // Set next attempt time. + const Timestamp now = Timestamp::Now(); + const Timestamp min_deadline = now + min_connect_timeout_; + next_attempt_time_ = now + backoff_.NextAttemptDelay(); + // Change connectivity state if needed. + connection_attempt_in_flight_ = true; + MaybeUpdateConnectivityStateLocked(); + // Start connection attempt. + SubchannelConnector::Args args; + args.address = &address_for_connect_; + args.interested_parties = pollset_set_; + args.deadline = std::max(next_attempt_time_, min_deadline); + args.channel_args = + args_.Set(GRPC_ARG_MAX_CONCURRENT_STREAMS_REJECT_ON_CLIENT, true); + WeakRef(DEBUG_LOCATION, "Connect").release(); // Ref held by callback. + connector_->Connect(args, &connecting_result_, &on_connecting_finished_); +} + +void NewSubchannel::OnConnectingFinished(void* arg, grpc_error_handle error) { + WeakRefCountedPtr c(static_cast(arg)); + { + MutexLock lock(&c->mu_); + c->OnConnectingFinishedLocked(error); + } + c.reset(DEBUG_LOCATION, "Connect"); +} + +void NewSubchannel::OnConnectingFinishedLocked(grpc_error_handle error) { + connection_attempt_in_flight_ = false; + if (shutdown_) { + connecting_result_.Reset(); + return; + } + // If we didn't get a transport or we fail to publish it, report + // TRANSIENT_FAILURE and start the retry timer. + // Note that if the connection attempt took longer than the backoff + // time, then the timer will fire immediately, and we will quickly + // transition back to IDLE. + if (connecting_result_.transport == nullptr || !PublishTransportLocked()) { + const Duration time_until_next_attempt = + next_attempt_time_ - Timestamp::Now(); + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": connect failed (" << StatusToString(error) << ")" + << (created_from_endpoint_ + ? ", no retry will be attempted (created from endpoint); " + "remaining in TRANSIENT_FAILURE" + : ", backing off for " + + std::to_string(time_until_next_attempt.millis()) + " ms"); + if (!created_from_endpoint_) { + retry_timer_handle_ = event_engine_->RunAfter( + time_until_next_attempt, + [self = WeakRef(DEBUG_LOCATION, "RetryTimer") + .TakeAsSubclass()]() mutable { + { + ExecCtx exec_ctx; + self->OnRetryTimer(); + // Subchannel deletion might require an active ExecCtx. So if + // self.reset() is not called here, the WeakRefCountedPtr + // destructor may run after the ExecCtx declared in the callback + // is destroyed. Since subchannel may get destroyed when the + // WeakRefCountedPtr destructor runs, it may not have an active + // ExecCtx - thus leading to crashes. + self.reset(); + } + }); + } + SetLastFailureLocked(grpc_error_to_absl_status(error)); + MaybeUpdateConnectivityStateLocked(); + } +} + +bool NewSubchannel::PublishTransportLocked() { + auto socket_node = connecting_result_.transport->GetSocketNode(); + Transport* transport = connecting_result_.transport; + RefCountedPtr connected_subchannel; + if (connecting_result_.transport->filter_stack_transport() != nullptr) { + // Construct channel stack. + // Builder takes ownership of transport. + ChannelStackBuilderImpl builder( + "subchannel", GRPC_CLIENT_SUBCHANNEL, + connecting_result_.channel_args.SetObject( + std::exchange(connecting_result_.transport, nullptr))); + if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) { + return false; + } + absl::StatusOr> stack = builder.Build(); + if (!stack.ok()) { + connecting_result_.Reset(); + LOG(ERROR) << "subchannel " << this << " " << key_.ToString() + << ": error initializing subchannel stack: " << stack.status(); + return false; + } + connected_subchannel = MakeRefCounted( + WeakRef().TakeAsSubclass(), std::move(*stack), args_, + channelz_node_, connecting_result_.max_concurrent_streams); + } else { + OrphanablePtr transport( + std::exchange(connecting_result_.transport, nullptr) + ->client_transport()); + InterceptionChainBuilder builder( + connecting_result_.channel_args.SetObject(transport.get())); + if (channelz_node_ != nullptr) { + // TODO(ctiller): If/when we have a good way to access the subchannel + // from a filter (maybe GetContext?), consider replacing + // these two hooks with a filter so that we can avoid storing two + // separate refs to the channelz node in each connection. + builder.AddOnClientInitialMetadata( + [channelz_node = channelz_node_](ClientMetadata&) { + channelz_node->RecordCallStarted(); + }); + builder.AddOnServerTrailingMetadata( + [channelz_node = channelz_node_](ServerMetadata& metadata) { + if (IsStatusOk(metadata)) { + channelz_node->RecordCallSucceeded(); + } else { + channelz_node->RecordCallFailed(); + } + }); + } + CoreConfiguration::Get().channel_init().AddToInterceptionChainBuilder( + GRPC_CLIENT_SUBCHANNEL, builder); + auto transport_destination = + MakeRefCounted( + std::move(transport)); + auto call_destination = builder.Build(transport_destination); + if (!call_destination.ok()) { + connecting_result_.Reset(); + LOG(ERROR) << "subchannel " << this << " " << key_.ToString() + << ": error initializing subchannel stack: " + << call_destination.status(); + return false; + } + connected_subchannel = MakeRefCounted( + WeakRef().TakeAsSubclass(), std::move(*call_destination), + std::move(transport_destination), args_, + connecting_result_.max_concurrent_streams); + } + connecting_result_.Reset(); + // Reset backoff. + backoff_.Reset(); + // Publish. + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": new connected subchannel at " << connected_subchannel.get() + << ", max_concurrent_streams=" + << connecting_result_.max_concurrent_streams; + if (channelz_node_ != nullptr) { + if (socket_node != nullptr) { + socket_node->AddParent(channelz_node_.get()); + } + } + transport->StartWatch( + MakeRefCounted(connected_subchannel->WeakRef())); + connections_.push_back(std::move(connected_subchannel)); + RetryQueuedRpcsLocked(); + MaybeUpdateConnectivityStateLocked(); + return true; +} + +RefCountedPtr NewSubchannel::CreateCall( + CreateCallArgs args, grpc_error_handle* error) { + RefCountedPtr connected_subchannel; + { + MutexLock lock(&mu_); + // If we hit a race condition where the LB picker chose the subchannel + // at the same time as the last connection was closed, then tell the + // channel to re-queue the pick. + if (connections_.empty()) return nullptr; + // Otherwise, choose a connection. + // Optimization: If the queue is non-empty, then we know there won't be + // a connection that we can send this RPC on, so we don't bother looking. + if (queued_calls_.empty()) connected_subchannel = ChooseConnectionLocked(); + // If we don't have a connection to send the RPC on, queue it. + if (connected_subchannel == nullptr) { + // The QueuedCall object adds itself to queued_calls_. + auto queued_call = RefCountedPtr(args.arena->New( + WeakRef().TakeAsSubclass(), args)); + MaybeFailAllQueuedRpcsLocked(); + return queued_call; + } + } + // Found a connection, so create a call on it. + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": creating call on connection " << connected_subchannel.get(); + return connected_subchannel->CreateCall(args, error); +} + +RefCountedPtr NewSubchannel::call_destination() { + // TODO(roth): Implement connection scaling for v3. + RefCountedPtr connected_subchannel; + { + MutexLock lock(&mu_); + if (!connections_.empty()) connected_subchannel = connections_[0]; + } + if (connected_subchannel == nullptr) return nullptr; + return connected_subchannel->unstarted_call_destination(); +} + +namespace { +bool g_test_only_always_send_calls_to_transport = false; +} // namespace + +void TestOnlySetSubchannelAlwaysSendCallsToTransport(bool enabled) { + g_test_only_always_send_calls_to_transport = enabled; +} + +RefCountedPtr +NewSubchannel::ChooseConnectionLocked() { + // Try to find a connection with quota available for the RPC. + for (auto& connection : connections_) { + if (connection->GetQuotaForRpc()) return connection; + } + // TODO(roth): This is an ugly hack for the chttp2 streams_not_seen test. + // Find a better way to do this. + if (g_test_only_always_send_calls_to_transport && !connections_.empty()) { + return connections_[0]; + } + // If we didn't find a connection for the RPC, we'll queue it. + // Trigger a new connection attempt if we need to scale up the number + // of connections. + if (connections_.size() < watcher_list_.GetMaxConnectionsPerSubchannel() && + !connection_attempt_in_flight_ && !retry_timer_handle_.has_value()) { + GRPC_TRACE_LOG(subchannel, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": adding a new connection"; + StartConnectingLocked(); + } + return nullptr; +} + +void NewSubchannel::RetryQueuedRpcs() { + MutexLock lock(&mu_); + if (shutdown_) return; + RetryQueuedRpcsLocked(); +} + +void NewSubchannel::RetryQueuedRpcsLocked() { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << this << " " << key_.ToString() + << ": retrying RPCs from queue, queue size=" << queued_calls_.size(); + while (!queued_calls_.empty()) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << " retrying first queued RPC, queue size=" << queued_calls_.size(); + QueuedCall* queued_call = queued_calls_.front(); + if (queued_call == nullptr) { + GRPC_TRACE_LOG(subchannel_call, INFO) << " RPC already cancelled"; + } else { + auto connected_subchannel = ChooseConnectionLocked(); + // If we don't have a connection to dispatch this RPC on, then + // we've drained as much from the queue as we can, so stop here. + if (connected_subchannel == nullptr) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << " no usable connection found; will stop retrying from queue"; + MaybeFailAllQueuedRpcsLocked(); + return; + } + GRPC_TRACE_LOG(subchannel_call, INFO) + << " starting RPC on connection " << connected_subchannel.get(); + queued_call->ResumeOnConnectionLocked(connected_subchannel.get()); + } + queued_calls_.pop_front(); + } +} + +void NewSubchannel::MaybeFailAllQueuedRpcsLocked() { + bool fail_instead_of_queuing = + args_.GetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS_REJECT_ON_CLIENT) + .value_or(false); + if (fail_instead_of_queuing && + connections_.size() == watcher_list_.GetMaxConnectionsPerSubchannel()) { + FailAllQueuedRpcsLocked( + absl::ResourceExhaustedError("subchannel at max number of connections, " + "but no quota to send RPC")); + } +} + +void NewSubchannel::FailAllQueuedRpcsLocked(absl::Status status) { + GRPC_TRACE_LOG(subchannel_call, INFO) + << "subchannel " << this << ": failing all queued RPCs: " << status; + status = PrependAddressToStatusMessage(key_, status); + for (QueuedCall* queued_call : queued_calls_) { + if (queued_call != nullptr) queued_call->FailLocked(status); + } + queued_calls_.clear(); +} + +void NewSubchannel::Ping(absl::AnyInvocable) { + // TODO(ctiller): Implement +} + +absl::Status NewSubchannel::Ping(grpc_closure* on_initiate, + grpc_closure* on_ack) { + RefCountedPtr connected_subchannel; + { + MutexLock lock(&mu_); + if (!connections_.empty()) connected_subchannel = connections_[0]; + } + if (connected_subchannel == nullptr) { + return absl::UnavailableError("no connection"); + } + connected_subchannel->Ping(on_initiate, on_ack); + return absl::OkStatus(); } } // namespace grpc_core diff --git a/deps/grpc/src/core/client_channel/subchannel.h b/deps/grpc/src/core/client_channel/subchannel.h index fea0afbc904..fa8f15f5640 100644 --- a/deps/grpc/src/core/client_channel/subchannel.h +++ b/deps/grpc/src/core/client_channel/subchannel.h @@ -58,107 +58,12 @@ #include "absl/container/flat_hash_set.h" #include "absl/status/status.h" -/** This arg is intended for internal use only, primarily - * for passing endpoint information during subchannel creation or connection. - */ +// This arg is intended for internal use only, primarily for passing +// endpoint information during subchannel creation or connection. #define GRPC_ARG_SUBCHANNEL_ENDPOINT "grpc.internal.subchannel_endpoint" namespace grpc_core { -class SubchannelCall; - -class ConnectedSubchannel : public RefCounted { - public: - const ChannelArgs& args() const { return args_; } - - // TODO(roth): Remove this when transport_state_watcher experiment is removed. - virtual void StartWatch( - grpc_pollset_set* interested_parties, - OrphanablePtr watcher) = 0; - - // Methods for v3 stack. - virtual void Ping(absl::AnyInvocable on_ack) = 0; - virtual RefCountedPtr unstarted_call_destination() - const = 0; - - // Methods for legacy stack. - virtual grpc_channel_stack* channel_stack() const = 0; - virtual size_t GetInitialCallSizeEstimate() const = 0; - virtual void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) = 0; - - virtual channelz::SubchannelNode* channelz_node() const = 0; - - protected: - explicit ConnectedSubchannel(const ChannelArgs& args); - - private: - ChannelArgs args_; -}; - -class LegacyConnectedSubchannel; - -// Implements the interface of RefCounted<>. -class SubchannelCall final { - public: - struct Args { - RefCountedPtr connected_subchannel; - grpc_polling_entity* pollent; - gpr_cycle_counter start_time; - Timestamp deadline; - Arena* arena; - CallCombiner* call_combiner; - }; - static RefCountedPtr Create(Args args, - grpc_error_handle* error); - - // Continues processing a transport stream op batch. - void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch); - - // Returns the call stack of the subchannel call. - grpc_call_stack* GetCallStack(); - - // Sets the 'then_schedule_closure' argument for call stack destruction. - // Must be called once per call. - void SetAfterCallStackDestroy(grpc_closure* closure); - - // Interface of RefCounted<>. - GRPC_MUST_USE_RESULT RefCountedPtr Ref(); - GRPC_MUST_USE_RESULT RefCountedPtr Ref( - const DebugLocation& location, const char* reason); - // When refcount drops to 0, destroys itself and the associated call stack, - // but does NOT free the memory because it's in the call arena. - void Unref(); - void Unref(const DebugLocation& location, const char* reason); - - private: - // Allow RefCountedPtr<> to access IncrementRefCount(). - template - friend class RefCountedPtr; - - SubchannelCall(Args args, grpc_error_handle* error); - - // If channelz is enabled, intercepts recv_trailing so that we may check the - // status and associate it to a subchannel. - void MaybeInterceptRecvTrailingMetadata( - grpc_transport_stream_op_batch* batch); - - static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error); - - // Interface of RefCounted<>. - void IncrementRefCount(); - void IncrementRefCount(const DebugLocation& location, const char* reason); - - static void Destroy(void* arg, grpc_error_handle error); - - RefCountedPtr connected_subchannel_; - grpc_closure* after_call_stack_destroy_ = nullptr; - // State needed to support channelz interception of recv trailing metadata. - grpc_closure recv_trailing_metadata_ready_; - grpc_closure* original_recv_trailing_metadata_ = nullptr; - grpc_metadata_batch* recv_trailing_metadata_ = nullptr; - Timestamp deadline_; -}; - // A subchannel that knows how to connect to exactly one target address. It // provides a target for load balancing. // @@ -166,7 +71,7 @@ class SubchannelCall final { // different from the SubchannelInterface that is exposed to LB policy // implementations. The client channel provides an adaptor class // (SubchannelWrapper) that "converts" between the two. -class Subchannel final : public DualRefCounted { +class Subchannel : public DualRefCounted { public: class ConnectivityStateWatcherInterface : public RefCounted { @@ -199,27 +104,153 @@ class Subchannel final : public DualRefCounted { virtual UniqueTypeName type() const = 0; }; + // A call object for the v1 stack. + // Provides the same interface as RefCounted<>. + class Call { + public: + virtual ~Call() = default; + + // Continues processing a transport stream op batch. + virtual void StartTransportStreamOpBatch( + grpc_transport_stream_op_batch* batch) = 0; + + // Sets the 'then_schedule_closure' argument for call stack destruction. + // Must be called once per call. + virtual void SetAfterCallStackDestroy(grpc_closure* closure) = 0; + + // Interface of RefCounted<>. + GRPC_MUST_USE_RESULT RefCountedPtr Ref(); + GRPC_MUST_USE_RESULT RefCountedPtr Ref(const DebugLocation& location, + const char* reason); + virtual void Unref() = 0; + virtual void Unref(const DebugLocation& location, const char* reason) = 0; + + private: + // Allow RefCountedPtr<> to access IncrementRefCount(). + template + friend class RefCountedPtr; + + // Interface of RefCounted<>. + virtual void IncrementRefCount() = 0; + virtual void IncrementRefCount(const DebugLocation& location, + const char* reason) = 0; + }; + + // Creates a subchannel. + static RefCountedPtr Create( + OrphanablePtr connector, + const grpc_resolved_address& address, const ChannelArgs& args); + + // Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time + // is larger than the subchannel's current keepalive time. The updated value + // will have an affect when the subchannel creates a new ConnectedSubchannel. + virtual void ThrottleKeepaliveTime(Duration new_keepalive_time) = 0; + + virtual grpc_pollset_set* pollset_set() const = 0; + + virtual channelz::SubchannelNode* channelz_node() = 0; + + virtual const ChannelArgs& args() const = 0; + + virtual std::string address() const = 0; + + // Starts watching the subchannel's connectivity state. + // The first callback to the watcher will be delivered ~immediately. + // Subsequent callbacks will be delivered as the subchannel's state + // changes. + // The watcher will be destroyed either when the subchannel is + // destroyed or when CancelConnectivityStateWatch() is called. + virtual void WatchConnectivityState( + RefCountedPtr watcher) = 0; + + // Cancels a connectivity state watch. + // If the watcher has already been destroyed, this is a no-op. + virtual void CancelConnectivityStateWatch( + ConnectivityStateWatcherInterface* watcher) = 0; + + // Starts a call in the v1 stack. + // Returns null if there is no connected subchannel. + struct CreateCallArgs { + grpc_polling_entity* pollent; + gpr_cycle_counter start_time; + Timestamp deadline; + Arena* arena; + CallCombiner* call_combiner; + }; + virtual RefCountedPtr CreateCall(CreateCallArgs args, + grpc_error_handle* error) = 0; + + // Used for calls in the v3 stack. + virtual RefCountedPtr call_destination() = 0; + + // Attempt to connect to the backend. Has no effect if already connected. + virtual void RequestConnection() = 0; + + // Resets the connection backoff of the subchannel. + virtual void ResetBackoff() = 0; + + // Access to data producer map. + // We do not hold refs to the data producer; the implementation is + // expected to register itself upon construction and remove itself + // upon destruction. + // + // Looks up the current data producer for type and invokes get_or_add() + // with a pointer to that producer in the map. The get_or_add() function + // can modify the pointed-to value to update the map. This provides a + // way to either re-use an existing producer or register a new one in + // a non-racy way. + virtual void GetOrAddDataProducer( + UniqueTypeName type, + std::function get_or_add) = 0; + // Removes the data producer from the map, if the current producer for + // this type is the specified producer. + virtual void RemoveDataProducer(DataProducerInterface* data_producer) = 0; + + virtual std::shared_ptr + event_engine() = 0; + + // Ping API for v3 stack. + virtual void Ping(absl::AnyInvocable on_ack) = 0; + // Ping API for v1 stack. + // TODO(roth): Remove this when v3 migration is done. + virtual absl::Status Ping(grpc_closure* on_initiate, + grpc_closure* on_ack) = 0; + + // Exposed for testing purposes only. + static ChannelArgs MakeSubchannelArgs( + const ChannelArgs& channel_args, const ChannelArgs& address_args, + const RefCountedPtr& subchannel_pool, + const std::string& channel_default_authority); + + protected: + Subchannel(); +}; + +class OldSubchannel final : public Subchannel { + public: // Creates a subchannel. static RefCountedPtr Create( OrphanablePtr connector, const grpc_resolved_address& address, const ChannelArgs& args); // The ctor and dtor are not intended to use directly. - Subchannel(SubchannelKey key, OrphanablePtr connector, - const ChannelArgs& args); - ~Subchannel() override; + OldSubchannel(SubchannelKey key, OrphanablePtr connector, + const ChannelArgs& args); + ~OldSubchannel() override; // Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time // is larger than the subchannel's current keepalive time. The updated value // will have an affect when the subchannel creates a new ConnectedSubchannel. - void ThrottleKeepaliveTime(Duration new_keepalive_time) + void ThrottleKeepaliveTime(Duration new_keepalive_time) override ABSL_LOCKS_EXCLUDED(mu_); - grpc_pollset_set* pollset_set() const { return pollset_set_; } + grpc_pollset_set* pollset_set() const override { return pollset_set_; } - channelz::SubchannelNode* channelz_node(); + channelz::SubchannelNode* channelz_node() override; - std::string address() const { + const ChannelArgs& args() const override { return args_; } + + std::string address() const override { return grpc_sockaddr_to_uri(&key_.address()) .value_or(""); } @@ -231,31 +262,27 @@ class Subchannel final : public DualRefCounted { // The watcher will be destroyed either when the subchannel is // destroyed or when CancelConnectivityStateWatch() is called. void WatchConnectivityState( - RefCountedPtr watcher) + RefCountedPtr watcher) override ABSL_LOCKS_EXCLUDED(mu_); // Cancels a connectivity state watch. // If the watcher has already been destroyed, this is a no-op. void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher) - ABSL_LOCKS_EXCLUDED(mu_); + override ABSL_LOCKS_EXCLUDED(mu_); - RefCountedPtr connected_subchannel() - ABSL_LOCKS_EXCLUDED(mu_) { - MutexLock lock(&mu_); - return connected_subchannel_; - } + // Starts a call in the v1 stack. + // Returns null if there is no connected subchannel. + RefCountedPtr CreateCall(CreateCallArgs args, + grpc_error_handle* error) override; - RefCountedPtr call_destination() { - MutexLock lock(&mu_); - if (connected_subchannel_ == nullptr) return nullptr; - return connected_subchannel_->unstarted_call_destination(); - } + // Used for calls in the v3 stack. + RefCountedPtr call_destination() override; // Attempt to connect to the backend. Has no effect if already connected. - void RequestConnection() ABSL_LOCKS_EXCLUDED(mu_); + void RequestConnection() override ABSL_LOCKS_EXCLUDED(mu_); // Resets the connection backoff of the subchannel. - void ResetBackoff() ABSL_LOCKS_EXCLUDED(mu_); + void ResetBackoff() override ABSL_LOCKS_EXCLUDED(mu_); // Access to data producer map. // We do not hold refs to the data producer; the implementation is @@ -269,32 +296,30 @@ class Subchannel final : public DualRefCounted { // a non-racy way. void GetOrAddDataProducer( UniqueTypeName type, - std::function get_or_add) + std::function get_or_add) override ABSL_LOCKS_EXCLUDED(mu_); // Removes the data producer from the map, if the current producer for // this type is the specified producer. - void RemoveDataProducer(DataProducerInterface* data_producer) + void RemoveDataProducer(DataProducerInterface* data_producer) override ABSL_LOCKS_EXCLUDED(mu_); - std::shared_ptr event_engine() { + std::shared_ptr event_engine() + override { return event_engine_; } - // Exposed for testing purposes only. - static ChannelArgs MakeSubchannelArgs( - const ChannelArgs& channel_args, const ChannelArgs& address_args, - const RefCountedPtr& subchannel_pool, - const std::string& channel_default_authority); + // Ping API for v3 stack. + void Ping(absl::AnyInvocable on_ack) override; + // Ping API for v1 stack. + // TODO(roth): Remove this when v3 migration is done. + absl::Status Ping(grpc_closure* on_initiate, grpc_closure* on_ack) override; private: - // Tears down any existing connection, and arranges for destruction - void Orphaned() override ABSL_LOCKS_EXCLUDED(mu_); - // A linked list of ConnectivityStateWatcherInterfaces that are monitoring // the subchannel's state. class ConnectivityStateWatcherList final { public: - explicit ConnectivityStateWatcherList(Subchannel* subchannel) + explicit ConnectivityStateWatcherList(OldSubchannel* subchannel) : subchannel_(subchannel) {} ~ConnectivityStateWatcherList() { Clear(); } @@ -317,17 +342,25 @@ class Subchannel final : public DualRefCounted { uint32_t GetMaxConnectionsPerSubchannel() const; private: - Subchannel* subchannel_; + OldSubchannel* subchannel_; absl::flat_hash_set, RefCountedPtrHash, RefCountedPtrEq> watchers_; }; - // TODO(roth): Remove this when transport_state_watcher experiment is removed. + // A ConnectedSubchannel represents a connection. + // There are concrete subclasses for the v1 and v3 stacks. + class ConnectedSubchannel; + class LegacyConnectedSubchannel; + class NewConnectedSubchannel; + class ConnectedSubchannelStateWatcher; - class ConnectionStateWatcher; + // Tears down any existing connection, and arranges for destruction + void Orphaned() override ABSL_LOCKS_EXCLUDED(mu_); + + RefCountedPtr GetConnectedSubchannel(); // Sets the subchannel's connectivity state to \a state. void SetConnectivityStateLocked(grpc_connectivity_state state, @@ -408,6 +441,250 @@ class Subchannel final : public DualRefCounted { std::shared_ptr event_engine_; }; +class NewSubchannel final : public Subchannel { + public: + // Creates a subchannel. + static RefCountedPtr Create( + OrphanablePtr connector, + const grpc_resolved_address& address, const ChannelArgs& args); + + // The ctor and dtor are not intended to use directly. + NewSubchannel(SubchannelKey key, OrphanablePtr connector, + const ChannelArgs& args); + ~NewSubchannel() override; + + // Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time + // is larger than the subchannel's current keepalive time. The updated value + // will have an affect when the subchannel creates a new ConnectedSubchannel. + void ThrottleKeepaliveTime(Duration new_keepalive_time) override + ABSL_LOCKS_EXCLUDED(mu_); + + grpc_pollset_set* pollset_set() const override { return pollset_set_; } + + channelz::SubchannelNode* channelz_node() override; + + const ChannelArgs& args() const override { return args_; } + + std::string address() const override { + return grpc_sockaddr_to_uri(&key_.address()) + .value_or(""); + } + + // Starts watching the subchannel's connectivity state. + // The first callback to the watcher will be delivered ~immediately. + // Subsequent callbacks will be delivered as the subchannel's state + // changes. + // The watcher will be destroyed either when the subchannel is + // destroyed or when CancelConnectivityStateWatch() is called. + void WatchConnectivityState( + RefCountedPtr watcher) override + ABSL_LOCKS_EXCLUDED(mu_); + + // Cancels a connectivity state watch. + // If the watcher has already been destroyed, this is a no-op. + void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher) + override ABSL_LOCKS_EXCLUDED(mu_); + + // Starts a call in the v1 stack. + // Returns null if there is no connected subchannel. + RefCountedPtr CreateCall(CreateCallArgs args, + grpc_error_handle* error) override; + + // Used for calls in the v3 stack. + RefCountedPtr call_destination() override; + + // Attempt to connect to the backend. Has no effect if already connected. + void RequestConnection() override ABSL_LOCKS_EXCLUDED(mu_); + + // Resets the connection backoff of the subchannel. + void ResetBackoff() override ABSL_LOCKS_EXCLUDED(mu_); + + // Access to data producer map. + // We do not hold refs to the data producer; the implementation is + // expected to register itself upon construction and remove itself + // upon destruction. + // + // Looks up the current data producer for type and invokes get_or_add() + // with a pointer to that producer in the map. The get_or_add() function + // can modify the pointed-to value to update the map. This provides a + // way to either re-use an existing producer or register a new one in + // a non-racy way. + void GetOrAddDataProducer( + UniqueTypeName type, + std::function get_or_add) override + ABSL_LOCKS_EXCLUDED(mu_); + // Removes the data producer from the map, if the current producer for + // this type is the specified producer. + void RemoveDataProducer(DataProducerInterface* data_producer) override + ABSL_LOCKS_EXCLUDED(mu_); + + std::shared_ptr event_engine() + override { + return event_engine_; + } + + // Ping API for v3 stack. + void Ping(absl::AnyInvocable on_ack) override; + // Ping API for v1 stack. + // TODO(roth): Remove this when v3 migration is done. + absl::Status Ping(grpc_closure* on_initiate, grpc_closure* on_ack) override; + + private: + // A linked list of ConnectivityStateWatcherInterfaces that are monitoring + // the subchannel's state. + class ConnectivityStateWatcherList final { + public: + explicit ConnectivityStateWatcherList(NewSubchannel* subchannel) + : subchannel_(subchannel) {} + + ~ConnectivityStateWatcherList() { Clear(); } + + void AddWatcherLocked( + RefCountedPtr watcher); + void RemoveWatcherLocked(ConnectivityStateWatcherInterface* watcher); + + // Notifies all watchers in the list about a change to state. + void NotifyLocked(grpc_connectivity_state state, + const absl::Status& status); + + // Notifies all watchers about a keepalive update. + void NotifyOnKeepaliveUpdateLocked(Duration new_keepalive_time); + + void Clear() { watchers_.clear(); } + + bool empty() const { return watchers_.empty(); } + + uint32_t GetMaxConnectionsPerSubchannel() const; + + private: + NewSubchannel* subchannel_; + absl::flat_hash_set, + RefCountedPtrHash, + RefCountedPtrEq> + watchers_; + }; + + class ConnectedSubchannel; + class LegacyConnectedSubchannel; + class NewConnectedSubchannel; + + class ConnectionStateWatcher; + + class QueuedCall; + + // Tears down any existing connection, and arranges for destruction + void Orphaned() override ABSL_LOCKS_EXCLUDED(mu_); + + RefCountedPtr ChooseConnectionLocked() + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + void RetryQueuedRpcs() ABSL_LOCKS_EXCLUDED(mu_); + void RetryQueuedRpcsLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + void MaybeFailAllQueuedRpcsLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + void FailAllQueuedRpcsLocked(absl::Status status) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + + // Updates the subchannel's connectivity state. + void SetLastFailureLocked(const absl::Status& status) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + grpc_connectivity_state ComputeConnectivityStateLocked() const + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + absl::Status ConnectivityStatusToReportLocked() const + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + void MaybeUpdateConnectivityStateLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + + // Returns true if the connection was removed. + bool RemoveConnectionLocked(ConnectedSubchannel* connected_subchannel) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + + void ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + + // Methods for connection. + void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_); + void OnRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + void StartConnectingLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + static void OnConnectingFinished(void* arg, grpc_error_handle error) + ABSL_LOCKS_EXCLUDED(mu_); + void OnConnectingFinishedLocked(grpc_error_handle error) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + bool PublishTransportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + + // The subchannel pool this subchannel is in. + RefCountedPtr subchannel_pool_; + // Subchannel key that identifies this subchannel in the subchannel pool. + const SubchannelKey key_; + // boolean value that identifies this subchannel is created from event engine + // endpoint. + const bool created_from_endpoint_; + // Actual address to connect to. May be different than the address in + // key_ if overridden by proxy mapper. + grpc_resolved_address address_for_connect_; + // Channel args. + ChannelArgs args_; + // pollset_set tracking who's interested in a connection being setup. + grpc_pollset_set* pollset_set_; + // Channelz tracking. + RefCountedPtr channelz_node_; + // Minimum connection timeout. + Duration min_connect_timeout_; + + // Connection state. + OrphanablePtr connector_; + SubchannelConnector::Result connecting_result_; + grpc_closure on_connecting_finished_; + + // Protects the other members. + Mutex mu_; + + bool connection_attempt_in_flight_ ABSL_GUARDED_BY(mu_) = false; + bool shutdown_ ABSL_GUARDED_BY(mu_) = false; + + // Connectivity state tracking. + // Note that the connectivity state implies the state of the + // Subchannel object: + // - IDLE: no retry timer pending, can start a connection attempt at any time + // - CONNECTING: connection attempt in progress + // - READY: connection attempt succeeded, connected_subchannel_ created + // - TRANSIENT_FAILURE: connection attempt failed, retry timer pending + grpc_connectivity_state state_ ABSL_GUARDED_BY(mu_) = GRPC_CHANNEL_IDLE; + absl::Status last_failure_status_ ABSL_GUARDED_BY(mu_); + // The list of connectivity state watchers. + ConnectivityStateWatcherList watcher_list_ ABSL_GUARDED_BY(mu_); + // Used for sending connectivity state notifications. + WorkSerializer work_serializer_; + + // Established connections. + std::vector> connections_ + ABSL_GUARDED_BY(mu_); + + // Backoff state. + BackOff backoff_ ABSL_GUARDED_BY(mu_); + Timestamp next_attempt_time_ ABSL_GUARDED_BY(mu_); + std::optional + retry_timer_handle_ ABSL_GUARDED_BY(mu_); + + // Keepalive time period + Duration keepalive_time_ ABSL_GUARDED_BY(mu_); + + // Data producer map. + std::map data_producer_map_ + ABSL_GUARDED_BY(mu_); + std::shared_ptr event_engine_; + + // A queue of calls waiting to be dispatched to a connection. + // If a call is cancelled while in the queue, its entry will be reset + // to null, so we ignore null values when draining the queue. + // + // Note that each queued call holds a C++ reference to its entry in the + // queue, which it will set to null if it gets cancelled. Therefore, + // this data structure must guarantee that references to entries are not + // invalidated as entries are added or removed from the queue (i.e., + // std::vector<> would not work). + std::deque queued_calls_ ABSL_GUARDED_BY(mu_); +}; + +void TestOnlySetSubchannelAlwaysSendCallsToTransport(bool enabled); + } // namespace grpc_core #endif // GRPC_SRC_CORE_CLIENT_CHANNEL_SUBCHANNEL_H diff --git a/deps/grpc/src/core/client_channel/subchannel_stream_client.cc b/deps/grpc/src/core/client_channel/subchannel_stream_client.cc index 59cb1d1ce1b..2158f844875 100644 --- a/deps/grpc/src/core/client_channel/subchannel_stream_client.cc +++ b/deps/grpc/src/core/client_channel/subchannel_stream_client.cc @@ -49,15 +49,13 @@ using ::grpc_event_engine::experimental::EventEngine; // SubchannelStreamClient::SubchannelStreamClient( - RefCountedPtr connected_subchannel, - grpc_pollset_set* interested_parties, + WeakRefCountedPtr subchannel, std::unique_ptr event_handler, const char* tracer) : InternallyRefCounted(tracer), - connected_subchannel_(std::move(connected_subchannel)), - interested_parties_(interested_parties), + subchannel_(std::move(subchannel)), tracer_(tracer), call_allocator_(MakeRefCounted( - connected_subchannel_->args() + subchannel_->args() .GetObject() ->memory_quota() ->CreateMemoryAllocator( @@ -72,7 +70,7 @@ SubchannelStreamClient::SubchannelStreamClient( .set_jitter(SUBCHANNEL_STREAM_RECONNECT_JITTER) .set_max_backoff(Duration::Seconds( SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS))), - event_engine_(connected_subchannel_->args().GetObject()) { + event_engine_(subchannel_->args().GetObject()) { if (GPR_UNLIKELY(tracer_ != nullptr)) { LOG(INFO) << tracer_ << " " << this << ": created SubchannelStreamClient"; } @@ -114,13 +112,18 @@ void SubchannelStreamClient::StartCallLocked() { if (event_handler_ != nullptr) { event_handler_->OnCallStartLocked(this); } - call_state_ = MakeOrphanable(Ref(), interested_parties_); + call_state_ = MakeOrphanable(Ref(), subchannel_->pollset_set()); if (GPR_UNLIKELY(tracer_ != nullptr)) { LOG(INFO) << tracer_ << " " << this << ": SubchannelStreamClient created CallState " << call_state_.get(); } - call_state_->StartCallLocked(); + bool call_started = call_state_->StartCallLocked(); + // If we could not create the call due to the subchannel loosing its + // connection, then manually destroy the CallState object, and don't + // do any retry. The caller will recreate the SubchannelStreamClient + // when the connection is reestablished. + if (!call_started) delete call_state_.release(); } void SubchannelStreamClient::StartRetryTimerLocked() { @@ -188,9 +191,8 @@ void SubchannelStreamClient::CallState::Orphan() { Cancel(); } -void SubchannelStreamClient::CallState::StartCallLocked() { - SubchannelCall::Args args = { - subchannel_stream_client_->connected_subchannel_, +bool SubchannelStreamClient::CallState::StartCallLocked() { + Subchannel::CreateCallArgs args = { &pollent_, gpr_get_cycle_counter(), // start_time Timestamp::InfFuture(), // deadline @@ -198,19 +200,21 @@ void SubchannelStreamClient::CallState::StartCallLocked() { &call_combiner_, }; grpc_error_handle error; - call_ = SubchannelCall::Create(std::move(args), &error).release(); + call_ = subchannel_stream_client_->subchannel_->CreateCall(args, &error) + .release(); + // If there was no connection to start a call on, signal the caller + // that we didn't create the call. + if (call_ == nullptr) return false; // Register after-destruction callback. GRPC_CLOSURE_INIT(&after_call_stack_destruction_, AfterCallStackDestruction, this, grpc_schedule_on_exec_ctx); call_->SetAfterCallStackDestroy(&after_call_stack_destruction_); - // Check if creation failed. if (!error.ok() || subchannel_stream_client_->event_handler_ == nullptr) { LOG(ERROR) << "SubchannelStreamClient " << subchannel_stream_client_.get() << " CallState " << this << ": error creating " - << "stream on subchannel (" << StatusToString(error) - << "); will retry"; + << "stream on subchannel (" << error << "); will retry"; CallEndedLocked(/*retry=*/true); - return; + return true; } // Initialize payload and batch. batch_.payload = &payload_; @@ -222,7 +226,6 @@ void SubchannelStreamClient::CallState::StartCallLocked() { send_initial_metadata_.Set( HttpPathMetadata(), subchannel_stream_client_->event_handler_->GetPathLocked()); - GRPC_CHECK(error.ok()); payload_.send_initial_metadata.send_initial_metadata = &send_initial_metadata_; batch_.send_initial_metadata = true; @@ -271,12 +274,13 @@ void SubchannelStreamClient::CallState::StartCallLocked() { recv_trailing_metadata_batch_.recv_trailing_metadata = true; // Start recv_trailing_metadata batch. StartBatch(&recv_trailing_metadata_batch_); + return true; } void SubchannelStreamClient::CallState::StartBatchInCallCombiner( void* arg, grpc_error_handle /*error*/) { auto* batch = static_cast(arg); - auto* call = static_cast(batch->handler_private.extra_arg); + auto* call = static_cast(batch->handler_private.extra_arg); call->StartTransportStreamOpBatch(batch); } diff --git a/deps/grpc/src/core/client_channel/subchannel_stream_client.h b/deps/grpc/src/core/client_channel/subchannel_stream_client.h index 99571d6425f..39f624f803f 100644 --- a/deps/grpc/src/core/client_channel/subchannel_stream_client.h +++ b/deps/grpc/src/core/client_channel/subchannel_stream_client.h @@ -98,10 +98,9 @@ class SubchannelStreamClient final // string being the first part of the log message. // Does not take ownership of interested_parties; the caller is responsible // for ensuring that it will outlive the SubchannelStreamClient. - SubchannelStreamClient( - RefCountedPtr connected_subchannel, - grpc_pollset_set* interested_parties, - std::unique_ptr event_handler, const char* tracer); + SubchannelStreamClient(WeakRefCountedPtr subchannel, + std::unique_ptr event_handler, + const char* tracer); ~SubchannelStreamClient() override; @@ -117,7 +116,8 @@ class SubchannelStreamClient final void Orphan() override; - void StartCallLocked() + // Returns false if there was no connection to start a call on. + GRPC_MUST_USE_RESULT bool StartCallLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_); private: @@ -149,7 +149,7 @@ class SubchannelStreamClient final // The streaming call to the backend. Always non-null. // Refs are tracked manually; when the last ref is released, the // CallState object will be automatically destroyed. - SubchannelCall* call_; + Subchannel::Call* call_; grpc_transport_stream_op_batch_payload payload_; grpc_transport_stream_op_batch batch_; @@ -194,8 +194,7 @@ class SubchannelStreamClient final void StartRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_); void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_); - RefCountedPtr connected_subchannel_; - grpc_pollset_set* interested_parties_; // Do not own. + WeakRefCountedPtr subchannel_; const char* tracer_; RefCountedPtr call_allocator_; @@ -210,7 +209,7 @@ class SubchannelStreamClient final BackOff retry_backoff_ ABSL_GUARDED_BY(mu_); std::optional retry_timer_handle_ ABSL_GUARDED_BY(mu_); - // A raw pointer will suffice since connected_subchannel_ holds a copy of the + // A raw pointer will suffice since subchannel_ holds a copy of the // ChannelArgs which holds an std::shared_ptr of the EventEngine. grpc_event_engine::experimental::EventEngine* event_engine_ ABSL_GUARDED_BY(mu_); diff --git a/deps/grpc/src/core/client_channel/subchannel_stream_limiter.cc b/deps/grpc/src/core/client_channel/subchannel_stream_limiter.cc new file mode 100644 index 00000000000..6df100dc35e --- /dev/null +++ b/deps/grpc/src/core/client_channel/subchannel_stream_limiter.cc @@ -0,0 +1,76 @@ +// +// Copyright 2026 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include "src/core/client_channel/subchannel_stream_limiter.h" + +namespace grpc_core { + +namespace { + +uint64_t MakeStreamCounts(uint32_t max_concurrent_streams, + uint32_t rpcs_in_flight) { + return (static_cast(max_concurrent_streams) << 32) + + static_cast(rpcs_in_flight); +} + +uint32_t GetMaxConcurrentStreams(uint64_t stream_counts) { + return static_cast(stream_counts >> 32); +} + +uint32_t GetRpcsInFlight(uint64_t stream_counts) { + return static_cast(stream_counts & 0xffffffffu); +} + +} // namespace + +SubchannelStreamLimiter::SubchannelStreamLimiter( + uint32_t max_concurrent_streams) + : stream_counts_(MakeStreamCounts(max_concurrent_streams, 0)) {} + +bool SubchannelStreamLimiter::SetMaxConcurrentStreams( + uint32_t max_concurrent_streams) { + uint64_t prev_stream_counts = stream_counts_.load(std::memory_order_acquire); + uint32_t rpcs_in_flight; + do { + rpcs_in_flight = GetRpcsInFlight(prev_stream_counts); + } while (!stream_counts_.compare_exchange_weak( + prev_stream_counts, + MakeStreamCounts(max_concurrent_streams, rpcs_in_flight), + std::memory_order_acq_rel, std::memory_order_acquire)); + return rpcs_in_flight < max_concurrent_streams; +} + +bool SubchannelStreamLimiter::GetQuotaForRpc() { + uint64_t prev_stream_counts = stream_counts_.load(std::memory_order_acquire); + do { + const uint32_t rpcs_in_flight = GetRpcsInFlight(prev_stream_counts); + const uint32_t max_concurrent_streams = + GetMaxConcurrentStreams(prev_stream_counts); + if (rpcs_in_flight == max_concurrent_streams) return false; + } while (!stream_counts_.compare_exchange_weak( + prev_stream_counts, prev_stream_counts + MakeStreamCounts(0, 1), + std::memory_order_acq_rel, std::memory_order_acquire)); + return true; +} + +bool SubchannelStreamLimiter::ReturnQuotaForRpc() { + const uint64_t prev_stream_counts = + stream_counts_.fetch_sub(MakeStreamCounts(0, 1)); + return GetRpcsInFlight(prev_stream_counts) == + GetMaxConcurrentStreams(prev_stream_counts); +} + +} // namespace grpc_core diff --git a/deps/grpc/src/core/client_channel/subchannel_stream_limiter.h b/deps/grpc/src/core/client_channel/subchannel_stream_limiter.h new file mode 100644 index 00000000000..7ad089a282c --- /dev/null +++ b/deps/grpc/src/core/client_channel/subchannel_stream_limiter.h @@ -0,0 +1,51 @@ +// +// Copyright 2026 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef GRPC_SRC_CORE_CLIENT_CHANNEL_SUBCHANNEL_STREAM_LIMITER_H +#define GRPC_SRC_CORE_CLIENT_CHANNEL_SUBCHANNEL_STREAM_LIMITER_H + +#include +#include + +namespace grpc_core { + +class SubchannelStreamLimiter { + public: + explicit SubchannelStreamLimiter(uint32_t max_concurrent_streams); + + // Sets the maximum number of concurrent streams. + // Returns true if the current number of RPCs in flight is less than the new + // maximum. + bool SetMaxConcurrentStreams(uint32_t max_concurrent_streams); + + // Attempts to get quota for a new RPC. + // Returns true if quota was acquired, false otherwise. + bool GetQuotaForRpc(); + + // Returns quota for a completed RPC. + // Returns true if the connection is no longer above its quota. + bool ReturnQuotaForRpc(); + + private: + // First 32 bits are the MAX_CONCURRENT_STREAMS value reported by + // the transport. + // Last 32 bits are the current number of RPCs in flight on the connection. + std::atomic stream_counts_{0}; +}; + +} // namespace grpc_core + +#endif // GRPC_SRC_CORE_CLIENT_CHANNEL_SUBCHANNEL_STREAM_LIMITER_H diff --git a/deps/grpc/src/core/config/config_vars.cc b/deps/grpc/src/core/config/config_vars.cc index b8cd2695638..706175025b8 100644 --- a/deps/grpc/src/core/config/config_vars.cc +++ b/deps/grpc/src/core/config/config_vars.cc @@ -97,6 +97,8 @@ ABSL_FLAG(absl::optional, grpc_experimental_memory_pressure_threshold, "EXPERIMENTAL: The threshold for the memory quota pressure " "controller. This is a value between 0 and 1, and must always be " "greater than the target pressure."); +ABSL_FLAG(absl::optional, grpc_chaotic_good_metrics_update_interval_ms, + {}, "Interval in milliseconds for updating metrics in chaotic good."); namespace grpc_core { @@ -109,6 +111,10 @@ ConfigVars::ConfigVars(const Overrides& overrides) LoadConfig(FLAGS_grpc_channelz_max_orphaned_nodes, "GRPC_CHANNELZ_MAX_ORPHANED_NODES", overrides.channelz_max_orphaned_nodes, 0)), + chaotic_good_metrics_update_interval_ms_( + LoadConfig(FLAGS_grpc_chaotic_good_metrics_update_interval_ms, + "GRPC_CHAOTIC_GOOD_METRICS_UPDATE_INTERVAL_MS", + overrides.chaotic_good_metrics_update_interval_ms, 100)), experimental_target_memory_pressure_( LoadConfig(FLAGS_grpc_experimental_target_memory_pressure, "GRPC_EXPERIMENTAL_TARGET_MEMORY_PRESSURE", @@ -194,6 +200,8 @@ std::string ConfigVars::ToString() const { ", experimental_target_memory_pressure: ", ExperimentalTargetMemoryPressure(), ", experimental_memory_pressure_threshold: ", - ExperimentalMemoryPressureThreshold()); + ExperimentalMemoryPressureThreshold(), + ", chaotic_good_metrics_update_interval_ms: ", + ChaoticGoodMetricsUpdateIntervalMs()); } } // namespace grpc_core diff --git a/deps/grpc/src/core/config/config_vars.h b/deps/grpc/src/core/config/config_vars.h index e2e9ed3ab72..02579c000ff 100644 --- a/deps/grpc/src/core/config/config_vars.h +++ b/deps/grpc/src/core/config/config_vars.h @@ -36,6 +36,7 @@ class GPR_DLL ConfigVars { struct Overrides { absl::optional client_channel_backup_poll_interval_ms; absl::optional channelz_max_orphaned_nodes; + absl::optional chaotic_good_metrics_update_interval_ms; absl::optional experimental_target_memory_pressure; absl::optional experimental_memory_pressure_threshold; absl::optional enable_fork_support; @@ -133,6 +134,10 @@ class GPR_DLL ConfigVars { double ExperimentalMemoryPressureThreshold() const { return experimental_memory_pressure_threshold_; } + // Interval in milliseconds for updating metrics in chaotic good. + int32_t ChaoticGoodMetricsUpdateIntervalMs() const { + return chaotic_good_metrics_update_interval_ms_; + } private: explicit ConfigVars(const Overrides& overrides); @@ -140,6 +145,7 @@ class GPR_DLL ConfigVars { static std::atomic config_vars_; int32_t client_channel_backup_poll_interval_ms_; int32_t channelz_max_orphaned_nodes_; + int32_t chaotic_good_metrics_update_interval_ms_; double experimental_target_memory_pressure_; double experimental_memory_pressure_threshold_; bool enable_fork_support_; diff --git a/deps/grpc/src/core/config/config_vars.yaml b/deps/grpc/src/core/config/config_vars.yaml index 5867a7e6fcc..a01e03f5d54 100644 --- a/deps/grpc/src/core/config/config_vars.yaml +++ b/deps/grpc/src/core/config/config_vars.yaml @@ -153,3 +153,7 @@ The threshold for the memory quota pressure controller. \ This is a value between 0 and 1, and must always be greater than the target pressure." fuzz: true +- name: chaotic_good_metrics_update_interval_ms + type: int + default: 100 + description: "Interval in milliseconds for updating metrics in chaotic good." diff --git a/deps/grpc/src/core/credentials/call/call_creds_registry.h b/deps/grpc/src/core/credentials/call/call_creds_registry.h index 558d376099f..0b3f6793f06 100644 --- a/deps/grpc/src/core/credentials/call/call_creds_registry.h +++ b/deps/grpc/src/core/credentials/call/call_creds_registry.h @@ -37,6 +37,8 @@ class CallCredsConfig : public RefCounted { public: virtual absl::string_view type() const = 0; + virtual absl::string_view proto_type() const = 0; + virtual bool Equals(const CallCredsConfig& other) const = 0; virtual std::string ToString() const = 0; @@ -47,11 +49,15 @@ class CallCredsFactory final { public: virtual ~CallCredsFactory() {} virtual absl::string_view type() const = delete; - virtual RefCountedPtr ParseConfig( + virtual RefCountedPtr ParseConfig( const Json& config, const JsonArgs& args, ValidationErrors* errors) const = delete; + virtual absl::string_view proto_type() const = delete; + virtual RefCountedPtr ParseProto( + absl::string_view serialized_proto, + ValidationErrors* errors) const = delete; virtual RefCountedPtr CreateCallCreds( - RefCountedPtr config) const = delete; + RefCountedPtr config) const = delete; }; template <> @@ -59,18 +65,21 @@ class CallCredsFactory { public: virtual ~CallCredsFactory() {} virtual absl::string_view type() const = 0; - virtual RefCountedPtr ParseConfig( + virtual RefCountedPtr ParseConfig( const Json& config, const JsonArgs& args, ValidationErrors* errors) const = 0; + virtual absl::string_view proto_type() const = 0; + virtual RefCountedPtr ParseProto( + absl::string_view serialized_proto, ValidationErrors* errors) const = 0; virtual RefCountedPtr CreateCallCreds( - RefCountedPtr config) const = 0; + RefCountedPtr config) const = 0; }; template class CallCredsRegistry { private: using FactoryMap = - std::map>>; + std::map>>; public: static_assert(std::is_base_of::value, @@ -81,43 +90,63 @@ class CallCredsRegistry { public: void RegisterCallCredsFactory( std::unique_ptr> factory) { - absl::string_view type = factory->type(); - factories_[type] = std::move(factory); + std::shared_ptr> shared_factory(std::move(factory)); + absl::string_view type = shared_factory->type(); + if (!type.empty()) name_map_[type] = shared_factory; + absl::string_view proto_type = shared_factory->proto_type(); + if (!proto_type.empty()) proto_map_[proto_type] = shared_factory; } + CallCredsRegistry Build() { - return CallCredsRegistry(std::move(factories_)); + return CallCredsRegistry(std::move(name_map_), std::move(proto_map_)); } private: - FactoryMap factories_; + FactoryMap name_map_; + FactoryMap proto_map_; }; bool IsSupported(absl::string_view type) const { - return factories_.find(type) != factories_.end(); + return name_map_.find(type) != name_map_.end(); } - RefCountedPtr ParseConfig(absl::string_view type, - const Json& config, - const JsonArgs& args, - ValidationErrors* errors) const { - const auto it = factories_.find(type); - if (it == factories_.cend()) return nullptr; + RefCountedPtr ParseConfig( + absl::string_view type, const Json& config, const JsonArgs& args, + ValidationErrors* errors) const { + const auto it = name_map_.find(type); + if (it == name_map_.cend()) return nullptr; return it->second->ParseConfig(config, args, errors); } + bool IsProtoSupported(absl::string_view type) const { + return proto_map_.find(type) != proto_map_.end(); + } + + RefCountedPtr ParseProto( + absl::string_view proto_type, absl::string_view serialized_proto, + ValidationErrors* errors) const { + const auto it = proto_map_.find(proto_type); + if (it == proto_map_.cend()) return nullptr; + return it->second->ParseProto(serialized_proto, errors); + } + RefCountedPtr CreateCallCreds( - RefCountedPtr config) const { + RefCountedPtr config) const { if (config == nullptr) return nullptr; - const auto it = factories_.find(config->type()); - if (it == factories_.cend()) return nullptr; + auto it = name_map_.find(config->type()); + if (it == name_map_.cend()) { + it = proto_map_.find(config->proto_type()); + if (it == proto_map_.cend()) return nullptr; + } return it->second->CreateCallCreds(std::move(config)); } private: - explicit CallCredsRegistry(FactoryMap factories) - : factories_(std::move(factories)) {} + CallCredsRegistry(FactoryMap name_map, FactoryMap proto_map) + : name_map_(std::move(name_map)), proto_map_(std::move(proto_map)) {} - FactoryMap factories_; + FactoryMap name_map_; + FactoryMap proto_map_; }; } // namespace grpc_core diff --git a/deps/grpc/src/core/credentials/call/call_creds_registry_init.cc b/deps/grpc/src/core/credentials/call/call_creds_registry_init.cc index 345d7f6f3f7..f43d55b48e1 100644 --- a/deps/grpc/src/core/credentials/call/call_creds_registry_init.cc +++ b/deps/grpc/src/core/credentials/call/call_creds_registry_init.cc @@ -22,10 +22,12 @@ #include #include +#include "envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h" #include "src/core/config/core_configuration.h" #include "src/core/credentials/call/call_credentials.h" #include "src/core/credentials/call/call_creds_registry.h" #include "src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h" +#include "src/core/credentials/call/oauth2/oauth2_credentials.h" #include "src/core/util/down_cast.h" #include "src/core/util/json/json.h" #include "src/core/util/json/json_args.h" @@ -41,14 +43,22 @@ class JwtTokenFileCallCredsFactory : public CallCredsFactory<> { public: absl::string_view type() const override { return Type(); } - RefCountedPtr ParseConfig( + RefCountedPtr ParseConfig( const Json& config, const JsonArgs& args, ValidationErrors* errors) const override { return LoadFromJson>(config, args, errors); } + absl::string_view proto_type() const override { return ""; } + + RefCountedPtr ParseProto( + absl::string_view /*serialized_proto*/, + ValidationErrors* /*errors*/) const override { + return nullptr; + } + RefCountedPtr CreateCallCreds( - RefCountedPtr base_config) const override { + RefCountedPtr base_config) const override { auto* config = DownCast(base_config.get()); return MakeRefCounted(config->path()); } @@ -58,6 +68,8 @@ class JwtTokenFileCallCredsFactory : public CallCredsFactory<> { public: absl::string_view type() const override { return Type(); } + absl::string_view proto_type() const override { return ""; } + bool Equals(const CallCredsConfig& other) const override { auto& o = DownCast(other); return path_ == o.path_; @@ -83,9 +95,81 @@ class JwtTokenFileCallCredsFactory : public CallCredsFactory<> { static absl::string_view Type() { return "jwt_token_file"; } }; +class AccessTokenCallCredsFactory : public CallCredsFactory<> { + public: + absl::string_view type() const override { return ""; } + + RefCountedPtr ParseConfig( + const Json& /*config*/, const JsonArgs& /*args*/, + ValidationErrors* /*errors*/) const override { + return nullptr; + } + + absl::string_view proto_type() const override { return ProtoType(); } + + RefCountedPtr ParseProto( + absl::string_view serialized_proto, + ValidationErrors* errors) const override { + upb::Arena arena; + const auto* proto = + envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_parse( + serialized_proto.data(), serialized_proto.size(), arena.ptr()); + if (proto == nullptr) { + errors->AddError("could not parse call credentials config"); + return nullptr; + } + absl::string_view token = UpbStringToAbsl( + envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_token( + proto)); + if (token.empty()) { + ValidationErrors::ScopedField field(errors, ".token"); + errors->AddError("field not present"); + } + return MakeRefCounted(token); + } + + RefCountedPtr CreateCallCreds( + RefCountedPtr base_config) const override { + auto* config = DownCast(base_config.get()); + return MakeRefCounted( + config->token().c_str()); + } + + private: + class Config : public CallCredsConfig { + public: + explicit Config(absl::string_view token) : token_(token) {} + + absl::string_view type() const override { return ""; } + + absl::string_view proto_type() const override { return ProtoType(); } + + bool Equals(const CallCredsConfig& other) const override { + auto& o = DownCast(other); + return token_ == o.token_; + } + + std::string ToString() const override { + return absl::StrCat("{token=\"", token_, "\"}"); + } + + const std::string& token() const { return token_; } + + private: + std::string token_; + }; + + static absl::string_view ProtoType() { + return "envoy.extensions.grpc_service.call_credentials.access_token" + ".v3.AccessTokenCredentials"; + } +}; + void RegisterDefaultCallCreds(CoreConfiguration::Builder* builder) { builder->call_creds_registry()->RegisterCallCredsFactory( std::make_unique()); + builder->call_creds_registry()->RegisterCallCredsFactory( + std::make_unique()); } } // namespace grpc_core diff --git a/deps/grpc/src/core/credentials/call/external/aws_external_account_credentials.cc b/deps/grpc/src/core/credentials/call/external/aws_external_account_credentials.cc index b582f936115..f04c24abc2b 100644 --- a/deps/grpc/src/core/credentials/call/external/aws_external_account_credentials.cc +++ b/deps/grpc/src/core/credentials/call/external/aws_external_account_credentials.cc @@ -292,8 +292,8 @@ void AwsExternalAccountCredentials::AwsFetchBody::RetrieveSigningKeys() { return; } if (role_name_.empty()) { - AsyncFinish( - GRPC_ERROR_CREATE("Missing role name when retrieving signing keys.")); + AsyncFinish(absl::UnauthenticatedError( + "Missing role name when retrieving signing keys.")); return; } std::string url_with_role_name = absl::StrCat(creds_->url_, "/", role_name_); diff --git a/deps/grpc/src/core/credentials/call/external/external_account_credentials.cc b/deps/grpc/src/core/credentials/call/external/external_account_credentials.cc index 523e27f82eb..40ef682f4a2 100644 --- a/deps/grpc/src/core/credentials/call/external/external_account_credentials.cc +++ b/deps/grpc/src/core/credentials/call/external/external_account_credentials.cc @@ -34,6 +34,7 @@ #include "src/core/credentials/call/external/url_external_account_credentials.h" #include "src/core/credentials/call/json_util.h" #include "src/core/credentials/transport/transport_credentials.h" +#include "src/core/lib/transport/status_conversion.h" #include "src/core/util/grpc_check.h" #include "src/core/util/http_client/httpcli_ssl_credentials.h" #include "src/core/util/http_client/parser.h" @@ -108,7 +109,13 @@ void ExternalAccountCredentials::HttpFetchBody::OnHttpResponse( absl::string_view response_body(self->response_.body, self->response_.body_length); if (self->response_.status != 200) { - self->Finish(absl::UnavailableError( + grpc_status_code status_code = + grpc_http2_status_to_grpc_status(self->response_.status); + if (status_code != GRPC_STATUS_UNAVAILABLE) { + status_code = GRPC_STATUS_UNAUTHENTICATED; + } + self->Finish(absl::Status( + static_cast(status_code), absl::StrCat("Call to HTTP server ended with status ", self->response_.status, " [", response_body, "]"))); return; @@ -180,7 +187,7 @@ void ExternalAccountCredentials::ExternalFetchRequest::ExchangeToken( // Parse URI. absl::StatusOr uri = URI::Parse(options().token_url); if (!uri.ok()) { - return FinishTokenFetch(GRPC_ERROR_CREATE( + return FinishTokenFetch(absl::UnauthenticatedError( absl::StrFormat("Invalid token url: %s. Error: %s", options().token_url, uri.status().ToString()))); } @@ -284,7 +291,7 @@ void ExternalAccountCredentials::ExternalFetchRequest:: } auto it = json->object().find("access_token"); if (it == json->object().end() || it->second.type() != Json::Type::kString) { - FinishTokenFetch(GRPC_ERROR_CREATE(absl::StrFormat( + FinishTokenFetch(absl::UnauthenticatedError(absl::StrFormat( "Missing or invalid access_token in %s.", *response_body))); return; } @@ -292,7 +299,7 @@ void ExternalAccountCredentials::ExternalFetchRequest:: absl::StatusOr uri = URI::Parse(options().service_account_impersonation_url); if (!uri.ok()) { - FinishTokenFetch(GRPC_ERROR_CREATE(absl::StrFormat( + FinishTokenFetch(absl::UnauthenticatedError(absl::StrFormat( "Invalid service account impersonation url: %s. Error: %s", options().service_account_impersonation_url, uri.status().ToString()))); return; diff --git a/deps/grpc/src/core/credentials/call/external/file_external_account_credentials.cc b/deps/grpc/src/core/credentials/call/external/file_external_account_credentials.cc index 41b17afd6bc..d5177481c8e 100644 --- a/deps/grpc/src/core/credentials/call/external/file_external_account_credentials.cc +++ b/deps/grpc/src/core/credentials/call/external/file_external_account_credentials.cc @@ -55,14 +55,14 @@ void FileExternalAccountCredentials::FileFetchBody::ReadFile() { // request because it may have changed since the last request. auto content_slice = LoadFile(creds_->file_, /*add_null_terminator=*/false); if (!content_slice.ok()) { - Finish(content_slice.status()); + Finish(absl::UnavailableError(content_slice.status().message())); return; } absl::string_view content = content_slice->as_string_view(); if (creds_->format_type_ == "json") { auto content_json = JsonParse(content); if (!content_json.ok() || content_json->type() != Json::Type::kObject) { - Finish(GRPC_ERROR_CREATE( + Finish(absl::UnauthenticatedError( "The content of the file is not a valid json object.")); return; } diff --git a/deps/grpc/src/core/credentials/transport/channel_creds_registry.h b/deps/grpc/src/core/credentials/transport/channel_creds_registry.h index 16ae8314b9c..3f4f3d88f16 100644 --- a/deps/grpc/src/core/credentials/transport/channel_creds_registry.h +++ b/deps/grpc/src/core/credentials/transport/channel_creds_registry.h @@ -29,6 +29,7 @@ #include "src/core/util/ref_counted.h" #include "src/core/util/ref_counted_ptr.h" #include "src/core/util/validation_errors.h" +#include "src/core/xds/grpc/certificate_provider_store_interface.h" #include "absl/strings/string_view.h" struct grpc_channel_credentials; @@ -39,6 +40,13 @@ class ChannelCredsConfig : public RefCounted { public: virtual absl::string_view type() const = 0; + virtual absl::string_view proto_type() const = 0; + + bool operator==(const ChannelCredsConfig& other) const { + if (type() != other.type()) return false; + return Equals(other); + } + virtual bool Equals(const ChannelCredsConfig& other) const = 0; virtual std::string ToString() const = 0; @@ -49,11 +57,19 @@ class ChannelCredsFactory final { public: virtual ~ChannelCredsFactory() {} virtual absl::string_view type() const = delete; - virtual RefCountedPtr ParseConfig( + virtual RefCountedPtr ParseConfig( const Json& config, const JsonArgs& args, ValidationErrors* errors) const = delete; + virtual absl::string_view proto_type() const = delete; + virtual RefCountedPtr ParseProto( + absl::string_view serialized_proto, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) const = delete; virtual RefCountedPtr CreateChannelCreds( - RefCountedPtr config) const = delete; + RefCountedPtr config, + CertificateProviderStoreInterface& certificate_provider_store) const = + delete; }; template <> @@ -61,18 +77,25 @@ class ChannelCredsFactory { public: virtual ~ChannelCredsFactory() {} virtual absl::string_view type() const = 0; - virtual RefCountedPtr ParseConfig( + virtual RefCountedPtr ParseConfig( const Json& config, const JsonArgs& args, ValidationErrors* errors) const = 0; + virtual absl::string_view proto_type() const = 0; + virtual RefCountedPtr ParseProto( + absl::string_view serialized_proto, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) const = 0; virtual RefCountedPtr CreateChannelCreds( - RefCountedPtr config) const = 0; + RefCountedPtr config, + CertificateProviderStoreInterface& certificate_provider_store) const = 0; }; template class ChannelCredsRegistry { private: using FactoryMap = - std::map>>; + std::map>>; public: static_assert(std::is_base_of::value, @@ -83,42 +106,70 @@ class ChannelCredsRegistry { public: void RegisterChannelCredsFactory( std::unique_ptr> factory) { - absl::string_view type = factory->type(); - factories_[type] = std::move(factory); + std::shared_ptr> shared_factory( + std::move(factory)); + absl::string_view type = shared_factory->type(); + if (!type.empty()) name_map_[type] = shared_factory; + absl::string_view proto_type = shared_factory->proto_type(); + if (!proto_type.empty()) proto_map_[proto_type] = shared_factory; } + ChannelCredsRegistry Build() { - return ChannelCredsRegistry(std::move(factories_)); + return ChannelCredsRegistry(std::move(name_map_), + std::move(proto_map_)); } private: - FactoryMap factories_; + FactoryMap name_map_; + FactoryMap proto_map_; }; bool IsSupported(absl::string_view type) const { - return factories_.find(type) != factories_.end(); + return name_map_.find(type) != name_map_.end(); } - RefCountedPtr ParseConfig( + RefCountedPtr ParseConfig( absl::string_view type, const Json& config, const JsonArgs& args, ValidationErrors* errors) const { - const auto it = factories_.find(type); - if (it == factories_.cend()) return nullptr; + const auto it = name_map_.find(type); + if (it == name_map_.cend()) return nullptr; return it->second->ParseConfig(config, args, errors); } + bool IsProtoSupported(absl::string_view type) const { + return proto_map_.find(type) != proto_map_.end(); + } + + RefCountedPtr ParseProto( + absl::string_view proto_type, absl::string_view serialized_proto, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) const { + const auto it = proto_map_.find(proto_type); + if (it == proto_map_.cend()) return nullptr; + return it->second->ParseProto(serialized_proto, + certificate_provider_definitions, errors); + } + RefCountedPtr CreateChannelCreds( - RefCountedPtr config) const { + RefCountedPtr config, + CertificateProviderStoreInterface& certificate_provider_store) const { if (config == nullptr) return nullptr; - const auto it = factories_.find(config->type()); - if (it == factories_.cend()) return nullptr; - return it->second->CreateChannelCreds(std::move(config)); + auto it = name_map_.find(config->type()); + if (it == name_map_.cend()) { + it = proto_map_.find(config->proto_type()); + if (it == proto_map_.cend()) return nullptr; + } + return it->second->CreateChannelCreds(std::move(config), + certificate_provider_store); } private: - explicit ChannelCredsRegistry(FactoryMap factories) - : factories_(std::move(factories)) {} + ChannelCredsRegistry(FactoryMap name_map, FactoryMap proto_map) + : name_map_(std::move(name_map)), proto_map_(std::move(proto_map)) {} - FactoryMap factories_; + FactoryMap name_map_; + FactoryMap proto_map_; }; } // namespace grpc_core diff --git a/deps/grpc/src/core/credentials/transport/channel_creds_registry_init.cc b/deps/grpc/src/core/credentials/transport/channel_creds_registry_init.cc index 5ea3b0393e3..a7ca480633e 100644 --- a/deps/grpc/src/core/credentials/transport/channel_creds_registry_init.cc +++ b/deps/grpc/src/core/credentials/transport/channel_creds_registry_init.cc @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -28,11 +27,15 @@ #include #include +#include "envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h" +#include "envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h" +#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h" #include "src/core/config/core_configuration.h" #include "src/core/credentials/call/call_credentials.h" #include "src/core/credentials/transport/channel_creds_registry.h" #include "src/core/credentials/transport/fake/fake_credentials.h" #include "src/core/credentials/transport/google_default/google_default_credentials.h" // IWYU pragma: keep +#include "src/core/credentials/transport/ssl/ssl_credentials.h" #include "src/core/credentials/transport/tls/grpc_tls_certificate_provider.h" #include "src/core/credentials/transport/tls/grpc_tls_credentials_options.h" #include "src/core/credentials/transport/tls/tls_credentials.h" @@ -42,6 +45,7 @@ #include "src/core/util/ref_counted_ptr.h" #include "src/core/util/time.h" #include "src/core/util/validation_errors.h" +#include "absl/functional/any_invocable.h" #include "absl/strings/string_view.h" namespace grpc_core { @@ -49,13 +53,23 @@ namespace grpc_core { class GoogleDefaultChannelCredsFactory : public ChannelCredsFactory<> { public: absl::string_view type() const override { return Type(); } - RefCountedPtr ParseConfig( + RefCountedPtr ParseConfig( const Json& /*config*/, const JsonArgs& /*args*/, ValidationErrors* /*errors*/) const override { return MakeRefCounted(); } + absl::string_view proto_type() const override { return ProtoType(); } + RefCountedPtr ParseProto( + absl::string_view /*serialized_config*/, + const CertificateProviderStoreInterface::PluginDefinitionMap& + /*certificate_provider_definitions*/, + ValidationErrors* /*errors*/) const override { + return MakeRefCounted(); + } RefCountedPtr CreateChannelCreds( - RefCountedPtr /*config*/) const override { + RefCountedPtr /*config*/, + CertificateProviderStoreInterface& /*certificate_provider_store*/) + const override { return RefCountedPtr( grpc_google_default_credentials_create(nullptr, nullptr)); } @@ -64,64 +78,143 @@ class GoogleDefaultChannelCredsFactory : public ChannelCredsFactory<> { class Config : public ChannelCredsConfig { public: absl::string_view type() const override { return Type(); } + absl::string_view proto_type() const override { return ProtoType(); } bool Equals(const ChannelCredsConfig&) const override { return true; } std::string ToString() const override { return "{}"; } }; static absl::string_view Type() { return "google_default"; } + + static absl::string_view ProtoType() { + return "envoy.extensions.grpc_service.channel_credentials.google_default" + ".v3.GoogleDefaultCredentials"; + } }; class TlsChannelCredsFactory : public ChannelCredsFactory<> { public: absl::string_view type() const override { return Type(); } - RefCountedPtr ParseConfig( + RefCountedPtr ParseConfig( const Json& config, const JsonArgs& args, ValidationErrors* errors) const override { return LoadFromJson>(config, args, errors); } + absl::string_view proto_type() const override { return ProtoType(); } + + RefCountedPtr ParseProto( + absl::string_view serialized_config, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) const override { + return TlsConfig::ParseProto(serialized_config, + certificate_provider_definitions, errors); + } + RefCountedPtr CreateChannelCreds( - RefCountedPtr base_config) const override { + RefCountedPtr base_config, + CertificateProviderStoreInterface& certificate_provider_store) + const override { auto* config = static_cast(base_config.get()); auto options = MakeRefCounted(); - if (!config->certificate_file().empty() || - !config->ca_certificate_file().empty()) { - // TODO(gtcooke94): Expose the spiffe_bundle_map option in the XDS - // bootstrap config to use here. - options->set_certificate_provider( - MakeRefCounted( - config->private_key_file(), config->certificate_file(), - config->ca_certificate_file(), /*spiffe_bundle_map_file=*/"", - config->refresh_interval().millis() / GPR_MS_PER_SEC)); + if (!config->root_certificate_provider().instance_name.empty()) { + options->set_root_certificate_provider( + certificate_provider_store.CreateOrGetCertificateProvider( + config->root_certificate_provider().instance_name)); + options->set_root_cert_name( + config->root_certificate_provider().certificate_name); + if (!config->identity_certificate_provider().instance_name.empty()) { + options->set_identity_certificate_provider( + certificate_provider_store.CreateOrGetCertificateProvider( + config->identity_certificate_provider().instance_name)); + options->set_identity_cert_name( + config->identity_certificate_provider().certificate_name); + } + } else { + if (!config->certificate_file().empty() || + !config->ca_certificate_file().empty()) { + // TODO(gtcooke94): Expose the spiffe_bundle_map option in the XDS + // bootstrap config to use here. + auto provider = MakeRefCounted( + config->private_key_file(), config->certificate_file(), + config->ca_certificate_file(), /*spiffe_bundle_map_file=*/"", + config->refresh_interval().millis() / GPR_MS_PER_SEC); + options->set_root_certificate_provider( + config->ca_certificate_file().empty() ? nullptr : provider); + options->set_identity_certificate_provider( + config->certificate_file().empty() ? nullptr : provider); + } } - options->set_watch_root_cert(!config->ca_certificate_file().empty()); - options->set_watch_identity_pair(!config->certificate_file().empty()); options->set_certificate_verifier( MakeRefCounted()); return MakeRefCounted(std::move(options)); } private: - // TODO(roth): It would be nice to share most of this config with the - // xDS file watcher cert provider factory, but that would require - // adding a dependency from lib to ext. + // TODO(roth): This duplicates a bunch of code from the xDS bootstrap + // parsing code and the CommonTlsContext parsing code. When we have + // time, figure out a way to avoid this duplication without causing + // dependency headaches for CoreConfiguration. class TlsConfig : public ChannelCredsConfig { public: + struct CertificateProviderInstance { + std::string instance_name; + std::string certificate_name; + + void PopulateFromProto( + const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* + proto, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) { + instance_name = UpbStringToStdString( + envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name( + proto)); + if (certificate_provider_definitions.find(instance_name) == + certificate_provider_definitions.end()) { + ValidationErrors::ScopedField field(errors, ".instance_name"); + errors->AddError( + absl::StrCat("unrecognized certificate provider instance name: ", + instance_name)); + } + certificate_name = UpbStringToStdString( + envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name( + proto)); + } + + bool operator==(const CertificateProviderInstance& other) const { + return instance_name == other.instance_name && + certificate_name == other.certificate_name; + } + + std::string ToString() const { + std::vector parts; + parts.push_back(absl::StrCat("instance_name=\"", instance_name, "\"")); + if (!certificate_name.empty()) { + parts.push_back( + absl::StrCat("certificate_name=\"", certificate_name, "\"")); + } + return absl::StrCat("{", absl::StrJoin(parts, ","), "}"); + } + }; + absl::string_view type() const override { return Type(); } + absl::string_view proto_type() const override { return ProtoType(); } + bool Equals(const ChannelCredsConfig& other) const override { - auto& o = static_cast(other); + auto& o = DownCast(other); return certificate_file_ == o.certificate_file_ && private_key_file_ == o.private_key_file_ && ca_certificate_file_ == o.ca_certificate_file_ && - refresh_interval_ == o.refresh_interval_; + refresh_interval_ == o.refresh_interval_ && + root_certificate_provider_ == o.root_certificate_provider_ && + identity_certificate_provider_ == o.identity_certificate_provider_; } std::string ToString() const override { std::vector parts; - Json::Object obj; - parts.push_back("{"); if (!certificate_file_.empty()) { parts.push_back(absl::StrCat("certificate_file=", certificate_file_)); } @@ -136,8 +229,16 @@ class TlsChannelCredsFactory : public ChannelCredsFactory<> { parts.push_back( absl::StrCat("refresh_interval=", refresh_interval_.ToString())); } - parts.push_back("}"); - return absl::StrJoin(parts, ","); + if (!root_certificate_provider_.instance_name.empty()) { + parts.push_back(absl::StrCat("root_cert_provider=", + root_certificate_provider_.ToString())); + } + if (!identity_certificate_provider_.instance_name.empty()) { + parts.push_back( + absl::StrCat("identity_cert_provider=", + identity_certificate_provider_.ToString())); + } + return absl::StrCat("{", absl::StrJoin(parts, ","), "}"); } const std::string& certificate_file() const { return certificate_file_; } @@ -147,6 +248,13 @@ class TlsChannelCredsFactory : public ChannelCredsFactory<> { } Duration refresh_interval() const { return refresh_interval_; } + const CertificateProviderInstance& root_certificate_provider() const { + return root_certificate_provider_; + } + const CertificateProviderInstance& identity_certificate_provider() const { + return identity_certificate_provider_; + } + static const JsonLoaderInterface* JsonLoader(const JsonArgs&) { static const auto* loader = JsonObjectLoader() @@ -169,16 +277,69 @@ class TlsChannelCredsFactory : public ChannelCredsFactory<> { } } + static RefCountedPtr ParseProto( + absl::string_view serialized_proto, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) { + upb::Arena arena; + const auto* proto = + envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_parse( + serialized_proto.data(), serialized_proto.size(), arena.ptr()); + if (proto == nullptr) { + errors->AddError("could not parse channel credentials config"); + return nullptr; + } + auto config = MakeRefCounted(); + // root_certificate_provider + { + ValidationErrors::ScopedField field(errors, + ".root_certificate_provider"); + const auto* root_provider = + envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_root_certificate_provider( + proto); + if (root_provider == nullptr) { + errors->AddError("field not set"); + } else { + config->root_certificate_provider_.PopulateFromProto( + root_provider, certificate_provider_definitions, errors); + } + } + // identity_certificate_provider + { + ValidationErrors::ScopedField field(errors, + ".identity_certificate_provider"); + const auto* identity_provider = + envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_identity_certificate_provider( + proto); + if (identity_provider != nullptr) { + config->identity_certificate_provider_.PopulateFromProto( + identity_provider, certificate_provider_definitions, errors); + } + return config; + } + } + private: static constexpr Duration kDefaultRefreshInterval = Duration::Minutes(10); + // Fields populated from xDS bootstrap file. std::string certificate_file_; std::string private_key_file_; std::string ca_certificate_file_; Duration refresh_interval_ = kDefaultRefreshInterval; + + // Fields populated from GrpcService proto credentials extension. + CertificateProviderInstance root_certificate_provider_; + CertificateProviderInstance identity_certificate_provider_; }; static absl::string_view Type() { return "tls"; } + + static absl::string_view ProtoType() { + return "envoy.extensions.grpc_service.channel_credentials.tls" + ".v3.TlsCredentials"; + } }; constexpr Duration TlsChannelCredsFactory::TlsConfig::kDefaultRefreshInterval; @@ -186,13 +347,23 @@ constexpr Duration TlsChannelCredsFactory::TlsConfig::kDefaultRefreshInterval; class InsecureChannelCredsFactory : public ChannelCredsFactory<> { public: absl::string_view type() const override { return Type(); } - RefCountedPtr ParseConfig( + RefCountedPtr ParseConfig( const Json& /*config*/, const JsonArgs& /*args*/, ValidationErrors* /*errors*/) const override { return MakeRefCounted(); } + absl::string_view proto_type() const override { return ProtoType(); } + RefCountedPtr ParseProto( + absl::string_view /*serialized_config*/, + const CertificateProviderStoreInterface::PluginDefinitionMap& + /*certificate_provider_definitions*/, + ValidationErrors* /*errors*/) const override { + return MakeRefCounted(); + } RefCountedPtr CreateChannelCreds( - RefCountedPtr /*config*/) const override { + RefCountedPtr /*config*/, + CertificateProviderStoreInterface& /*certificate_provider_store*/) + const override { return RefCountedPtr( grpc_insecure_credentials_create()); } @@ -201,23 +372,149 @@ class InsecureChannelCredsFactory : public ChannelCredsFactory<> { class Config : public ChannelCredsConfig { public: absl::string_view type() const override { return Type(); } + absl::string_view proto_type() const override { return ProtoType(); } bool Equals(const ChannelCredsConfig&) const override { return true; } std::string ToString() const override { return "{}"; } }; static absl::string_view Type() { return "insecure"; } + + static absl::string_view ProtoType() { + return "envoy.extensions.grpc_service.channel_credentials.insecure" + ".v3.InsecureCredentials"; + } +}; + +class XdsChannelCredsFactory : public ChannelCredsFactory<> { + public: + absl::string_view type() const override { return ""; } + + RefCountedPtr ParseConfig( + const Json& /*config*/, const JsonArgs& /*args*/, + ValidationErrors* /*errors*/) const override { + return nullptr; + } + + absl::string_view proto_type() const override { return ProtoType(); } + + RefCountedPtr ParseProto( + absl::string_view serialized_config, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) const override { + return Config::ParseProto(serialized_config, + certificate_provider_definitions, errors); + } + + RefCountedPtr CreateChannelCreds( + RefCountedPtr config, + CertificateProviderStoreInterface& certificate_provider_store) + const override { + auto fallback_creds = + CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds( + DownCast(*config).fallback_credentials(), + certificate_provider_store); + return RefCountedPtr( + grpc_xds_credentials_create(fallback_creds.get())); + } + + private: + class Config : public ChannelCredsConfig { + public: + absl::string_view type() const override { return ""; } + + absl::string_view proto_type() const override { return ProtoType(); } + + bool Equals(const ChannelCredsConfig& other) const override { + auto& o = DownCast(other); + if (fallback_credentials_ == nullptr) { + return o.fallback_credentials_ == nullptr; + } else if (o.fallback_credentials_ == nullptr) { + return false; + } + return *fallback_credentials_ == *o.fallback_credentials_; + } + + std::string ToString() const override { + return absl::StrCat( + "{fallback_creds=", + fallback_credentials_ == nullptr + ? "" + : absl::StrCat("{type=", fallback_credentials_->type(), + ", config=", fallback_credentials_->ToString(), + "}"), + "}"); + } + + RefCountedPtr fallback_credentials() const { + return fallback_credentials_; + } + + static RefCountedPtr ParseProto( + absl::string_view serialized_proto, + const CertificateProviderStoreInterface::PluginDefinitionMap& + certificate_provider_definitions, + ValidationErrors* errors) { + upb::Arena arena; + const auto* proto = + envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_parse( + serialized_proto.data(), serialized_proto.size(), arena.ptr()); + if (proto == nullptr) { + errors->AddError("could not parse channel credentials config"); + return nullptr; + } + auto config = MakeRefCounted(); + ValidationErrors::ScopedField field(errors, ".fallback_credentials"); + const auto* fallback_creds_proto = + envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_fallback_credentials( + proto); + if (fallback_creds_proto == nullptr) { + errors->AddError("field not set"); + } else { + absl::string_view type = absl::StripPrefix( + UpbStringToAbsl(google_protobuf_Any_type_url(fallback_creds_proto)), + "type.googleapis.com/"); + ValidationErrors::ScopedField field(errors, ".value"); + config->fallback_credentials_ = + CoreConfiguration::Get().channel_creds_registry().ParseProto( + type, + UpbStringToAbsl( + google_protobuf_Any_value(fallback_creds_proto)), + certificate_provider_definitions, errors); + } + return config; + } + + private: + RefCountedPtr fallback_credentials_; + }; + + static absl::string_view ProtoType() { + return "envoy.extensions.grpc_service.channel_credentials.xds.v3" + ".XdsCredentials"; + } }; class FakeChannelCredsFactory : public ChannelCredsFactory<> { public: absl::string_view type() const override { return Type(); } - RefCountedPtr ParseConfig( + RefCountedPtr ParseConfig( const Json& /*config*/, const JsonArgs& /*args*/, ValidationErrors* /*errors*/) const override { return MakeRefCounted(); } + absl::string_view proto_type() const override { return ""; } + RefCountedPtr ParseProto( + absl::string_view /*serialized_config*/, + const CertificateProviderStoreInterface::PluginDefinitionMap& + /*certificate_provider_definitions*/, + ValidationErrors* /*errors*/) const override { + return MakeRefCounted(); + } RefCountedPtr CreateChannelCreds( - RefCountedPtr /*config*/) const override { + RefCountedPtr /*config*/, + CertificateProviderStoreInterface& /*certificate_provider_store*/) + const override { return RefCountedPtr( grpc_fake_transport_security_credentials_create()); } @@ -226,6 +523,7 @@ class FakeChannelCredsFactory : public ChannelCredsFactory<> { class Config : public ChannelCredsConfig { public: absl::string_view type() const override { return Type(); } + absl::string_view proto_type() const override { return ""; } bool Equals(const ChannelCredsConfig&) const override { return true; } std::string ToString() const override { return "{}"; } }; @@ -240,8 +538,19 @@ void RegisterChannelDefaultCreds(CoreConfiguration::Builder* builder) { std::make_unique()); builder->channel_creds_registry()->RegisterChannelCredsFactory( std::make_unique()); + builder->channel_creds_registry()->RegisterChannelCredsFactory( + std::make_unique()); builder->channel_creds_registry()->RegisterChannelCredsFactory( std::make_unique()); } +void RegisterAuthComparators(CoreConfiguration::Builder* builder) { + builder->auth_context_comparator_registry()->RegisterComparator( + std::string(grpc_ssl_credentials::Type().name()), + std::make_unique>( + [&](const grpc_auth_context* ctx1, const grpc_auth_context* ctx2) + -> bool { return SslLeafHashComparator(ctx1, ctx2); })); +} + } // namespace grpc_core diff --git a/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.cc b/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.cc index 8d6411ed419..6bc5f211b18 100644 --- a/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.cc +++ b/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.cc @@ -18,16 +18,22 @@ #include "src/core/credentials/transport/ssl/ssl_credentials.h" +#include +#include +#include #include #include #include #include #include +#include #include #include #include +#include "src/core/credentials/transport/security_connector.h" +#include "src/core/credentials/transport/ssl/ssl_security_connector.h" #include "src/core/credentials/transport/tls/ssl_utils.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/debug/trace.h" @@ -35,6 +41,8 @@ #include "src/core/tsi/ssl_transport_security.h" #include "src/core/tsi/transport_security_interface.h" #include "src/core/util/grpc_check.h" +#include "src/core/util/ref_counted_ptr.h" +#include "src/core/util/unique_type_name.h" #include "absl/log/log.h" // @@ -68,7 +76,6 @@ grpc_ssl_credentials::grpc_ssl_credentials( grpc_ssl_credentials::~grpc_ssl_credentials() { gpr_free(config_.pem_root_certs); - grpc_tsi_ssl_pem_key_cert_pairs_destroy(config_.pem_key_cert_pair, 1); if (config_.verify_options.verify_peer_destruct != nullptr) { config_.verify_options.verify_peer_destruct( config_.verify_options.verify_peer_callback_userdata); @@ -145,14 +152,8 @@ void grpc_ssl_credentials::build_config( if (pem_key_cert_pair != nullptr) { GRPC_CHECK_NE(pem_key_cert_pair->private_key, nullptr); GRPC_CHECK_NE(pem_key_cert_pair->cert_chain, nullptr); - config_.pem_key_cert_pair = static_cast( - gpr_zalloc(sizeof(tsi_ssl_pem_key_cert_pair))); - config_.pem_key_cert_pair->cert_chain = - gpr_strdup(pem_key_cert_pair->cert_chain); - config_.pem_key_cert_pair->private_key = - gpr_strdup(pem_key_cert_pair->private_key); - } else { - config_.pem_key_cert_pair = nullptr; + config_.pem_key_cert_pair.cert_chain = pem_key_cert_pair->cert_chain; + config_.pem_key_cert_pair.private_key = pem_key_cert_pair->private_key; } if (verify_options != nullptr) { memcpy(&config_.verify_options, verify_options, @@ -184,21 +185,21 @@ grpc_security_status grpc_ssl_credentials::InitializeClientHandshakerFactory( return GRPC_SECURITY_OK; } - bool has_key_cert_pair = config->pem_key_cert_pair != nullptr && - config->pem_key_cert_pair->private_key != nullptr && - config->pem_key_cert_pair->cert_chain != nullptr; + bool has_key_cert_pair = + !grpc_core::IsPrivateKeyEmpty(config->pem_key_cert_pair.private_key) && + !config->pem_key_cert_pair.cert_chain.empty(); tsi_ssl_client_handshaker_options options; if (pem_root_certs == nullptr) { LOG(ERROR) << "Handshaker factory creation failed. pem_root_certs cannot " "be nullptr"; return GRPC_SECURITY_ERROR; } - options.root_cert_info = std::make_shared(pem_root_certs); + options.root_cert_info = std::make_shared(pem_root_certs); options.root_store = root_store; options.alpn_protocols = grpc_fill_alpn_protocol_strings(&options.num_alpn_protocols); if (has_key_cert_pair) { - options.pem_key_cert_pair = config->pem_key_cert_pair; + options.pem_key_cert_pair = &config->pem_key_cert_pair; } options.cipher_suites = grpc_get_ssl_cipher_suites(); options.session_cache = ssl_session_cache; @@ -271,8 +272,6 @@ grpc_ssl_server_credentials::grpc_ssl_server_credentials( } grpc_ssl_server_credentials::~grpc_ssl_server_credentials() { - grpc_tsi_ssl_pem_key_cert_pairs_destroy(config_.pem_key_cert_pairs, - config_.num_key_cert_pairs); gpr_free(config_.pem_root_certs); } grpc_core::RefCountedPtr @@ -286,20 +285,18 @@ grpc_core::UniqueTypeName grpc_ssl_server_credentials::Type() { return kFactory.Create(); } -tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs( +std::vector grpc_convert_grpc_to_tsi_cert_pairs( const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs, size_t num_key_cert_pairs) { - tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr; + std::vector tsi_pairs; if (num_key_cert_pairs > 0) { GRPC_CHECK_NE(pem_key_cert_pairs, nullptr); - tsi_pairs = static_cast( - gpr_zalloc(num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair))); } for (size_t i = 0; i < num_key_cert_pairs; i++) { GRPC_CHECK_NE(pem_key_cert_pairs[i].private_key, nullptr); GRPC_CHECK_NE(pem_key_cert_pairs[i].cert_chain, nullptr); - tsi_pairs[i].cert_chain = gpr_strdup(pem_key_cert_pairs[i].cert_chain); - tsi_pairs[i].private_key = gpr_strdup(pem_key_cert_pairs[i].private_key); + tsi_pairs.emplace_back(pem_key_cert_pairs[i].private_key, + pem_key_cert_pairs[i].cert_chain); } return tsi_pairs; } @@ -312,7 +309,6 @@ void grpc_ssl_server_credentials::build_config( config_.pem_root_certs = gpr_strdup(pem_root_certs); config_.pem_key_cert_pairs = grpc_convert_grpc_to_tsi_cert_pairs( pem_key_cert_pairs, num_key_cert_pairs); - config_.num_key_cert_pairs = num_key_cert_pairs; } void grpc_ssl_server_credentials::set_min_tls_version( @@ -422,7 +418,7 @@ grpc_server_credentials* grpc_ssl_server_credentials_create_ex( GRPC_TRACE_LOG(api, INFO) << "grpc_ssl_server_credentials_create_ex(pem_root_certs=" << pem_root_certs << ", pem_key_cert_pairs=" << pem_key_cert_pairs - << ", num_key_cert_pairs=" << (unsigned long)num_key_cert_pairs + << ", num_key_cert_pairs=" << num_key_cert_pairs << ", client_certificate_request=" << client_certificate_request << ", reserved=" << reserved << ")"; GRPC_CHECK_EQ(reserved, nullptr); @@ -471,3 +467,26 @@ void grpc_ssl_server_credentials_options_destroy( grpc_ssl_server_certificate_config_destroy(o->certificate_config); gpr_free(o); } + +namespace { + +std::string GetLeafCert(const grpc_auth_context* ctx) { + if (ctx == nullptr) return ""; + grpc_auth_property_iterator it = grpc_auth_context_find_properties_by_name( + ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME); + const grpc_auth_property* prop = grpc_auth_property_iterator_next(&it); + if (prop == nullptr) return ""; + return std::string(prop->value, prop->value_length); +} + +} // namespace + +bool SslLeafHashComparator(const grpc_auth_context* ctx1, + const grpc_auth_context* ctx2) { + std::string cert1 = GetLeafCert(ctx1); + std::string cert2 = GetLeafCert(ctx2); + // If either cert is empty, we consider them not matching (or not + // authenticated). This is a safe default for now. + if (cert1.empty() || cert2.empty()) return false; + return cert1 == cert2; +} diff --git a/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.h b/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.h index 819ef405677..52b4ee409e2 100644 --- a/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.h +++ b/deps/grpc/src/core/credentials/transport/ssl/ssl_credentials.h @@ -137,8 +137,14 @@ class grpc_ssl_server_credentials final : public grpc_server_credentials { grpc_ssl_server_certificate_config_fetcher certificate_config_fetcher_; }; -tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs( +std::vector grpc_convert_grpc_to_tsi_cert_pairs( const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs, size_t num_key_cert_pairs); +// Compares the leaf certificate of the peer in two auth contexts. +// Returns true if both contexts have the same leaf certificate (PEM). +// Returns false otherwise. +bool SslLeafHashComparator(const grpc_auth_context* ctx1, + const grpc_auth_context* ctx2); + #endif // GRPC_SRC_CORE_CREDENTIALS_TRANSPORT_SSL_SSL_CREDENTIALS_H diff --git a/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.cc b/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.cc index 54e0961382d..856cadbaae4 100644 --- a/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.cc +++ b/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.cc @@ -241,10 +241,8 @@ class grpc_ssl_server_security_connector tsi_ssl_server_handshaker_options options; options.pem_key_cert_pairs = server_credentials->config().pem_key_cert_pairs; - options.num_key_cert_pairs = - server_credentials->config().num_key_cert_pairs; if (server_credentials->config().pem_root_certs != nullptr) { - options.root_cert_info = std::make_shared( + options.root_cert_info = std::make_shared( server_credentials->config().pem_root_certs); } options.client_certificate_request = @@ -361,10 +359,9 @@ class grpc_ssl_server_security_connector tsi_ssl_server_handshaker_options options; options.pem_key_cert_pairs = grpc_convert_grpc_to_tsi_cert_pairs( config->pem_key_cert_pairs, config->num_key_cert_pairs); - options.num_key_cert_pairs = config->num_key_cert_pairs; if (config->pem_root_certs != nullptr) { options.root_cert_info = - std::make_shared(config->pem_root_certs); + std::make_shared(config->pem_root_certs); } options.client_certificate_request = grpc_get_tsi_client_certificate_request_type( @@ -374,9 +371,6 @@ class grpc_ssl_server_security_connector options.num_alpn_protocols = static_cast(num_alpn_protocols); tsi_result result = tsi_create_ssl_server_handshaker_factory_with_options( &options, &new_handshaker_factory); - grpc_tsi_ssl_pem_key_cert_pairs_destroy( - const_cast(options.pem_key_cert_pairs), - options.num_key_cert_pairs); gpr_free(alpn_protocol_strings); if (result != TSI_OK) { diff --git a/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.h b/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.h index ad56840eb58..f55a7c96f30 100644 --- a/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.h +++ b/deps/grpc/src/core/credentials/transport/ssl/ssl_security_connector.h @@ -25,12 +25,14 @@ #include #include +#include + #include "src/core/credentials/transport/security_connector.h" #include "src/core/tsi/ssl_transport_security.h" #include "src/core/util/ref_counted_ptr.h" struct grpc_ssl_config { - tsi_ssl_pem_key_cert_pair* pem_key_cert_pair; + tsi_ssl_pem_key_cert_pair pem_key_cert_pair; char* pem_root_certs; verify_peer_options verify_options; grpc_tls_version min_tls_version = grpc_tls_version::TLS1_2; @@ -60,8 +62,7 @@ grpc_ssl_channel_security_connector_create( // Config for ssl servers. struct grpc_ssl_server_config { - tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs = nullptr; - size_t num_key_cert_pairs = 0; + std::vector pem_key_cert_pairs; char* pem_root_certs = nullptr; grpc_ssl_client_certificate_request_type client_certificate_request = GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE; diff --git a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc index 5a427d7bda5..6867d13ab9b 100644 --- a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +++ b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc @@ -20,17 +20,16 @@ #include #include -#include "src/core/credentials/transport/tls/spiffe_utils.h" #include "src/core/tsi/ssl_transport_security.h" #include "src/core/util/grpc_check.h" #include "absl/status/status.h" bool grpc_tls_certificate_distributor::CertificateInfo::AreRootsEmpty() { - return IsRootCertInfoEmpty(roots.get()); + return tsi::IsRootCertInfoEmpty(roots.get()); } void grpc_tls_certificate_distributor::SetKeyMaterials( - const std::string& cert_name, std::shared_ptr roots, + const std::string& cert_name, std::shared_ptr roots, std::optional pem_key_cert_pairs) { GRPC_CHECK(roots != nullptr || pem_key_cert_pairs.has_value()); grpc_core::MutexLock lock(&mu_); @@ -67,7 +66,7 @@ void grpc_tls_certificate_distributor::SetKeyMaterials( const auto watcher_it = watchers_.find(watcher_ptr); GRPC_CHECK(watcher_it != watchers_.end()); GRPC_CHECK(watcher_it->second.identity_cert_name.has_value()); - std::shared_ptr roots_to_report; + std::shared_ptr roots_to_report; if (roots != nullptr && watcher_it->second.root_cert_name == cert_name) { // In this case, We've already sent the credential updates at the time // when checking pem_root_certs, so we will skip here. @@ -190,7 +189,7 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates( GRPC_CHECK(watcher_it == watchers_.end()); watchers_[watcher_ptr] = {std::move(watcher), root_cert_name, identity_cert_name}; - std::shared_ptr updated_roots; + std::shared_ptr updated_roots; std::optional updated_identity_pairs; grpc_error_handle root_error; grpc_error_handle identity_error; @@ -336,6 +335,27 @@ void grpc_tls_identity_pairs_add_pair(grpc_tls_identity_pairs* pairs, pairs->pem_key_cert_pairs.emplace_back(private_key, cert_chain); } +absl::Status grpc_tls_identity_pairs_add_pair_with_signer( + grpc_tls_identity_pairs* pairs, + std::shared_ptr private_key_signer, + absl::string_view cert_chain) { +#ifndef OPENSSL_IS_BORINGSSL + return absl::UnimplementedError( + "grpc_tls_identity_pairs_add_pair_with_signer is only supported with " + "BoringSSL."); +#else + if (pairs == nullptr) { + return absl::InvalidArgumentError("pairs must not be null."); + } + if (private_key_signer == nullptr) { + return absl::InvalidArgumentError("private_key_signer must not be null."); + } + pairs->pem_key_cert_pairs.emplace_back(std::move(private_key_signer), + cert_chain); + return absl::OkStatus(); +#endif +} + void grpc_tls_identity_pairs_destroy(grpc_tls_identity_pairs* pairs) { GRPC_CHECK_NE(pairs, nullptr); delete pairs; diff --git a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h index cf79878dd28..e9a3d156308 100644 --- a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +++ b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h @@ -27,20 +27,22 @@ #include #include -#include "src/core/credentials/transport/tls/spiffe_utils.h" #include "src/core/credentials/transport/tls/ssl_utils.h" #include "src/core/lib/iomgr/error.h" #include "src/core/tsi/ssl_transport_security.h" #include "src/core/util/ref_counted.h" #include "src/core/util/sync.h" #include "absl/base/thread_annotations.h" -#include "absl/strings/string_view.h" struct grpc_tls_identity_pairs { grpc_core::PemKeyCertPairList pem_key_cert_pairs; }; // TLS certificate distributor. +// TODO(anasalazar): Since there are no use-cases where we need to update root +// and identity certs as an atomic unit, the flow of the certs through the cert +// providers and to the TLS security connector can be greatly simplified. We may +// even be able to remove the distributor code completely. struct grpc_tls_certificate_distributor : public grpc_core::RefCounted { public: @@ -59,7 +61,7 @@ struct grpc_tls_certificate_distributor // @param key_cert_pairs the contents of the reloaded identity key-cert // pairs. virtual void OnCertificatesChanged( - std::shared_ptr roots, + std::shared_ptr roots, std::optional key_cert_pairs) = 0; // Handles an error that occurs while attempting to fetch certificate data. @@ -87,7 +89,7 @@ struct grpc_tls_certificate_distributor // the SpiffeBundleMap. // @param pem_key_cert_pairs The content of identity key-cert pairs. void SetKeyMaterials( - const std::string& cert_name, std::shared_ptr roots, + const std::string& cert_name, std::shared_ptr roots, std::optional pem_key_cert_pairs); bool HasRootCerts(const std::string& root_cert_name); @@ -174,7 +176,7 @@ struct grpc_tls_certificate_distributor // root certs, while pem_root_certs still contains the valid old data. struct CertificateInfo { // The contents of the root certificates. - std::shared_ptr roots; + std::shared_ptr roots; // The contents of the identity key-certificate pairs. grpc_core::PemKeyCertPairList pem_key_cert_pairs; // TODO(gtcooke94) Swap to using absl::StatusOr<> diff --git a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc index 2ae07676cfd..f30fe8a8c1d 100644 --- a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +++ b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc @@ -23,8 +23,10 @@ #include #include -#include +#include +#include #include +#include #include #include "src/core/credentials/transport/tls/spiffe_utils.h" @@ -33,13 +35,12 @@ #include "src/core/lib/iomgr/error.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/slice/slice.h" -#include "src/core/lib/slice/slice_internal.h" #include "src/core/tsi/ssl_transport_security_utils.h" +#include "src/core/util/down_cast.h" #include "src/core/util/grpc_check.h" #include "src/core/util/load_file.h" #include "src/core/util/match.h" #include "src/core/util/stat.h" -#include "src/core/util/status_helper.h" #include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/string_view.h" @@ -47,14 +48,14 @@ namespace grpc_core { namespace { -absl::Status ValidateRootCertificates(const RootCertInfo* root_cert_info) { +absl::Status ValidateRootCertificates(const tsi::RootCertInfo* root_cert_info) { if (root_cert_info == nullptr) return absl::OkStatus(); return Match( *root_cert_info, [&](const std::string& root_certificates) { if (root_certificates.empty()) return absl::OkStatus(); absl::StatusOr> parsed_roots = - ParsePemCertificateChain(root_certificates); + tsi::ParsePemCertificateChain(root_certificates); if (!parsed_roots.ok()) { return absl::Status( parsed_roots.status().code(), @@ -74,11 +75,13 @@ absl::Status ValidateRootCertificates(const RootCertInfo* root_cert_info) { } absl::Status ValidatePemKeyCertPair(absl::string_view cert_chain, - absl::string_view private_key) { - if (cert_chain.empty() && private_key.empty()) return absl::OkStatus(); + const PrivateKey& private_key) { + if (cert_chain.empty() && IsPrivateKeyEmpty(private_key)) { + return absl::OkStatus(); + } // Check that the cert chain consists of valid PEM blocks. absl::StatusOr> parsed_certs = - ParsePemCertificateChain(cert_chain); + tsi::ParsePemCertificateChain(cert_chain); if (!parsed_certs.ok()) { return absl::Status( parsed_certs.status().code(), @@ -88,9 +91,12 @@ absl::Status ValidatePemKeyCertPair(absl::string_view cert_chain, for (X509* x509 : *parsed_certs) { X509_free(x509); } + const std::string* private_key_string = + std::get_if(&private_key); + if (private_key_string == nullptr) return absl::OkStatus(); // Check that the private key consists of valid PEM blocks. absl::StatusOr parsed_private_key = - ParsePemPrivateKey(private_key); + tsi::ParsePemPrivateKey(*private_key_string); if (!parsed_private_key.ok()) { return absl::Status(parsed_private_key.status().code(), absl::StrCat("Failed to parse private key as PEM: ", @@ -101,8 +107,8 @@ absl::Status ValidatePemKeyCertPair(absl::string_view cert_chain, } bool HasRootCertInfoChanged( - const absl::StatusOr>& old, - const absl::StatusOr>& updated) { + const absl::StatusOr>& old, + const absl::StatusOr>& updated) { if (old.status() != updated.status()) return true; // Status changed. if (!old.ok()) return false; // Both have same non-OK status. // Both have OK status. @@ -112,84 +118,6 @@ bool HasRootCertInfoChanged( return **old != **updated; } -} // namespace - -StaticDataCertificateProvider::StaticDataCertificateProvider( - std::string root_certificate, PemKeyCertPairList pem_key_cert_pairs) - : distributor_(MakeRefCounted()), - root_cert_info_(std::make_shared(root_certificate)), - pem_key_cert_pairs_(std::move(pem_key_cert_pairs)) { - distributor_->SetWatchStatusCallback([this](std::string cert_name, - bool root_being_watched, - bool identity_being_watched) { - MutexLock lock(&mu_); - std::shared_ptr root_cert_info; - std::optional pem_key_cert_pairs; - StaticDataCertificateProvider::WatcherInfo& info = watcher_info_[cert_name]; - if (!info.root_being_watched && root_being_watched && - !IsRootCertInfoEmpty(root_cert_info_.get())) { - root_cert_info = root_cert_info_; - } - info.root_being_watched = root_being_watched; - if (!info.identity_being_watched && identity_being_watched && - !pem_key_cert_pairs_.empty()) { - pem_key_cert_pairs = pem_key_cert_pairs_; - } - info.identity_being_watched = identity_being_watched; - if (!info.root_being_watched && !info.identity_being_watched) { - watcher_info_.erase(cert_name); - } - const bool root_has_update = root_cert_info != nullptr; - const bool identity_has_update = pem_key_cert_pairs.has_value(); - if (root_has_update || identity_has_update) { - distributor_->SetKeyMaterials(cert_name, std::move(root_cert_info), - std::move(pem_key_cert_pairs)); - } - grpc_error_handle root_cert_error; - grpc_error_handle identity_cert_error; - if (root_being_watched && !root_has_update) { - root_cert_error = - GRPC_ERROR_CREATE("Unable to get latest root certificates."); - } - if (identity_being_watched && !identity_has_update) { - identity_cert_error = - GRPC_ERROR_CREATE("Unable to get latest identity certificates."); - } - if (!root_cert_error.ok() || !identity_cert_error.ok()) { - distributor_->SetErrorForCert(cert_name, root_cert_error, - identity_cert_error); - } - }); -} - -StaticDataCertificateProvider::~StaticDataCertificateProvider() { - // Reset distributor's callback to make sure the callback won't be invoked - // again after this object(provider) is destroyed. - distributor_->SetWatchStatusCallback(nullptr); -} - -UniqueTypeName StaticDataCertificateProvider::type() const { - static UniqueTypeName::Factory kFactory("StaticData"); - return kFactory.Create(); -} - -absl::Status StaticDataCertificateProvider::ValidateCredentials() const { - absl::Status status = ValidateRootCertificates(root_cert_info_.get()); - if (!status.ok()) { - return status; - } - for (const PemKeyCertPair& pair : pem_key_cert_pairs_) { - absl::Status status = - ValidatePemKeyCertPair(pair.cert_chain(), pair.private_key()); - if (!status.ok()) { - return status; - } - } - return absl::OkStatus(); -} - -namespace { - gpr_timespec TimeoutSecondsToDeadline(int64_t seconds) { return gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), gpr_time_from_seconds(seconds, GPR_TIMESPAN)); @@ -244,7 +172,7 @@ FileWatcherCertificateProvider::FileWatcherCertificateProvider( bool root_being_watched, bool identity_being_watched) { MutexLock lock(&mu_); - absl::StatusOr> roots = nullptr; + absl::StatusOr> roots = nullptr; std::optional pem_key_cert_pairs; FileWatcherCertificateProvider::WatcherInfo& info = watcher_info_[cert_name]; @@ -316,12 +244,12 @@ absl::Status FileWatcherCertificateProvider::ValidateCredentials() const { } void FileWatcherCertificateProvider::ForceUpdate() { - absl::StatusOr> root_cert_info = nullptr; + absl::StatusOr> root_cert_info = nullptr; std::optional pem_key_cert_pairs; if (!spiffe_bundle_map_path_.empty()) { auto map = SpiffeBundleMap::FromFile(spiffe_bundle_map_path_); if (map.ok()) { - root_cert_info = std::make_shared(std::move(*map)); + root_cert_info = std::make_shared(std::move(*map)); } else { root_cert_info = absl::InvalidArgumentError( absl::StrFormat("spiffe bundle map file %s failed to load: %s", @@ -332,7 +260,7 @@ void FileWatcherCertificateProvider::ForceUpdate() { ReadRootCertificatesFromFile(root_cert_path_); if (root_certificate.has_value()) { root_cert_info = - std::make_shared(std::move(*root_certificate)); + std::make_shared(std::move(*root_certificate)); } } if (!private_key_path_.empty()) { @@ -365,7 +293,7 @@ void FileWatcherCertificateProvider::ForceUpdate() { for (const auto& p : watcher_info_) { const std::string& cert_name = p.first; const WatcherInfo& info = p.second; - std::shared_ptr root_to_report; + std::shared_ptr root_to_report; std::optional identity_to_report; // Set key materials to the distributor if their contents changed. if (info.root_being_watched && root_changed) { @@ -488,27 +416,140 @@ int64_t FileWatcherCertificateProvider::TestOnlyGetRefreshIntervalSecond() return refresh_interval_sec_; } -} // namespace grpc_core +InMemoryCertificateProvider::InMemoryCertificateProvider() + : distributor_(MakeRefCounted()) { + distributor_->SetWatchStatusCallback([this](std::string cert_name, + bool root_being_watched, + bool identity_being_watched) { + MutexLock lock(&mu_); + std::shared_ptr roots; + std::optional pem_key_cert_pairs; + WatcherInfo& info = watcher_info_[cert_name]; + if (!info.root_being_watched && root_being_watched && + root_certificates_.ok() && *root_certificates_ != nullptr) { + roots = *root_certificates_; + } + info.root_being_watched = root_being_watched; + if (!info.identity_being_watched && identity_being_watched && + !pem_key_cert_pairs_.empty()) { + pem_key_cert_pairs = pem_key_cert_pairs_; + } + info.identity_being_watched = identity_being_watched; + if (!info.root_being_watched && !info.identity_being_watched) { + watcher_info_.erase(cert_name); + } + if (roots != nullptr || pem_key_cert_pairs.has_value()) { + distributor_->SetKeyMaterials(cert_name, roots, pem_key_cert_pairs); + } + grpc_error_handle root_cert_error; + grpc_error_handle identity_cert_error; + if (root_being_watched && roots == nullptr) { + root_cert_error = + GRPC_ERROR_CREATE("Unable to get latest root certificates."); + } + if (identity_being_watched && !pem_key_cert_pairs.has_value()) { + identity_cert_error = + GRPC_ERROR_CREATE("Unable to get latest identity certificates."); + } + if (!root_cert_error.ok() || !identity_cert_error.ok()) { + distributor_->SetErrorForCert(cert_name, root_cert_error, + identity_cert_error); + } + }); +} -/// -- Wrapper APIs declared in grpc_security.h -- * +absl::Status InMemoryCertificateProvider::Update( + std::optional> root_cert_info, + std::optional pem_key_cert_pairs) { + MutexLock lock(&mu_); + const bool root_changed = + root_cert_info.has_value() && + HasRootCertInfoChanged(root_certificates_, *root_cert_info); + if (root_changed) { + root_certificates_ = std::move(*root_cert_info); + } + const bool identity_cert_changed = pem_key_cert_pairs.has_value() && + pem_key_cert_pairs_ != pem_key_cert_pairs; + if (identity_cert_changed) { + pem_key_cert_pairs_ = *pem_key_cert_pairs; + } + if (root_changed || identity_cert_changed) { + grpc_error_handle root_cert_error = + GRPC_ERROR_CREATE("Unable to get latest root certificates."); + grpc_error_handle identity_cert_error = + GRPC_ERROR_CREATE("Unable to get latest identity certificates."); + for (const auto& p : watcher_info_) { + const std::string& cert_name = p.first; + const WatcherInfo& info = p.second; + std::shared_ptr root_to_report; + std::optional identity_to_report; + // Set key materials to the distributor if their contents changed. + if (info.root_being_watched && root_changed) { + root_to_report = + root_certificates_.ok() ? *root_certificates_ : nullptr; + } + if (info.identity_being_watched && !pem_key_cert_pairs_.empty() && + identity_cert_changed) { + identity_to_report = pem_key_cert_pairs_; + } + if (root_to_report != nullptr || identity_to_report.has_value()) { + distributor_->SetKeyMaterials(cert_name, std::move(root_to_report), + std::move(identity_to_report)); + } + // Report errors to the distributor if the contents are empty. + const bool report_root_error = + info.root_being_watched && + (!root_certificates_.ok() || *root_certificates_ == nullptr); + const bool report_identity_error = + info.identity_being_watched && pem_key_cert_pairs_.empty(); + if (report_root_error || report_identity_error) { + distributor_->SetErrorForCert( + cert_name, report_root_error ? root_cert_error : absl::OkStatus(), + report_identity_error ? identity_cert_error : absl::OkStatus()); + } + } + } + return absl::OkStatus(); +} -grpc_tls_certificate_provider* grpc_tls_certificate_provider_static_data_create( - const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs) { - GRPC_CHECK(root_certificate != nullptr || pem_key_cert_pairs != nullptr); - grpc_core::ExecCtx exec_ctx; - grpc_core::PemKeyCertPairList identity_pairs_core; - if (pem_key_cert_pairs != nullptr) { - identity_pairs_core = std::move(pem_key_cert_pairs->pem_key_cert_pairs); - delete pem_key_cert_pairs; +absl::Status InMemoryCertificateProvider::ValidateCredentials() const { + MutexLock lock(&mu_); + if (!root_certificates_.ok()) { + return root_certificates_.status(); } - std::string root_cert_core; - if (root_certificate != nullptr) { - root_cert_core = root_certificate; + absl::Status status = ValidateRootCertificates(root_certificates_->get()); + if (!status.ok()) { + return status; + } + for (const PemKeyCertPair& pair : pem_key_cert_pairs_) { + absl::Status status = + ValidatePemKeyCertPair(pair.cert_chain(), pair.private_key()); + if (!status.ok()) { + return status; + } } - return new grpc_core::StaticDataCertificateProvider( - std::move(root_cert_core), std::move(identity_pairs_core)); + return absl::OkStatus(); } +absl::Status InMemoryCertificateProvider::UpdateRoot( + std::shared_ptr root_certificates) { + return Update(root_certificates, std::nullopt); +} + +absl::Status InMemoryCertificateProvider::UpdateIdentityKeyCertPair( + const PemKeyCertPairList& pem_key_cert_pairs) { + return Update(std::nullopt, pem_key_cert_pairs); +} + +UniqueTypeName InMemoryCertificateProvider::type() const { + static UniqueTypeName::Factory kFactory("InMemory"); + return kFactory.Create(); +} + +} // namespace grpc_core + +/// -- Wrapper APIs declared in grpc_security.h -- * + grpc_tls_certificate_provider* grpc_tls_certificate_provider_file_watcher_create( const char* private_key_path, const char* identity_certificate_path, @@ -523,6 +564,37 @@ grpc_tls_certificate_provider_file_watcher_create( refresh_interval_sec); } +grpc_tls_certificate_provider* +grpc_tls_certificate_provider_in_memory_create() { + grpc_core::ExecCtx exec_ctx; + return new grpc_core::InMemoryCertificateProvider(); +} + +bool grpc_tls_certificate_provider_in_memory_set_root_certificate( + grpc_tls_certificate_provider* provider, const char* root_cert) { + grpc_core::ExecCtx exec_ctx; + auto in_memory_provider = + grpc_core::DownCast(provider); + return in_memory_provider + ->UpdateRoot(std::make_shared(root_cert)) + .ok(); +} + +bool grpc_tls_certificate_provider_in_memory_set_identity_certificate( + grpc_tls_certificate_provider* provider, + grpc_tls_identity_pairs* pem_key_cert_pairs) { + grpc_core::ExecCtx exec_ctx; + grpc_core::PemKeyCertPairList identity_pairs_core; + if (pem_key_cert_pairs != nullptr) { + identity_pairs_core = std::move(pem_key_cert_pairs->pem_key_cert_pairs); + delete pem_key_cert_pairs; + } + auto in_memory_provider = + grpc_core::DownCast(provider); + return in_memory_provider->UpdateIdentityKeyCertPair(identity_pairs_core) + .ok(); +} + void grpc_tls_certificate_provider_release( grpc_tls_certificate_provider* provider) { GRPC_TRACE_LOG(api, INFO) diff --git a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h index d46f61853eb..faa0dd97c05 100644 --- a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +++ b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h @@ -27,7 +27,6 @@ #include #include "src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h" -#include "src/core/credentials/transport/tls/spiffe_utils.h" #include "src/core/credentials/transport/tls/ssl_utils.h" #include "src/core/util/grpc_check.h" #include "src/core/util/ref_counted.h" @@ -91,46 +90,6 @@ struct grpc_tls_certificate_provider namespace grpc_core { -// A basic provider class that will get credentials from string during -// initialization. -class StaticDataCertificateProvider final - : public grpc_tls_certificate_provider { - public: - StaticDataCertificateProvider(std::string root_certificate, - PemKeyCertPairList pem_key_cert_pairs); - - ~StaticDataCertificateProvider() override; - - RefCountedPtr distributor() const override { - return distributor_; - } - - UniqueTypeName type() const override; - - absl::Status ValidateCredentials() const; - - private: - struct WatcherInfo { - bool root_being_watched = false; - bool identity_being_watched = false; - }; - - int CompareImpl(const grpc_tls_certificate_provider* other) const override { - // TODO(yashykt): Maybe do something better here. - return QsortCompare(static_cast(this), - other); - } - - RefCountedPtr distributor_; - std::shared_ptr root_cert_info_; - PemKeyCertPairList pem_key_cert_pairs_; - // Guards members below. - Mutex mu_; - // Stores each cert_name we get from the distributor callback and its watcher - // information. - std::map watcher_info_; -}; - // A provider class that will watch the credential changes on the file system. class FileWatcherCertificateProvider final : public grpc_tls_certificate_provider { @@ -201,13 +160,67 @@ class FileWatcherCertificateProvider final // - Otherwise, holds either a SpiffeBundleMap or a string root cert // TODO(gtcooke94) - refactor the handling for string root cert files such // that their failure is a non-ok status rather than a nullptr - absl::StatusOr> root_cert_info_ + absl::StatusOr> root_cert_info_ ABSL_GUARDED_BY(mu_) = nullptr; // Stores each cert_name we get from the distributor callback and its watcher // information. std::map watcher_info_ ABSL_GUARDED_BY(mu_); }; +// Implements a provider that uses in-memory data that can be modified in a +// thread-safe manner. +class InMemoryCertificateProvider final : public grpc_tls_certificate_provider { + public: + InMemoryCertificateProvider(); + InMemoryCertificateProvider(const InMemoryCertificateProvider&) = delete; + InMemoryCertificateProvider(InMemoryCertificateProvider&&) = delete; + InMemoryCertificateProvider& operator=(const InMemoryCertificateProvider&) = + delete; + InMemoryCertificateProvider& operator=(InMemoryCertificateProvider&&) = + delete; + + RefCountedPtr distributor() const override { + return distributor_; + } + + UniqueTypeName type() const override; + absl::Status ValidateCredentials() const; + + // Update the certificate information for this provider. + // Users should verify the status retuned to confirm that the update was + // successful. + absl::Status UpdateRoot(std::shared_ptr root_certificates); + absl::Status UpdateIdentityKeyCertPair( + const PemKeyCertPairList& pem_key_cert_pairs); + + private: + struct WatcherInfo { + bool root_being_watched = false; + bool identity_being_watched = false; + }; + + int CompareImpl(const grpc_tls_certificate_provider* other) const override { + return QsortCompare(static_cast(this), + other); + } + absl::Status Update( + std::optional> root_cert_info, + std::optional pem_key_cert_pairs); + + RefCountedPtr distributor_; + + // Guards pem_key_cert_pairs_, root_certificates_ and watcher_info_. + mutable Mutex mu_; + // The most-recent credential data. It will be empty if the most recent read + // attempt failed. + PemKeyCertPairList pem_key_cert_pairs_ ABSL_GUARDED_BY(mu_); + absl::StatusOr> root_certificates_ + ABSL_GUARDED_BY(mu_); + // Stores each cert_name we get from the distributor callback and its watcher + // information. + std::map watcher_info_ ABSL_GUARDED_BY(mu_); +}; + // Checks if the private key matches the certificate's public key. // Returns a not-OK status on failure, or a bool indicating // whether the key/cert pair matches. diff --git a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc index 361b12acedf..a72acf3be92 100644 --- a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +++ b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc @@ -30,7 +30,7 @@ #include "src/core/util/grpc_check.h" #include "absl/log/log.h" -/// -- Wrapper APIs declared in grpc_security.h -- * +/// -- Wrapper APIs declared in credentials.h -- * grpc_tls_credentials_options* grpc_tls_credentials_options_create() { grpc_core::ExecCtx exec_ctx; @@ -61,34 +61,12 @@ void grpc_tls_credentials_options_set_verify_server_cert( options->set_verify_server_cert(verify_server_cert); } -void grpc_tls_credentials_options_set_certificate_provider( - grpc_tls_credentials_options* options, - grpc_tls_certificate_provider* provider) { - GRPC_CHECK_NE(options, nullptr); - GRPC_CHECK_NE(provider, nullptr); - grpc_core::ExecCtx exec_ctx; - options->set_certificate_provider( - provider->Ref(DEBUG_LOCATION, "set_certificate_provider")); -} - -void grpc_tls_credentials_options_watch_root_certs( - grpc_tls_credentials_options* options) { - GRPC_CHECK_NE(options, nullptr); - options->set_watch_root_cert(true); -} - void grpc_tls_credentials_options_set_root_cert_name( grpc_tls_credentials_options* options, const char* root_cert_name) { GRPC_CHECK_NE(options, nullptr); options->set_root_cert_name(root_cert_name); } -void grpc_tls_credentials_options_watch_identity_key_cert_pairs( - grpc_tls_credentials_options* options) { - GRPC_CHECK_NE(options, nullptr); - options->set_watch_identity_pair(true); -} - void grpc_tls_credentials_options_set_identity_cert_name( grpc_tls_credentials_options* options, const char* identity_cert_name) { GRPC_CHECK_NE(options, nullptr); @@ -159,3 +137,30 @@ void grpc_tls_credentials_options_set_max_tls_version( GRPC_CHECK_NE(options, nullptr); options->set_max_tls_version(max_tls_version); } + +void grpc_tls_credentials_options_set_identity_certificate_provider( + grpc_tls_credentials_options* options, + grpc_tls_certificate_provider* provider) { + GRPC_CHECK_NE(options, nullptr); + GRPC_CHECK_NE(provider, nullptr); + grpc_core::ExecCtx exec_ctx; + options->set_identity_certificate_provider( + provider->Ref(DEBUG_LOCATION, "set_identity_certificate_provider")); +} + +void grpc_tls_credentials_options_set_root_certificate_provider( + grpc_tls_credentials_options* options, + grpc_tls_certificate_provider* provider) { + GRPC_CHECK_NE(options, nullptr); + GRPC_CHECK_NE(provider, nullptr); + grpc_core::ExecCtx exec_ctx; + options->set_root_certificate_provider( + provider->Ref(DEBUG_LOCATION, "set_root_certificate_provider")); +} + +GRPCAPI void grpc_tls_credentials_options_set_sni_override( + grpc_tls_credentials_options* options, + std::optional sni_override) { + GRPC_CHECK_NE(options, nullptr); + options->set_sni_override(sni_override); +} diff --git a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.h b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.h index 28bd4707342..d40b6868aa9 100644 --- a/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +++ b/deps/grpc/src/core/credentials/transport/tls/grpc_tls_credentials_options.h @@ -52,20 +52,24 @@ struct grpc_tls_credentials_options return certificate_verifier_.get(); } bool check_call_host() const { return check_call_host_; } - // Returns the distributor from certificate_provider_ if it is set, nullptr otherwise. - grpc_tls_certificate_distributor* certificate_distributor() { - if (certificate_provider_ != nullptr) { return certificate_provider_->distributor().get(); } - return nullptr; - } - bool watch_root_cert() const { return watch_root_cert_; } const std::string& root_cert_name() const { return root_cert_name_; } - bool watch_identity_pair() const { return watch_identity_pair_; } const std::string& identity_cert_name() const { return identity_cert_name_; } const std::string& tls_session_key_log_file_path() const { return tls_session_key_log_file_path_; } const std::string& crl_directory() const { return crl_directory_; } // Returns the CRL Provider std::shared_ptr crl_provider() const { return crl_provider_; } bool send_client_ca_list() const { return send_client_ca_list_; } + // Returns the distributor from identity_certificate_provider_ if it is set, nullptr otherwise. + grpc_tls_certificate_distributor* identity_certificate_distributor() { + if (identity_certificate_provider_ != nullptr) { return identity_certificate_provider_->distributor().get(); } + return nullptr; + } + // Returns the distributor from root_certificate_provider_ if it is set, nullptr otherwise. + grpc_tls_certificate_distributor* root_certificate_distributor() { + if (root_certificate_provider_ != nullptr) { return root_certificate_provider_->distributor().get(); } + return nullptr; + } + const std::optional& sni_override() const { return sni_override_; } // Setters for member fields. void set_cert_request_type(grpc_ssl_client_certificate_request_type cert_request_type) { cert_request_type_ = cert_request_type; } @@ -74,13 +78,8 @@ struct grpc_tls_credentials_options void set_max_tls_version(grpc_tls_version max_tls_version) { max_tls_version_ = max_tls_version; } void set_certificate_verifier(grpc_core::RefCountedPtr certificate_verifier) { certificate_verifier_ = std::move(certificate_verifier); } void set_check_call_host(bool check_call_host) { check_call_host_ = check_call_host; } - void set_certificate_provider(grpc_core::RefCountedPtr certificate_provider) { certificate_provider_ = std::move(certificate_provider); } - // If need to watch the updates of root certificates with name |root_cert_name|. The default value is false. If used in tls_credentials, it should always be set to true unless the root certificates are not needed. - void set_watch_root_cert(bool watch_root_cert) { watch_root_cert_ = watch_root_cert; } // Sets the name of root certificates being watched, if |set_watch_root_cert| is called. If not set, an empty string will be used as the name. void set_root_cert_name(std::string root_cert_name) { root_cert_name_ = std::move(root_cert_name); } - // If need to watch the updates of identity certificates with name |identity_cert_name|. The default value is false. If used in tls_credentials, it should always be set to true unless the identity key-cert pairs are not needed. - void set_watch_identity_pair(bool watch_identity_pair) { watch_identity_pair_ = watch_identity_pair; } // Sets the name of identity key-cert pairs being watched, if |set_watch_identity_pair| is called. If not set, an empty string will be used as the name. void set_identity_cert_name(std::string identity_cert_name) { identity_cert_name_ = std::move(identity_cert_name); } void set_tls_session_key_log_file_path(std::string tls_session_key_log_file_path) { tls_session_key_log_file_path_ = std::move(tls_session_key_log_file_path); } @@ -88,6 +87,10 @@ struct grpc_tls_credentials_options void set_crl_directory(std::string crl_directory) { crl_directory_ = std::move(crl_directory); } void set_crl_provider(std::shared_ptr crl_provider) { crl_provider_ = std::move(crl_provider); } void set_send_client_ca_list(bool send_client_ca_list) { send_client_ca_list_ = send_client_ca_list; } + void set_identity_certificate_provider(grpc_core::RefCountedPtr identity_certificate_provider) { identity_certificate_provider_ = std::move(identity_certificate_provider); } + void set_root_certificate_provider(grpc_core::RefCountedPtr root_certificate_provider) { root_certificate_provider_ = std::move(root_certificate_provider); } + // If set to nullopt, do not override. If set to empty string, disable sending SNI. Otherwise, override SNI + void set_sni_override(std::optional sni_override) { sni_override_ = std::move(sni_override); } bool operator==(const grpc_tls_credentials_options& other) const { return cert_request_type_ == other.cert_request_type_ && @@ -96,15 +99,15 @@ struct grpc_tls_credentials_options max_tls_version_ == other.max_tls_version_ && (certificate_verifier_ == other.certificate_verifier_ || (certificate_verifier_ != nullptr && other.certificate_verifier_ != nullptr && certificate_verifier_->Compare(other.certificate_verifier_.get()) == 0)) && check_call_host_ == other.check_call_host_ && - (certificate_provider_ == other.certificate_provider_ || (certificate_provider_ != nullptr && other.certificate_provider_ != nullptr && certificate_provider_->Compare(other.certificate_provider_.get()) == 0)) && - watch_root_cert_ == other.watch_root_cert_ && root_cert_name_ == other.root_cert_name_ && - watch_identity_pair_ == other.watch_identity_pair_ && identity_cert_name_ == other.identity_cert_name_ && tls_session_key_log_file_path_ == other.tls_session_key_log_file_path_ && crl_directory_ == other.crl_directory_ && (crl_provider_ == other.crl_provider_) && - send_client_ca_list_ == other.send_client_ca_list_; + send_client_ca_list_ == other.send_client_ca_list_ && + (identity_certificate_provider_ == other.identity_certificate_provider_ || (identity_certificate_provider_ != nullptr && other.identity_certificate_provider_ != nullptr && identity_certificate_provider_->Compare(other.identity_certificate_provider_.get()) == 0)) && + (root_certificate_provider_ == other.root_certificate_provider_ || (root_certificate_provider_ != nullptr && other.root_certificate_provider_ != nullptr && root_certificate_provider_->Compare(other.root_certificate_provider_.get()) == 0)) && + sni_override_ == other.sni_override_; } grpc_tls_credentials_options(grpc_tls_credentials_options& other) : @@ -114,15 +117,15 @@ struct grpc_tls_credentials_options max_tls_version_(other.max_tls_version_), certificate_verifier_(other.certificate_verifier_), check_call_host_(other.check_call_host_), - certificate_provider_(other.certificate_provider_), - watch_root_cert_(other.watch_root_cert_), root_cert_name_(other.root_cert_name_), - watch_identity_pair_(other.watch_identity_pair_), identity_cert_name_(other.identity_cert_name_), tls_session_key_log_file_path_(other.tls_session_key_log_file_path_), crl_directory_(other.crl_directory_), crl_provider_(other.crl_provider_), - send_client_ca_list_(other.send_client_ca_list_) {} + send_client_ca_list_(other.send_client_ca_list_), + identity_certificate_provider_(other.identity_certificate_provider_), + root_certificate_provider_(other.root_certificate_provider_), + sni_override_(other.sni_override_) {} private: grpc_ssl_client_certificate_request_type cert_request_type_ = GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE; @@ -131,15 +134,15 @@ struct grpc_tls_credentials_options grpc_tls_version max_tls_version_ = grpc_tls_version::TLS1_3; grpc_core::RefCountedPtr certificate_verifier_; bool check_call_host_ = true; - grpc_core::RefCountedPtr certificate_provider_; - bool watch_root_cert_ = false; std::string root_cert_name_; - bool watch_identity_pair_ = false; std::string identity_cert_name_; std::string tls_session_key_log_file_path_; std::string crl_directory_; std::shared_ptr crl_provider_; bool send_client_ca_list_ = false; + grpc_core::RefCountedPtr identity_certificate_provider_; + grpc_core::RefCountedPtr root_certificate_provider_; + std::optional sni_override_; }; #endif // GRPC_SRC_CORE_CREDENTIALS_TRANSPORT_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H diff --git a/deps/grpc/src/core/credentials/transport/tls/spiffe_utils.cc b/deps/grpc/src/core/credentials/transport/tls/spiffe_utils.cc index 23001df2845..56362d193b7 100644 --- a/deps/grpc/src/core/credentials/transport/tls/spiffe_utils.cc +++ b/deps/grpc/src/core/credentials/transport/tls/spiffe_utils.cc @@ -210,7 +210,7 @@ void SpiffeBundleKey::JsonPostLoad(const Json& json, const JsonArgs& args, if (!x5c->empty()) { ValidationErrors::ScopedField field(errors, "[0]"); std::string pem_cert = AddPemBlockWrapping((*x5c)[0]); - auto certs = ParsePemCertificateChain(pem_cert); + auto certs = tsi::ParsePemCertificateChain(pem_cert); if (!certs.ok()) { errors->AddError(certs.status().ToString()); } else { @@ -310,7 +310,7 @@ absl::Status SpiffeBundle::CreateX509Stack() { root_stack_ = std::make_unique(sk_X509_new_null()); absl::Status status = absl::OkStatus(); for (const auto& pem_cert : roots_) { - auto cert = ParsePemCertificateChain(AddPemBlockWrapping(pem_cert)); + auto cert = tsi::ParsePemCertificateChain(AddPemBlockWrapping(pem_cert)); if (!cert.status().ok()) { status = cert.status(); break; diff --git a/deps/grpc/src/core/credentials/transport/tls/ssl_utils.cc b/deps/grpc/src/core/credentials/transport/tls/ssl_utils.cc index e4a088f3a45..514da64cb0d 100644 --- a/deps/grpc/src/core/credentials/transport/tls/ssl_utils.cc +++ b/deps/grpc/src/core/credentials/transport/tls/ssl_utils.cc @@ -43,6 +43,7 @@ #include "src/core/util/grpc_check.h" #include "src/core/util/host_port.h" #include "src/core/util/load_file.h" +#include "src/core/util/match.h" #include "src/core/util/ref_counted_ptr.h" #include "src/core/util/useful.h" #include "absl/log/log.h" @@ -152,16 +153,6 @@ grpc_error_handle grpc_ssl_check_peer_name(absl::string_view peer_name, return absl::OkStatus(); } -void grpc_tsi_ssl_pem_key_cert_pairs_destroy(tsi_ssl_pem_key_cert_pair* kp, - size_t num_key_cert_pairs) { - if (kp == nullptr) return; - for (size_t i = 0; i < num_key_cert_pairs; i++) { - gpr_free(const_cast(kp[i].private_key)); - gpr_free(const_cast(kp[i].cert_chain)); - } - gpr_free(kp); -} - namespace grpc_core { absl::Status SslCheckCallHost(absl::string_view host, @@ -428,7 +419,7 @@ void grpc_shallow_peer_destruct(tsi_peer* peer) { grpc_security_status grpc_ssl_tsi_client_handshaker_factory_init( tsi_ssl_pem_key_cert_pair* pem_key_cert_pair, - std::shared_ptr root_cert_info, + std::shared_ptr root_cert_info, bool skip_server_certificate_verification, tsi_tls_version min_tls_version, tsi_tls_version max_tls_version, tsi_ssl_session_cache* ssl_session_cache, tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger, @@ -450,13 +441,14 @@ grpc_security_status grpc_ssl_tsi_client_handshaker_factory_init( return GRPC_SECURITY_ERROR; } root_store = grpc_core::DefaultSslRootStore::GetRootStore(); - options.root_cert_info = std::make_shared(root_certs); + options.root_cert_info = std::make_shared(root_certs); } else { options.root_cert_info = std::move(root_cert_info); } - bool has_key_cert_pair = pem_key_cert_pair != nullptr && - pem_key_cert_pair->private_key != nullptr && - pem_key_cert_pair->cert_chain != nullptr; + bool has_key_cert_pair = + pem_key_cert_pair != nullptr && + !grpc_core::IsPrivateKeyEmpty(pem_key_cert_pair->private_key) && + !pem_key_cert_pair->cert_chain.empty(); options.root_store = root_store; options.alpn_protocols = grpc_fill_alpn_protocol_strings(&options.num_alpn_protocols); @@ -485,8 +477,8 @@ grpc_security_status grpc_ssl_tsi_client_handshaker_factory_init( } grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init( - tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs, size_t num_key_cert_pairs, - std::shared_ptr root_cert_info, + std::vector pem_key_cert_pairs, + std::shared_ptr root_cert_info, grpc_ssl_client_certificate_request_type client_certificate_request, tsi_tls_version min_tls_version, tsi_tls_version max_tls_version, tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger, @@ -498,7 +490,6 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init( grpc_fill_alpn_protocol_strings(&num_alpn_protocols); tsi_ssl_server_handshaker_options options; options.pem_key_cert_pairs = pem_key_cert_pairs; - options.num_key_cert_pairs = num_key_cert_pairs; options.client_certificate_request = grpc_get_tsi_client_certificate_request_type(client_certificate_request); options.cipher_suites = grpc_get_ssl_cipher_suites(); @@ -569,6 +560,15 @@ grpc_arg grpc_ssl_session_cache_create_channel_arg( namespace grpc_core { +bool IsPrivateKeyEmpty(const PrivateKey& private_key) { + return Match( + private_key, + [&](const std::string& pem_root_certs) { return pem_root_certs.empty(); }, + [&](const std::shared_ptr key_signer) { + return key_signer == nullptr; + }); +} + tsi_ssl_root_certs_store* DefaultSslRootStore::default_root_store_; grpc_slice DefaultSslRootStore::default_pem_root_certs_; diff --git a/deps/grpc/src/core/credentials/transport/tls/ssl_utils.h b/deps/grpc/src/core/credentials/transport/tls/ssl_utils.h index fcd98573932..b49a9fc9ed1 100644 --- a/deps/grpc/src/core/credentials/transport/tls/ssl_utils.h +++ b/deps/grpc/src/core/credentials/transport/tls/ssl_utils.h @@ -24,11 +24,13 @@ #include #include #include +#include #include #include #include #include +#include #include #include "src/core/credentials/transport/security_connector.h" @@ -86,7 +88,7 @@ const char** ParseAlpnStringIntoArray(absl::string_view preferred_protocols, // Initialize TSI SSL server/client handshaker factory. grpc_security_status grpc_ssl_tsi_client_handshaker_factory_init( tsi_ssl_pem_key_cert_pair* key_cert_pair, - std::shared_ptr root_cert_info, + std::shared_ptr root_cert_info, bool skip_server_certificate_verification, tsi_tls_version min_tls_version, tsi_tls_version max_tls_version, tsi_ssl_session_cache* ssl_session_cache, tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger, @@ -95,8 +97,8 @@ grpc_security_status grpc_ssl_tsi_client_handshaker_factory_init( tsi_ssl_client_handshaker_factory** handshaker_factory); grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init( - tsi_ssl_pem_key_cert_pair* key_cert_pairs, size_t num_key_cert_pairs, - std::shared_ptr root_cert_info, + std::vector key_cert_pairs, + std::shared_ptr root_cert_info, grpc_ssl_client_certificate_request_type client_certificate_request, tsi_tls_version min_tls_version, tsi_tls_version max_tls_version, tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger, @@ -104,9 +106,6 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init( std::shared_ptr crl_provider, tsi_ssl_server_handshaker_factory** handshaker_factory); -// Free the memory occupied by key cert pairs. -void grpc_tsi_ssl_pem_key_cert_pairs_destroy(tsi_ssl_pem_key_cert_pair* kp, - size_t num_key_cert_pairs); // Exposed for testing only. grpc_core::RefCountedPtr grpc_ssl_peer_to_auth_context( const tsi_peer* peer, const char* transport_security_type); @@ -118,6 +117,9 @@ int grpc_ssl_host_matches_name(const tsi_peer* peer, // --- Default SSL Root Store. --- namespace grpc_core { +using tsi::PrivateKey; + +bool IsPrivateKeyEmpty(const PrivateKey& private_key); // The class implements default SSL root store. class DefaultSslRootStore { @@ -152,8 +154,8 @@ class DefaultSslRootStore { class PemKeyCertPair { public: - PemKeyCertPair(absl::string_view private_key, absl::string_view cert_chain) - : private_key_(private_key), cert_chain_(cert_chain) {} + PemKeyCertPair(PrivateKey private_key, absl::string_view cert_chain) + : private_key_(std::move(private_key)), cert_chain_(cert_chain) {} // Movable. PemKeyCertPair(PemKeyCertPair&& other) noexcept { @@ -180,11 +182,11 @@ class PemKeyCertPair { this->cert_chain() == other.cert_chain(); } - const std::string& private_key() const { return private_key_; } + const PrivateKey& private_key() const { return private_key_; } const std::string& cert_chain() const { return cert_chain_; } private: - std::string private_key_; + PrivateKey private_key_; std::string cert_chain_; }; diff --git a/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.cc b/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.cc index 4e022e6e504..ff3993e420e 100644 --- a/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.cc +++ b/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.cc @@ -25,7 +25,9 @@ #include #include +#include #include +#include #include #include @@ -213,22 +215,14 @@ void PendingVerifierRequestDestroy( } } -tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair( +std::vector ConvertToTsiPemKeyCertPair( const PemKeyCertPairList& cert_pair_list) { - tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr; - size_t num_key_cert_pairs = cert_pair_list.size(); - if (num_key_cert_pairs > 0) { - GRPC_CHECK_NE(cert_pair_list.data(), nullptr); - tsi_pairs = static_cast( - gpr_zalloc(num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair))); - } - for (size_t i = 0; i < num_key_cert_pairs; i++) { - GRPC_CHECK(!cert_pair_list[i].private_key().empty()); + std::vector tsi_pairs; + for (size_t i = 0; i < cert_pair_list.size(); i++) { + GRPC_CHECK(!IsPrivateKeyEmpty(cert_pair_list[i].private_key())); GRPC_CHECK(!cert_pair_list[i].cert_chain().empty()); - tsi_pairs[i].cert_chain = - gpr_strdup(cert_pair_list[i].cert_chain().c_str()); - tsi_pairs[i].private_key = - gpr_strdup(cert_pair_list[i].private_key().c_str()); + tsi_pairs.emplace_back(cert_pair_list[i].private_key(), + cert_pair_list[i].cert_chain()); } return tsi_pairs; } @@ -291,17 +285,20 @@ TlsChannelSecurityConnector::TlsChannelSecurityConnector( SplitHostPort(target_name, &host, &port); target_name_ = std::string(host); // Create a watcher. - auto watcher_ptr = std::make_unique(this); - certificate_watcher_ = watcher_ptr.get(); - // Register the watcher with the distributor. - grpc_tls_certificate_distributor* distributor = - options_->certificate_distributor(); + auto identity_watcher_ptr = + std::make_unique(this); + auto root_watcher_ptr = std::make_unique(this); + root_certificate_watcher_ = root_watcher_ptr.get(); + identity_certificate_watcher_ = identity_watcher_ptr.get(); + bool watch_root_cert = options_->root_certificate_distributor() != nullptr; + bool watch_identity_cert = + options_->identity_certificate_distributor() != nullptr; std::optional watched_root_cert_name; - if (options_->watch_root_cert()) { + if (watch_root_cert) { watched_root_cert_name = options_->root_cert_name(); } std::optional watched_identity_cert_name; - if (options_->watch_identity_pair()) { + if (watch_identity_cert) { watched_identity_cert_name = options_->identity_cert_name(); } // We will use the root certs stored in system default locations if not @@ -310,13 +307,19 @@ TlsChannelSecurityConnector::TlsChannelSecurityConnector( // certs" is a valid case(and hence we will need to call // OnCertificatesChanged), but it requires nothing from the provider, and // hence no need to register the watcher. - bool use_default_roots = !options_->watch_root_cert(); - if (use_default_roots && !options_->watch_identity_pair()) { - watcher_ptr->OnCertificatesChanged(nullptr, std::nullopt); + if (!watch_root_cert && !watch_identity_cert) { + root_certificate_watcher_->OnCertificatesChanged(nullptr, std::nullopt); } else { - distributor->WatchTlsCertificates(std::move(watcher_ptr), - watched_root_cert_name, - watched_identity_cert_name); + if (watch_root_cert) { + options_->root_certificate_distributor()->WatchTlsCertificates( + std::move(root_watcher_ptr), watched_root_cert_name, + watched_identity_cert_name); + } + if (watch_identity_cert) { + options_->identity_certificate_distributor()->WatchTlsCertificates( + std::move(identity_watcher_ptr), watched_root_cert_name, + watched_identity_cert_name); + } } } @@ -325,10 +328,16 @@ TlsChannelSecurityConnector::~TlsChannelSecurityConnector() { tsi_ssl_session_cache_unref(ssl_session_cache_); } // Cancel all the watchers. - grpc_tls_certificate_distributor* distributor = - options_->certificate_distributor(); - if (distributor != nullptr) { - distributor->CancelTlsCertificatesWatch(certificate_watcher_); + grpc_tls_certificate_distributor* root_distributor = + options_->root_certificate_distributor(); + if (root_distributor != nullptr) { + root_distributor->CancelTlsCertificatesWatch(root_certificate_watcher_); + } + grpc_tls_certificate_distributor* identity_distributor = + options_->identity_certificate_distributor(); + if (identity_distributor != nullptr) { + identity_distributor->CancelTlsCertificatesWatch( + identity_certificate_watcher_); } if (client_handshaker_factory_ != nullptr) { tsi_ssl_client_handshaker_factory_unref(client_handshaker_factory_); @@ -342,10 +351,20 @@ void TlsChannelSecurityConnector::add_handshakers( tsi_handshaker* tsi_hs = nullptr; if (client_handshaker_factory_ != nullptr) { // Instantiate TSI handshaker. + const char* server_name_indication; + if (options_->sni_override().has_value()) { + if (options_->sni_override()->empty()) { + server_name_indication = nullptr; + } else { + server_name_indication = options_->sni_override()->c_str(); + } + } else { + server_name_indication = overridden_target_name_.empty() + ? target_name_.c_str() + : overridden_target_name_.c_str(); + } tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker( - client_handshaker_factory_, - overridden_target_name_.empty() ? target_name_.c_str() - : overridden_target_name_.c_str(), + client_handshaker_factory_, server_name_indication, /*network_bio_buf_size=*/0, /*ssl_bio_buf_size=*/0, args.GetOwnedString(GRPC_ARG_TRANSPORT_PROTOCOLS), &tsi_hs); @@ -429,7 +448,7 @@ ArenaPromise TlsChannelSecurityConnector::CheckCallHost( } void TlsChannelSecurityConnector::TlsChannelCertificateWatcher:: - OnCertificatesChanged(std::shared_ptr root_certs, + OnCertificatesChanged(std::shared_ptr root_certs, std::optional key_cert_pairs) { GRPC_CHECK_NE(security_connector_, nullptr); MutexLock lock(&security_connector_->mu_); @@ -439,10 +458,13 @@ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher:: if (key_cert_pairs.has_value()) { security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs); } - const bool root_ready = !security_connector_->options_->watch_root_cert() || - security_connector_->root_cert_info_ != nullptr; + const bool root_ready = + security_connector_->options_->root_certificate_distributor() == + nullptr || + security_connector_->root_cert_info_ != nullptr; const bool identity_ready = - !security_connector_->options_->watch_identity_pair() || + security_connector_->options_->identity_certificate_distributor() == + nullptr || security_connector_->pem_key_cert_pair_list_.has_value(); if (root_ready && identity_ready) { if (security_connector_->UpdateHandshakerFactoryLocked() != @@ -525,23 +547,19 @@ TlsChannelSecurityConnector::UpdateHandshakerFactoryLocked() { if (client_handshaker_factory_ != nullptr) { tsi_ssl_client_handshaker_factory_unref(client_handshaker_factory_); } - tsi_ssl_pem_key_cert_pair* pem_key_cert_pair = nullptr; + std::vector pem_key_cert_pair; if (pem_key_cert_pair_list_.has_value()) { pem_key_cert_pair = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_); } - bool use_default_roots = !options_->watch_root_cert(); - grpc_security_status status = grpc_ssl_tsi_client_handshaker_factory_init( - pem_key_cert_pair, use_default_roots ? nullptr : root_cert_info_, + bool use_default_roots = options_->root_certificate_distributor() == nullptr; + return grpc_ssl_tsi_client_handshaker_factory_init( + pem_key_cert_pair.empty() ? nullptr : &pem_key_cert_pair[0], + use_default_roots ? nullptr : root_cert_info_, skip_server_certificate_verification, grpc_get_tsi_tls_version(options_->min_tls_version()), grpc_get_tsi_tls_version(options_->max_tls_version()), ssl_session_cache_, tls_session_key_logger_.get(), options_->crl_directory().c_str(), options_->crl_provider(), &client_handshaker_factory_); - // Free memory. - if (pem_key_cert_pair != nullptr) { - grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pair, 1); - } - return status; } // -------------------server security connector------------------- @@ -576,30 +594,48 @@ TlsServerSecurityConnector::TlsServerSecurityConnector( tsi::TlsSessionKeyLoggerCache::Get(tls_session_key_log_file_path); } // Create a watcher. - auto watcher_ptr = std::make_unique(this); - certificate_watcher_ = watcher_ptr.get(); - // Register the watcher with the distributor. - grpc_tls_certificate_distributor* distributor = - options_->certificate_distributor(); + auto root_watcher_ptr = std::make_unique(this); + auto identity_watcher_ptr = + std::make_unique(this); + root_certificate_watcher_ = root_watcher_ptr.get(); + identity_certificate_watcher_ = identity_watcher_ptr.get(); + bool watch_root_cert = options_->root_certificate_distributor() != nullptr; + bool watch_identity_cert = + options_->identity_certificate_distributor() != nullptr; std::optional watched_root_cert_name; - if (options_->watch_root_cert()) { + if (watch_root_cert) { watched_root_cert_name = options_->root_cert_name(); } std::optional watched_identity_cert_name; - if (options_->watch_identity_pair()) { + if (watch_identity_cert) { watched_identity_cert_name = options_->identity_cert_name(); } - // Server side won't use default system roots at any time. - distributor->WatchTlsCertificates(std::move(watcher_ptr), - watched_root_cert_name, - watched_identity_cert_name); + // Register the watcher with the distributor. + if (watch_root_cert) { + options_->root_certificate_distributor()->WatchTlsCertificates( + std::move(root_watcher_ptr), watched_root_cert_name, + watched_identity_cert_name); + } + if (watch_identity_cert) { + options_->identity_certificate_distributor()->WatchTlsCertificates( + std::move(identity_watcher_ptr), watched_root_cert_name, + watched_identity_cert_name); + } } TlsServerSecurityConnector::~TlsServerSecurityConnector() { // Cancel all the watchers. - grpc_tls_certificate_distributor* distributor = - options_->certificate_distributor(); - distributor->CancelTlsCertificatesWatch(certificate_watcher_); + grpc_tls_certificate_distributor* root_distributor = + options_->root_certificate_distributor(); + if (root_distributor != nullptr) { + root_distributor->CancelTlsCertificatesWatch(root_certificate_watcher_); + } + grpc_tls_certificate_distributor* identity_distributor = + options_->identity_certificate_distributor(); + if (identity_distributor != nullptr) { + identity_distributor->CancelTlsCertificatesWatch( + identity_certificate_watcher_); + } if (server_handshaker_factory_ != nullptr) { tsi_ssl_server_handshaker_factory_unref(server_handshaker_factory_); } @@ -681,7 +717,7 @@ int TlsServerSecurityConnector::cmp( } void TlsServerSecurityConnector::TlsServerCertificateWatcher:: - OnCertificatesChanged(std::shared_ptr roots, + OnCertificatesChanged(std::shared_ptr roots, std::optional key_cert_pairs) { GRPC_CHECK_NE(security_connector_, nullptr); MutexLock lock(&security_connector_->mu_); @@ -691,10 +727,12 @@ void TlsServerSecurityConnector::TlsServerCertificateWatcher:: if (key_cert_pairs.has_value()) { security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs); } - bool root_being_watched = security_connector_->options_->watch_root_cert(); + bool root_being_watched = + security_connector_->options_->root_certificate_distributor() != nullptr; bool root_has_value = security_connector_->root_cert_info_ != nullptr; bool identity_being_watched = - security_connector_->options_->watch_identity_pair(); + security_connector_->options_->identity_certificate_distributor() != + nullptr; bool identity_has_value = security_connector_->pem_key_cert_pair_list_.has_value(); if ((root_being_watched && root_has_value && identity_being_watched && @@ -782,21 +820,15 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() { // The identity certs on the server side shouldn't be empty. GRPC_CHECK(pem_key_cert_pair_list_.has_value()); GRPC_CHECK(!(*pem_key_cert_pair_list_).empty()); - tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs = nullptr; - pem_key_cert_pairs = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_); - size_t num_key_cert_pairs = (*pem_key_cert_pair_list_).size(); - grpc_security_status status = grpc_ssl_tsi_server_handshaker_factory_init( - pem_key_cert_pairs, num_key_cert_pairs, root_cert_info_, - options_->cert_request_type(), + std::vector pem_key_cert_pairs = + ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_); + return grpc_ssl_tsi_server_handshaker_factory_init( + pem_key_cert_pairs, root_cert_info_, options_->cert_request_type(), grpc_get_tsi_tls_version(options_->min_tls_version()), grpc_get_tsi_tls_version(options_->max_tls_version()), tls_session_key_logger_.get(), options_->crl_directory().c_str(), options_->send_client_ca_list(), options_->crl_provider(), &server_handshaker_factory_); - // Free memory. - grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pairs, - num_key_cert_pairs); - return status; } } // namespace grpc_core diff --git a/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.h b/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.h index 9efdc235e03..f079f33149f 100644 --- a/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.h +++ b/deps/grpc/src/core/credentials/transport/tls/tls_security_connector.h @@ -99,7 +99,7 @@ class TlsChannelSecurityConnector final return pem_key_cert_pair_list_; } - std::shared_ptr RootCertInfoForTesting() { + std::shared_ptr RootCertInfoForTesting() { MutexLock lock(&mu_); return root_cert_info_; } @@ -115,7 +115,7 @@ class TlsChannelSecurityConnector final TlsChannelSecurityConnector* security_connector) : security_connector_(security_connector) {} void OnCertificatesChanged( - std::shared_ptr root_certs, + std::shared_ptr root_certs, std::optional key_cert_pairs) override; void OnError(grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) override; @@ -158,7 +158,9 @@ class TlsChannelSecurityConnector final Mutex verifier_request_map_mu_; RefCountedPtr options_; grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface* - certificate_watcher_ = nullptr; + root_certificate_watcher_ = nullptr; + grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface* + identity_certificate_watcher_ = nullptr; std::string target_name_; std::string overridden_target_name_; tsi_ssl_client_handshaker_factory* client_handshaker_factory_ @@ -167,7 +169,7 @@ class TlsChannelSecurityConnector final RefCountedPtr tls_session_key_logger_; std::optional pem_key_cert_pair_list_ ABSL_GUARDED_BY(mu_); - std::shared_ptr root_cert_info_ ABSL_GUARDED_BY(mu_); + std::shared_ptr root_cert_info_ ABSL_GUARDED_BY(mu_); std::map pending_verifier_requests_ ABSL_GUARDED_BY(verifier_request_map_mu_); }; @@ -209,7 +211,7 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector { return pem_key_cert_pair_list_; } - std::shared_ptr RootCertInfoForTesting() { + std::shared_ptr RootCertInfoForTesting() { MutexLock lock(&mu_); return root_cert_info_; } @@ -225,7 +227,7 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector { TlsServerSecurityConnector* security_connector) : security_connector_(security_connector) {} void OnCertificatesChanged( - std::shared_ptr roots, + std::shared_ptr roots, std::optional key_cert_pairs) override; void OnError(grpc_error_handle root_cert_error, @@ -269,12 +271,14 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector { Mutex verifier_request_map_mu_; RefCountedPtr options_; grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface* - certificate_watcher_ = nullptr; + root_certificate_watcher_ = nullptr; + grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface* + identity_certificate_watcher_ = nullptr; tsi_ssl_server_handshaker_factory* server_handshaker_factory_ ABSL_GUARDED_BY(mu_) = nullptr; std::optional pem_key_cert_pair_list_ ABSL_GUARDED_BY(mu_); - std::shared_ptr root_cert_info_ ABSL_GUARDED_BY(mu_); + std::shared_ptr root_cert_info_ ABSL_GUARDED_BY(mu_); RefCountedPtr tls_session_key_logger_; std::map pending_verifier_requests_ ABSL_GUARDED_BY(verifier_request_map_mu_); diff --git a/deps/grpc/src/core/credentials/transport/xds/xds_credentials.cc b/deps/grpc/src/core/credentials/transport/xds/xds_credentials.cc index fd3eb589868..57ce337052a 100644 --- a/deps/grpc/src/core/credentials/transport/xds/xds_credentials.cc +++ b/deps/grpc/src/core/credentials/transport/xds/xds_credentials.cc @@ -30,7 +30,9 @@ #include "src/core/credentials/transport/tls/tls_utils.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/load_balancing/xds/xds_channel_args.h" +#include "src/core/util/env.h" #include "src/core/util/grpc_check.h" +#include "src/core/util/host_port.h" #include "src/core/util/useful.h" #include "src/core/xds/grpc/xds_certificate_provider.h" @@ -38,6 +40,15 @@ namespace grpc_core { namespace { +// TODO(mlumish): Remove this after 1.80 +bool UseChannelAuthorityIfNoSNIApplicable() { + auto value = GetEnv("GRPC_USE_CHANNEL_AUTHORITY_IF_NO_SNI_APPLICABLE"); + if (!value.has_value()) return false; + bool parsed_value; + bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value); + return parse_succeeded && parsed_value; +} + bool XdsVerifySubjectAlternativeNames( const char* const* subject_alternative_names, size_t subject_alternative_names_size, @@ -73,28 +84,40 @@ bool XdsVerifySubjectAlternativeNames( // XdsCertificateVerifier::XdsCertificateVerifier( - RefCountedPtr xds_certificate_provider) - : xds_certificate_provider_(std::move(xds_certificate_provider)) {} + RefCountedPtr xds_certificate_provider, + absl::string_view sni_name) + : xds_certificate_provider_(std::move(xds_certificate_provider)), + sni_name_(sni_name) {} bool XdsCertificateVerifier::Verify( grpc_tls_custom_verification_check_request* request, std::function, absl::Status* sync_status) { GRPC_CHECK_NE(request, nullptr); - if (!XdsVerifySubjectAlternativeNames( - request->peer_info.san_names.uri_names, - request->peer_info.san_names.uri_names_size, - xds_certificate_provider_->san_matchers()) && - !XdsVerifySubjectAlternativeNames( - request->peer_info.san_names.ip_names, - request->peer_info.san_names.ip_names_size, - xds_certificate_provider_->san_matchers()) && - !XdsVerifySubjectAlternativeNames( - request->peer_info.san_names.dns_names, - request->peer_info.san_names.dns_names_size, - xds_certificate_provider_->san_matchers())) { - *sync_status = absl::Status( - absl::StatusCode::kUnauthenticated, - "SANs from certificate did not match SANs from xDS control plane"); + if (xds_certificate_provider_->auto_sni_san_validation()) { + if (!XdsVerifySubjectAlternativeNames( + request->peer_info.san_names.dns_names, + request->peer_info.san_names.dns_names_size, + {StringMatcher::Create(StringMatcher::Type::kExact, sni_name_, true) + .value()})) { + *sync_status = absl::UnauthenticatedError( + "SANs from certificate did not match SNI from xDS control plane"); + } + } else { + if (!XdsVerifySubjectAlternativeNames( + request->peer_info.san_names.uri_names, + request->peer_info.san_names.uri_names_size, + xds_certificate_provider_->san_matchers()) && + !XdsVerifySubjectAlternativeNames( + request->peer_info.san_names.ip_names, + request->peer_info.san_names.ip_names_size, + xds_certificate_provider_->san_matchers()) && + !XdsVerifySubjectAlternativeNames( + request->peer_info.san_names.dns_names, + request->peer_info.san_names.dns_names_size, + xds_certificate_provider_->san_matchers())) { + *sync_status = absl::UnauthenticatedError( + "SANs from certificate did not match SANs from xDS control plane"); + } } return true; // synchronous check } @@ -105,12 +128,19 @@ void XdsCertificateVerifier::Cancel( int XdsCertificateVerifier::CompareImpl( const grpc_tls_certificate_verifier* other) const { auto* o = static_cast(other); + int compare_cert_provider; if (xds_certificate_provider_ == nullptr || o->xds_certificate_provider_ == nullptr) { - return QsortCompare(xds_certificate_provider_, - o->xds_certificate_provider_); + compare_cert_provider = + QsortCompare(xds_certificate_provider_, o->xds_certificate_provider_); + } else { + compare_cert_provider = + xds_certificate_provider_->Compare(o->xds_certificate_provider_.get()); + } + if (compare_cert_provider != 0) { + return compare_cert_provider; } - return xds_certificate_provider_->Compare(o->xds_certificate_provider_.get()); + return sni_name_.compare(o->sni_name_); } UniqueTypeName XdsCertificateVerifier::type() const { @@ -145,20 +175,33 @@ XdsCredentials::create_security_connector( if (watch_root || use_system_root_certs || watch_identity) { auto tls_credentials_options = MakeRefCounted(); - if (watch_root || watch_identity) { - tls_credentials_options->set_certificate_provider( + if (watch_root) { + tls_credentials_options->set_root_certificate_provider( + xds_certificate_provider); + } + if (watch_identity) { + tls_credentials_options->set_identity_certificate_provider( xds_certificate_provider); - if (watch_root) { - tls_credentials_options->set_watch_root_cert(true); - } - if (watch_identity) { - tls_credentials_options->set_watch_identity_pair(true); - } } tls_credentials_options->set_verify_server_cert(true); + auto hostname = args->GetOwnedString(GRPC_ARG_ADDRESS_NAME); + if (xds_certificate_provider->auto_host_sni() && hostname.has_value()) { + std::string host; + std::string port; + SplitHostPort(*hostname, &host, &port); + tls_credentials_options->set_sni_override(host); + } else if (!xds_certificate_provider->sni().empty()) { + tls_credentials_options->set_sni_override( + xds_certificate_provider->sni()); + } else { + if (!UseChannelAuthorityIfNoSNIApplicable()) { + tls_credentials_options->set_sni_override(""); + } + } tls_credentials_options->set_certificate_verifier( MakeRefCounted( - std::move(xds_certificate_provider))); + std::move(xds_certificate_provider), + tls_credentials_options->sni_override().value_or(""))); tls_credentials_options->set_check_call_host(false); auto tls_credentials = MakeRefCounted(std::move(tls_credentials_options)); @@ -188,10 +231,11 @@ XdsServerCredentials::create_security_connector(const ChannelArgs& args) { xds_certificate_provider->ProvidesIdentityCerts()) { auto tls_credentials_options = MakeRefCounted(); - tls_credentials_options->set_watch_identity_pair(true); - tls_credentials_options->set_certificate_provider(xds_certificate_provider); + tls_credentials_options->set_identity_certificate_provider( + xds_certificate_provider); if (xds_certificate_provider->ProvidesRootCerts()) { - tls_credentials_options->set_watch_root_cert(true); + tls_credentials_options->set_root_certificate_provider( + xds_certificate_provider); tls_credentials_options->set_cert_request_type( xds_certificate_provider->require_client_certificate() ? GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY diff --git a/deps/grpc/src/core/credentials/transport/xds/xds_credentials.h b/deps/grpc/src/core/credentials/transport/xds/xds_credentials.h index 41c569a20df..a4ed5ad6290 100644 --- a/deps/grpc/src/core/credentials/transport/xds/xds_credentials.h +++ b/deps/grpc/src/core/credentials/transport/xds/xds_credentials.h @@ -44,8 +44,9 @@ namespace grpc_core { class XdsCertificateVerifier : public grpc_tls_certificate_verifier { public: - explicit XdsCertificateVerifier( - RefCountedPtr xds_certificate_provider); + XdsCertificateVerifier( + RefCountedPtr xds_certificate_provider, + absl::string_view sni_name); bool Verify(grpc_tls_custom_verification_check_request* request, std::function, @@ -58,6 +59,7 @@ class XdsCertificateVerifier : public grpc_tls_certificate_verifier { int CompareImpl(const grpc_tls_certificate_verifier* other) const override; RefCountedPtr xds_certificate_provider_; + std::string sni_name_; }; class XdsCredentials final : public grpc_channel_credentials { diff --git a/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc b/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc index 7e0c5e4824c..17c06c10cf6 100644 --- a/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc +++ b/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc @@ -34,6 +34,7 @@ #include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/debug/trace.h" +#include "src/core/lib/experiments/experiments.h" #include "src/core/lib/promise/context.h" #include "src/core/lib/promise/sleep.h" #include "src/core/lib/promise/try_seq.h" @@ -50,6 +51,63 @@ namespace grpc_core { +bool FaultInjectionFilter::Config::Equals(const FilterConfig& other) const { + const auto& o = DownCast(other); + return abort_code == o.abort_code && abort_message == o.abort_message && + abort_code_header == o.abort_code_header && + abort_percentage_header == o.abort_percentage_header && + delay == o.delay && delay_header == o.delay_header && + delay_percentage_header == o.delay_percentage_header && + delay_percentage_numerator == o.delay_percentage_numerator && + delay_percentage_denominator == o.delay_percentage_denominator && + max_faults == o.max_faults; +} + +std::string FaultInjectionFilter::Config::ToString() const { + std::vector parts; + if (abort_code != GRPC_STATUS_OK || !abort_code_header.empty()) { + if (abort_code != GRPC_STATUS_OK) { + parts.push_back( + absl::StrCat("abort_code=", grpc_status_code_to_string(abort_code))); + } + if (!abort_code_header.empty()) { + parts.push_back( + absl::StrCat("abort_code_header=\"", abort_code_header, "\"")); + } + parts.push_back(absl::StrCat("abort_message=\"", abort_message, "\"")); + if (!abort_percentage_header.empty()) { + parts.push_back(absl::StrCat("abort_percentage_header=\"", + abort_percentage_header, "\"")); + } + if (abort_percentage_numerator > 0) { + parts.push_back(absl::StrCat("abort_percentage_numerator=", + abort_percentage_numerator)); + parts.push_back(absl::StrCat("abort_percentage_denominator=", + abort_percentage_denominator)); + } + } + if (delay != Duration::Zero() || !delay_header.empty()) { + if (delay != Duration::Zero()) { + parts.push_back(absl::StrCat("delay=", delay.ToString())); + } + if (!delay_header.empty()) { + parts.push_back(absl::StrCat("delay_header=\"", delay_header, "\"")); + } + if (!delay_percentage_header.empty()) { + parts.push_back(absl::StrCat("delay_percentage_header=\"", + delay_percentage_header, "\"")); + } + if (delay_percentage_numerator > 0) { + parts.push_back(absl::StrCat("delay_percentage_numerator=", + delay_percentage_numerator)); + parts.push_back(absl::StrCat("delay_percentage_denominator=", + delay_percentage_denominator)); + } + } + parts.push_back(absl::StrCat("max_faults=", max_faults)); + return absl::StrCat("{", absl::StrJoin(parts, ", "), "}"); +} + namespace { std::atomic g_active_faults{0}; @@ -128,13 +186,24 @@ class FaultInjectionFilter::InjectionDecision { absl::StatusOr> FaultInjectionFilter::Create(const ChannelArgs&, ChannelFilter::Args filter_args) { + if (IsXdsChannelFilterChainPerRouteEnabled()) { + if (filter_args.config() == nullptr) { + return absl::InternalError("no config passed to fault injection filter"); + } + if (filter_args.config()->type() != Config::Type()) { + return absl::InternalError( + absl::StrCat("wrong config type passed to fault injection filter: ", + filter_args.config()->type().name())); + } + } return std::make_unique(filter_args); } FaultInjectionFilter::FaultInjectionFilter(ChannelFilter::Args filter_args) : index_(filter_args.instance_id()), service_config_parser_index_( - FaultInjectionServiceConfigParser::ParserIndex()) {} + FaultInjectionServiceConfigParser::ParserIndex()), + config_(filter_args.config().TakeAsSubclass()) {} // Construct a promise for one call. ArenaPromise FaultInjectionFilter::Call::OnClientInitialMetadata( @@ -152,62 +221,75 @@ ArenaPromise FaultInjectionFilter::Call::OnClientInitialMetadata( FaultInjectionFilter::InjectionDecision FaultInjectionFilter::MakeInjectionDecision( const ClientMetadata& initial_metadata) { - // Fetch the fault injection policy from the service config, based on the - // relative index for which policy should this CallData use. - auto* service_config_call_data = GetContext(); - auto* method_params = static_cast( - service_config_call_data->GetMethodParsedConfig( - service_config_parser_index_)); - const FaultInjectionMethodParsedConfig::FaultInjectionPolicy* fi_policy = - nullptr; - if (method_params != nullptr) { - fi_policy = method_params->fault_injection_policy(index_); + if (!IsXdsChannelFilterChainPerRouteEnabled()) { + // Fetch the fault injection policy from the service config, based on the + // relative index for which policy should this CallData use. + auto* service_config_call_data = GetContext(); + auto* method_params = static_cast( + service_config_call_data->GetMethodParsedConfig( + service_config_parser_index_)); + const FaultInjectionMethodParsedConfig::FaultInjectionPolicy* fi_policy = + nullptr; + if (method_params != nullptr) { + fi_policy = method_params->fault_injection_policy(index_); + } + // Shouldn't ever be null, but just in case, return a no-op decision. + if (fi_policy == nullptr) { + return InjectionDecision(/*max_faults=*/0, + /*delay_time=*/Duration::Zero(), + /*abort_request=*/std::nullopt); + } + return MakeInjectionDecision(initial_metadata, *fi_policy); } - // Shouldn't ever be null, but just in case, return a no-op decision. - if (fi_policy == nullptr) { + if (config_ == nullptr) { return InjectionDecision(/*max_faults=*/0, /*delay_time=*/Duration::Zero(), /*abort_request=*/std::nullopt); } + return MakeInjectionDecision(initial_metadata, *config_); +} - grpc_status_code abort_code = fi_policy->abort_code; - uint32_t abort_percentage_numerator = fi_policy->abort_percentage_numerator; - uint32_t delay_percentage_numerator = fi_policy->delay_percentage_numerator; - Duration delay = fi_policy->delay; +template +FaultInjectionFilter::InjectionDecision +FaultInjectionFilter::MakeInjectionDecision( + const ClientMetadata& initial_metadata, const T& config) { + grpc_status_code abort_code = config.abort_code; + uint32_t abort_percentage_numerator = config.abort_percentage_numerator; + uint32_t delay_percentage_numerator = config.delay_percentage_numerator; + Duration delay = config.delay; // Update the policy with values in initial metadata. - if (!fi_policy->abort_code_header.empty() || - !fi_policy->abort_percentage_header.empty() || - !fi_policy->delay_header.empty() || - !fi_policy->delay_percentage_header.empty()) { + if (!config.abort_code_header.empty() || + !config.abort_percentage_header.empty() || !config.delay_header.empty() || + !config.delay_percentage_header.empty()) { std::string buffer; - if (!fi_policy->abort_code_header.empty() && abort_code == GRPC_STATUS_OK) { - auto value = initial_metadata.GetStringValue(fi_policy->abort_code_header, - &buffer); + if (!config.abort_code_header.empty() && abort_code == GRPC_STATUS_OK) { + auto value = + initial_metadata.GetStringValue(config.abort_code_header, &buffer); if (value.has_value()) { grpc_status_code_from_int( AsInt(*value).value_or(GRPC_STATUS_UNKNOWN), &abort_code); } } - if (!fi_policy->abort_percentage_header.empty()) { + if (!config.abort_percentage_header.empty()) { auto value = initial_metadata.GetStringValue( - fi_policy->abort_percentage_header, &buffer); + config.abort_percentage_header, &buffer); if (value.has_value()) { abort_percentage_numerator = std::min( AsInt(*value).value_or(-1), abort_percentage_numerator); } } - if (!fi_policy->delay_header.empty() && delay == Duration::Zero()) { + if (!config.delay_header.empty() && delay == Duration::Zero()) { auto value = - initial_metadata.GetStringValue(fi_policy->delay_header, &buffer); + initial_metadata.GetStringValue(config.delay_header, &buffer); if (value.has_value()) { delay = Duration::Milliseconds( std::max(AsInt(*value).value_or(0), int64_t{0})); } } - if (!fi_policy->delay_percentage_header.empty()) { + if (!config.delay_percentage_header.empty()) { auto value = initial_metadata.GetStringValue( - fi_policy->delay_percentage_header, &buffer); + config.delay_percentage_header, &buffer); if (value.has_value()) { delay_percentage_numerator = std::min( AsInt(*value).value_or(-1), delay_percentage_numerator); @@ -222,20 +304,20 @@ FaultInjectionFilter::MakeInjectionDecision( if (delay_request) { delay_request = UnderFraction(&delay_rand_generator_, delay_percentage_numerator, - fi_policy->delay_percentage_denominator); + config.delay_percentage_denominator); } if (abort_request) { abort_request = UnderFraction(&abort_rand_generator_, abort_percentage_numerator, - fi_policy->abort_percentage_denominator); + config.abort_percentage_denominator); } } return InjectionDecision( - fi_policy->max_faults, delay_request ? delay : Duration::Zero(), + config.max_faults, delay_request ? delay : Duration::Zero(), abort_request ? std::optional(absl::Status( static_cast(abort_code), - fi_policy->abort_message)) + config.abort_message)) : std::nullopt); } @@ -264,7 +346,7 @@ std::string FaultInjectionFilter::InjectionDecision::ToString() const { " abort=", abort_request_.has_value()); } -const grpc_channel_filter FaultInjectionFilter::kFilter = +const grpc_channel_filter FaultInjectionFilter::kFilterVtable = MakePromiseBasedFilter(); void FaultInjectionFilterRegister(CoreConfiguration::Builder* builder) { diff --git a/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h b/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h index 0567df55ba5..0210fe3dd0e 100644 --- a/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h +++ b/deps/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h @@ -17,11 +17,11 @@ #ifndef GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H #define GRPC_SRC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_FILTER_H -#include #include #include +#include "src/core/filter/filter_args.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/promise_based_filter.h" @@ -41,7 +41,37 @@ namespace grpc_core { class FaultInjectionFilter : public ImplementChannelFilter { public: - static const grpc_channel_filter kFilter; + // TODO(roth): The config structure here does not map cleanly to the + // xDS representation, and I suspect that we are not handling all of + // the edge cases correctly (e.g., abort_code=OK). When we have time, + // restructure this. + struct Config : public FilterConfig { + static UniqueTypeName Type() { + return GRPC_UNIQUE_TYPE_NAME_HERE("fault_injection_filter_config"); + } + UniqueTypeName type() const override { return Type(); } + + bool Equals(const FilterConfig& other) const override; + std::string ToString() const override; + + grpc_status_code abort_code = GRPC_STATUS_OK; + std::string abort_message = "Fault injected"; + std::string abort_code_header; + std::string abort_percentage_header; + uint32_t abort_percentage_numerator = 0; + uint32_t abort_percentage_denominator = 100; + + Duration delay; + std::string delay_header; + std::string delay_percentage_header; + uint32_t delay_percentage_numerator = 0; + uint32_t delay_percentage_denominator = 100; + + // By default, the max allowed active faults are unlimited. + uint32_t max_faults = std::numeric_limits::max(); + }; + + static const grpc_channel_filter kFilterVtable; static absl::string_view TypeName() { return "fault_injection_filter"; } @@ -68,12 +98,20 @@ class FaultInjectionFilter private: class InjectionDecision; + InjectionDecision MakeInjectionDecision( const ClientMetadata& initial_metadata); - // The relative index of instances of the same filter. - size_t index_; + // TODO(roth): Remove this method and these data members as part of + // removing the xds_channel_filter_chain_per_route experiment. + template + InjectionDecision MakeInjectionDecision( + const ClientMetadata& initial_metadata, const T& config); + size_t index_; // The relative index of instances of the same filter. const size_t service_config_parser_index_; + + const RefCountedPtr config_; + Mutex mu_; absl::InsecureBitGen abort_rand_generator_ ABSL_GUARDED_BY(mu_); absl::InsecureBitGen delay_rand_generator_ ABSL_GUARDED_BY(mu_); diff --git a/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc b/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc index 3a4978eb70c..4c39e183672 100644 --- a/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +++ b/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc @@ -36,6 +36,20 @@ namespace grpc_core { +// +// GcpAuthenticationFilter::Config +// + +bool GcpAuthenticationFilter::Config::Equals(const FilterConfig& other) const { + const auto& o = DownCast(other); + return instance_name == o.instance_name && cache_size == o.cache_size; +} + +std::string GcpAuthenticationFilter::Config::ToString() const { + return absl::StrCat("{instance_name=\"", instance_name, + "\", cache_size=", cache_size, "}"); +} + // // GcpAuthenticationFilter::Call // @@ -83,7 +97,7 @@ absl::Status GcpAuthenticationFilter::Call::OnClientInitialMetadata( } auto& metadata_map = it->second->cluster->metadata; const XdsMetadataValue* metadata_value = - metadata_map.Find(filter->filter_config_->filter_instance_name); + metadata_map.Find(filter->filter_config_->instance_name); // If no audience in the cluster, then no need to add call creds. if (metadata_value == nullptr) return absl::OkStatus(); // If the entry is present but the wrong type, fail the RPC. @@ -137,57 +151,72 @@ GcpAuthenticationFilter::CallCredentialsCache::Get( // GcpAuthenticationFilter // -const grpc_channel_filter GcpAuthenticationFilter::kFilter = +const grpc_channel_filter GcpAuthenticationFilter::kFilterVtable = MakePromiseBasedFilter(); absl::StatusOr> GcpAuthenticationFilter::Create(const ChannelArgs& args, ChannelFilter::Args filter_args) { - // Get filter config. - auto service_config = args.GetObjectRef(); - if (service_config == nullptr) { - return absl::InvalidArgumentError( - "gcp_auth: no service config in channel args"); - } - auto* config = static_cast( - service_config->GetGlobalParsedConfig( - GcpAuthenticationServiceConfigParser::ParserIndex())); - if (config == nullptr) { - return absl::InvalidArgumentError("gcp_auth: parsed config not found"); - } - auto* filter_config = config->GetConfig(filter_args.instance_id()); - if (filter_config == nullptr) { - return absl::InvalidArgumentError( - "gcp_auth: filter instance ID not found in filter config"); + RefCountedPtr config; + if (!IsXdsChannelFilterChainPerRouteEnabled()) { + // Construct new-style filter config from legacy service config. + auto service_config = args.GetObjectRef(); + if (service_config == nullptr) { + return absl::InvalidArgumentError( + "gcp_auth: no service config in channel args"); + } + auto* global_config = static_cast( + service_config->GetGlobalParsedConfig( + GcpAuthenticationServiceConfigParser::ParserIndex())); + if (global_config == nullptr) { + return absl::InvalidArgumentError("gcp_auth: parsed config not found"); + } + auto* filter_config = global_config->GetConfig(filter_args.instance_id()); + if (filter_config == nullptr) { + return absl::InvalidArgumentError( + "gcp_auth: filter instance ID not found in filter config"); + } + auto new_config = MakeRefCounted(); + new_config->instance_name = filter_config->filter_instance_name; + new_config->cache_size = filter_config->cache_size; + config = std::move(new_config); + } else { + // Get filter config. + if (filter_args.config() == nullptr) { + return absl::InternalError("gcp_auth: filter config not set"); + } + if (filter_args.config()->type() != Config::Type()) { + return absl::InternalError( + absl::StrCat("wrong config type passed to GCP authn filter: ", + filter_args.config()->type().name())); + } + config = filter_args.config().TakeAsSubclass(); } // Get XdsConfig so that we can look up CDS resources. auto xds_config = args.GetObjectRef(); if (xds_config == nullptr) { - return absl::InvalidArgumentError( + return absl::InternalError( "gcp_auth: xds config not found in channel args"); } // Get cache from blackboard. This must have been populated // previously by the XdsConfigSelector. - auto cache = filter_args.GetState( - filter_config->filter_instance_name); + auto cache = + filter_args.GetState(config->instance_name); if (cache == nullptr) { - return absl::InvalidArgumentError( + return absl::InternalError( "gcp_auth: cache object not found in filter state"); } // Instantiate filter. - return std::unique_ptr( - new GcpAuthenticationFilter(std::move(service_config), filter_config, - std::move(xds_config), std::move(cache))); + return std::unique_ptr(new GcpAuthenticationFilter( + std::move(config), std::move(xds_config), std::move(cache))); } GcpAuthenticationFilter::GcpAuthenticationFilter( - RefCountedPtr service_config, - const GcpAuthenticationParsedConfig::Config* filter_config, + RefCountedPtr filter_config, RefCountedPtr xds_config, RefCountedPtr cache) - : service_config_(std::move(service_config)), - filter_config_(filter_config), + : filter_config_(std::move(filter_config)), xds_config_(std::move(xds_config)), cache_(std::move(cache)) {} diff --git a/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h b/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h index a8fcf3e5f7d..637fc1337ae 100644 --- a/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +++ b/deps/grpc/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h @@ -42,6 +42,19 @@ namespace grpc_core { class GcpAuthenticationFilter : public ImplementChannelFilter { public: + struct Config : public FilterConfig { + static UniqueTypeName Type() { + return GRPC_UNIQUE_TYPE_NAME_HERE("gcp_authentication_filter_config"); + } + UniqueTypeName type() const override { return Type(); } + + bool Equals(const FilterConfig& other) const override; + std::string ToString() const override; + + std::string instance_name; + uint64_t cache_size = 10; + }; + class CallCredentialsCache : public Blackboard::Entry { public: explicit CallCredentialsCache(size_t max_size) : cache_(max_size) {} @@ -58,7 +71,7 @@ class GcpAuthenticationFilter cache_ ABSL_GUARDED_BY(&mu_); }; - static const grpc_channel_filter kFilter; + static const grpc_channel_filter kFilterVtable; static absl::string_view TypeName() { return "gcp_authentication_filter"; } @@ -81,16 +94,11 @@ class GcpAuthenticationFilter }; private: - GcpAuthenticationFilter( - RefCountedPtr service_config, - const GcpAuthenticationParsedConfig::Config* filter_config, - RefCountedPtr xds_config, - RefCountedPtr cache); - - // TODO(roth): Consider having the channel stack hold this ref so that - // individual filters don't need to. - const RefCountedPtr service_config_; - const GcpAuthenticationParsedConfig::Config* filter_config_; + GcpAuthenticationFilter(RefCountedPtr filter_config, + RefCountedPtr xds_config, + RefCountedPtr cache); + + const RefCountedPtr filter_config_; const RefCountedPtr xds_config_; const RefCountedPtr cache_; }; diff --git a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.cc b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.cc index 53cb0d7d0fa..da1f99b6a05 100644 --- a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.cc +++ b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.cc @@ -59,20 +59,50 @@ UniqueTypeName XdsOverrideHostAttribute::TypeName() { return kFactory.Create(); } -const grpc_channel_filter StatefulSessionFilter::kFilter = +bool StatefulSessionFilter::Config::Equals(const FilterConfig& other) const { + const auto& o = DownCast(other); + return cookie_name == o.cookie_name && path == o.path && ttl == o.ttl; +} + +std::string StatefulSessionFilter::Config::ToString() const { + std::vector parts; + if (!cookie_name.empty()) { + parts.push_back(absl::StrCat("cookie_name=\"", cookie_name, "\"")); + } + if (!path.empty()) { + parts.push_back(absl::StrCat("path=\"", path, "\"")); + } + if (ttl != Duration::Zero()) { + parts.push_back(absl::StrCat("ttl=", ttl.ToString())); + } + return absl::StrCat("{", absl::StrJoin(parts, ", "), "}"); +} + +const grpc_channel_filter StatefulSessionFilter::kFilterVtable = MakePromiseBasedFilter(); absl::StatusOr> StatefulSessionFilter::Create(const ChannelArgs&, ChannelFilter::Args filter_args) { + if (IsXdsChannelFilterChainPerRouteEnabled()) { + if (filter_args.config() == nullptr) { + return absl::InternalError("no config in stateful session filter"); + } + if (filter_args.config()->type() != Config::Type()) { + return absl::InternalError( + absl::StrCat("wrong config type in stateful session filter: ", + filter_args.config()->type().name())); + } + } return std::make_unique(filter_args); } StatefulSessionFilter::StatefulSessionFilter(ChannelFilter::Args filter_args) : index_(filter_args.instance_id()), service_config_parser_index_( - StatefulSessionServiceConfigParser::ParserIndex()) {} + StatefulSessionServiceConfigParser::ParserIndex()), + config_(filter_args.config().TakeAsSubclass()) {} namespace { @@ -91,9 +121,11 @@ absl::string_view AllocateStringOnArena( } // Adds the set-cookie header to the server initial metadata if needed. +// TODO(roth): Un-templatize this when we remove the +// xds_channel_filter_chain_per_route experiment. +template void MaybeUpdateServerInitialMetadata( - const StatefulSessionMethodParsedConfig::CookieConfig* cookie_config, - bool cluster_changed, absl::string_view actual_cluster, + const T& config, bool cluster_changed, absl::string_view actual_cluster, absl::string_view cookie_address_list, XdsOverrideHostAttribute* override_host_attribute, ServerMetadata& server_initial_metadata) { @@ -106,13 +138,13 @@ void MaybeUpdateServerInitialMetadata( std::string new_value = absl::StrCat( override_host_attribute->actual_address_list(), ";", actual_cluster); std::vector parts = {absl::StrCat( - *cookie_config->name, "=", absl::Base64Escape(new_value), "; HttpOnly")}; - if (!cookie_config->path.empty()) { - parts.emplace_back(absl::StrCat("Path=", cookie_config->path)); + config.cookie_name, "=", absl::Base64Escape(new_value), "; HttpOnly")}; + if (!config.path.empty()) { + parts.emplace_back(absl::StrCat("Path=", config.path)); } - if (cookie_config->ttl > Duration::Zero()) { + if (config.ttl > Duration::Zero()) { parts.emplace_back( - absl::StrCat("Max-Age=", cookie_config->ttl.as_timespec().tv_sec)); + absl::StrCat("Max-Age=", config.ttl.as_timespec().tv_sec)); } server_initial_metadata.Append( "set-cookie", Slice::FromCopiedString(absl::StrJoin(parts, "; ")), @@ -214,21 +246,30 @@ bool IsConfiguredPath(absl::string_view configured_path, void StatefulSessionFilter::Call::OnClientInitialMetadata( ClientMetadata& md, StatefulSessionFilter* filter) { GRPC_LATENT_SEE_SCOPE("StatefulSessionFilter::Call::OnClientInitialMetadata"); - // Get config. - auto* service_config_call_data = GetContext(); - GRPC_CHECK_NE(service_config_call_data, nullptr); - auto* method_params = static_cast( - service_config_call_data->GetMethodParsedConfig( - filter->service_config_parser_index_)); - GRPC_CHECK_NE(method_params, nullptr); - cookie_config_ = method_params->GetConfig(filter->index_); - GRPC_CHECK_NE(cookie_config_, nullptr); - if (!cookie_config_->name.has_value() || - !IsConfiguredPath(cookie_config_->path, md)) { + if (!IsXdsChannelFilterChainPerRouteEnabled()) { + // Get config. + auto* service_config_call_data = GetContext(); + GRPC_CHECK_NE(service_config_call_data, nullptr); + auto* method_params = static_cast( + service_config_call_data->GetMethodParsedConfig( + filter->service_config_parser_index_)); + GRPC_CHECK_NE(method_params, nullptr); + cookie_config_ = method_params->GetConfig(filter->index_); + GRPC_CHECK_NE(cookie_config_, nullptr); + OnClientInitialMetadataImpl(md, *cookie_config_); + return; + } + OnClientInitialMetadataImpl(md, *filter->config_); +} + +template +void StatefulSessionFilter::Call::OnClientInitialMetadataImpl( + ClientMetadata& md, const T& config) { + if (config.cookie_name.empty() || !IsConfiguredPath(config.path, md)) { return; } // Base64-decode cookie value. - std::string cookie_value = GetCookieValue(md, *cookie_config_->name); + std::string cookie_value = GetCookieValue(md, config.cookie_name); // Cookie format is "host;cluster" std::pair host_cluster = absl::StrSplit(cookie_value, absl::MaxSplits(';', 1)); @@ -237,6 +278,8 @@ void StatefulSessionFilter::Call::OnClientInitialMetadata( cookie_address_list_ = AllocateStringOnArena(host_cluster.first); } // Set override host attribute. + auto* service_config_call_data = GetContext(); + GRPC_CHECK_NE(service_config_call_data, nullptr); override_host_attribute_ = GetContext()->ManagedNew( cookie_address_list_); @@ -252,16 +295,24 @@ void StatefulSessionFilter::Call::OnClientInitialMetadata( perform_filtering_ = true; } -void StatefulSessionFilter::Call::OnServerInitialMetadata(ServerMetadata& md) { +void StatefulSessionFilter::Call::OnServerInitialMetadata( + ServerMetadata& md, StatefulSessionFilter* filter) { GRPC_LATENT_SEE_SCOPE("StatefulSessionFilter::Call::OnServerInitialMetadata"); if (!perform_filtering_) return; // Add cookie to server initial metadata if needed. - MaybeUpdateServerInitialMetadata(cookie_config_, cluster_changed_, + if (!IsXdsChannelFilterChainPerRouteEnabled()) { + MaybeUpdateServerInitialMetadata(*cookie_config_, cluster_changed_, + cluster_name_, cookie_address_list_, + override_host_attribute_, md); + return; + } + MaybeUpdateServerInitialMetadata(*filter->config_, cluster_changed_, cluster_name_, cookie_address_list_, override_host_attribute_, md); } -void StatefulSessionFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) { +void StatefulSessionFilter::Call::OnServerTrailingMetadata( + ServerMetadata& md, StatefulSessionFilter* filter) { GRPC_LATENT_SEE_SCOPE( "StatefulSessionFilter::Call::OnServerTrailingMetadata"); if (!perform_filtering_) return; @@ -269,7 +320,13 @@ void StatefulSessionFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) { // cookie to the trailing metadata instead of the // initial metadata. if (md.get(GrpcTrailersOnly()).value_or(false)) { - MaybeUpdateServerInitialMetadata(cookie_config_, cluster_changed_, + if (!IsXdsChannelFilterChainPerRouteEnabled()) { + MaybeUpdateServerInitialMetadata(*cookie_config_, cluster_changed_, + cluster_name_, cookie_address_list_, + override_host_attribute_, md); + return; + } + MaybeUpdateServerInitialMetadata(*filter->config_, cluster_changed_, cluster_name_, cookie_address_list_, override_host_attribute_, md); } diff --git a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.h b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.h index 6d242ce045a..fea6e64396d 100644 --- a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.h +++ b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_filter.h @@ -70,7 +70,21 @@ class XdsOverrideHostAttribute class StatefulSessionFilter : public ImplementChannelFilter { public: - static const grpc_channel_filter kFilter; + struct Config : public FilterConfig { + static UniqueTypeName Type() { + return GRPC_UNIQUE_TYPE_NAME_HERE("stateful_session_filter_config"); + } + UniqueTypeName type() const override { return Type(); } + + bool Equals(const FilterConfig& other) const override; + std::string ToString() const override; + + std::string cookie_name; + std::string path; + Duration ttl; + }; + + static const grpc_channel_filter kFilterVtable; static absl::string_view TypeName() { return "stateful_session_filter"; } @@ -83,8 +97,10 @@ class StatefulSessionFilter public: void OnClientInitialMetadata(ClientMetadata& md, StatefulSessionFilter* filter); - void OnServerInitialMetadata(ServerMetadata& md); - void OnServerTrailingMetadata(ServerMetadata& md); + void OnServerInitialMetadata(ServerMetadata& md, + StatefulSessionFilter* filter); + void OnServerTrailingMetadata(ServerMetadata& md, + StatefulSessionFilter* filter); static inline const NoInterceptor OnClientToServerMessage; static inline const NoInterceptor OnClientToServerHalfClose; static inline const NoInterceptor OnServerToClientMessage; @@ -102,7 +118,12 @@ class StatefulSessionFilter } private: + // TODO(roth): Remove these when removing the + // xds_channel_filter_chain_per_route experiment. + template + void OnClientInitialMetadataImpl(ClientMetadata& md, const T& config); const StatefulSessionMethodParsedConfig::CookieConfig* cookie_config_; + XdsOverrideHostAttribute* override_host_attribute_; absl::string_view cluster_name_; absl::string_view cookie_address_list_; @@ -111,10 +132,14 @@ class StatefulSessionFilter }; private: + // TODO(roth): Remove these fields when removing the + // xds_channel_filter_chain_per_route experiment. // The relative index of instances of the same filter. const size_t index_; // Index of the service config parser. const size_t service_config_parser_index_; + + const RefCountedPtr config_; }; } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc index e86c9acc541..1e81032a5f2 100644 --- a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +++ b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc @@ -27,18 +27,20 @@ namespace grpc_core { const JsonLoaderInterface* StatefulSessionMethodParsedConfig::CookieConfig::JsonLoader(const JsonArgs&) { - static const auto* loader = JsonObjectLoader() - .OptionalField("name", &CookieConfig::name) - .OptionalField("path", &CookieConfig::path) - .OptionalField("ttl", &CookieConfig::ttl) - .Finish(); + static const auto* loader = + JsonObjectLoader() + .OptionalField("name", &CookieConfig::cookie_name) + .OptionalField("path", &CookieConfig::path) + .OptionalField("ttl", &CookieConfig::ttl) + .Finish(); return loader; } void StatefulSessionMethodParsedConfig::CookieConfig::JsonPostLoad( - const Json&, const JsonArgs&, ValidationErrors* errors) { + const Json& json, const JsonArgs&, ValidationErrors* errors) { // Validate that cookie_name is non-empty. - if (name.has_value() && name->empty()) { + if (json.object().find("name") != json.object().end() && + cookie_name.empty()) { ValidationErrors::ScopedField field(errors, ".name"); errors->AddError("must be non-empty"); } diff --git a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h index 6c1e3ca4983..69c21d65106 100644 --- a/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +++ b/deps/grpc/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h @@ -45,7 +45,7 @@ class StatefulSessionMethodParsedConfig : public ServiceConfigParser::ParsedConfig { public: struct CookieConfig { - std::optional name; // Will be unset if disabled. + std::string cookie_name; // Will be empty if disabled. std::string path; Duration ttl; diff --git a/deps/grpc/src/core/ext/transport/chaotic_good/client_transport.cc b/deps/grpc/src/core/ext/transport/chaotic_good/client_transport.cc index a9c122f21d7..ee7540ff3d9 100644 --- a/deps/grpc/src/core/ext/transport/chaotic_good/client_transport.cc +++ b/deps/grpc/src/core/ext/transport/chaotic_good/client_transport.cc @@ -285,6 +285,7 @@ void ChaoticGoodClientTransport::Orphan() { void ChaoticGoodClientTransport::AddData(channelz::DataSink sink) { // TODO(ctiller): add calls in stream dispatch party_->ExportToChannelz("transport_party", sink); + message_chunker_.AddData(sink); } auto ChaoticGoodClientTransport::CallOutboundLoop(uint32_t stream_id, diff --git a/deps/grpc/src/core/ext/transport/chaotic_good/config.h b/deps/grpc/src/core/ext/transport/chaotic_good/config.h index 853d8e1c490..8b5afd9ceed 100644 --- a/deps/grpc/src/core/ext/transport/chaotic_good/config.h +++ b/deps/grpc/src/core/ext/transport/chaotic_good/config.h @@ -23,6 +23,7 @@ #include "src/core/ext/transport/chaotic_good/tcp_frame_transport.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/event_engine/extensions/tcp_trace.h" +#include "src/core/lib/experiments/experiments.h" #include "absl/container/flat_hash_set.h" namespace grpc_core { @@ -203,6 +204,11 @@ class Config { void PrepareOutgoingSettings(chaotic_good_frame::Settings& settings) const { settings.set_alignment(decode_alignment_); settings.set_max_chunk_size(max_recv_chunk_size_); + if (IsChaoticGoodSendSupportedFeaturesEnabled()) { + for (auto feature : supported_features_) { + settings.add_supported_features(feature); + } + } } // Receive a settings frame from our peer and integrate its settings with our diff --git a/deps/grpc/src/core/ext/transport/chaotic_good/data_endpoints.cc b/deps/grpc/src/core/ext/transport/chaotic_good/data_endpoints.cc index e0173f7c492..9bd160d9322 100644 --- a/deps/grpc/src/core/ext/transport/chaotic_good/data_endpoints.cc +++ b/deps/grpc/src/core/ext/transport/chaotic_good/data_endpoints.cc @@ -25,6 +25,7 @@ #include #include "src/core/channelz/property_list.h" +#include "src/core/config/config_vars.h" #include "src/core/ext/transport/chaotic_good/tcp_frame_header.h" #include "src/core/ext/transport/chaotic_good/tcp_ztrace_collector.h" #include "src/core/ext/transport/chaotic_good/transport_context.h" @@ -57,7 +58,7 @@ namespace data_endpoints_detail { namespace { const uint64_t kSecurityFramePayloadTag = 0; -} +} // namespace /////////////////////////////////////////////////////////////////////////////// // OutputBuffers @@ -291,9 +292,11 @@ void OutputBuffers::Schedule() { break; } ztrace_collector_->Append([this, message, selected_reader]() { - return WriteLargeFrameHeaderTrace{message->payload_tag, - WriteSizeForFrame(*message), - *selected_reader}; + auto& frame = + absl::ConvertVariantTo(message->frame->payload); + return WriteLargeFrameHeaderTrace{ + message->payload_tag, WriteSizeForFrame(*message), *selected_reader, + frame.MakeHeader().stream_id}; }); SchedulingData& scheduling = scheduling_data[*selected_reader]; scheduling.queued_bytes += WriteSizeForFrame(*message); @@ -508,21 +511,64 @@ class MetricsCollector delivery_rate_ = telemetry_info_->GetMetricKey("delivery_rate"); rtt_ = telemetry_info_->GetMetricKey("net_rtt_usec"); if (!rtt_.has_value()) rtt_ = telemetry_info_->GetMetricKey("srtt"); + min_rtt_ = telemetry_info_->GetMetricKey("min_rtt"); data_notsent_ = telemetry_info_->GetMetricKey("data_notsent"); byte_offset_ = telemetry_info_->GetMetricKey("byte_offset"); - absl::InlinedVector keys; - if (delivery_rate_.has_value()) { - keys.push_back(*delivery_rate_); - } + congestion_window_ = telemetry_info_->GetMetricKey("congestion_window"); + snd_ssthresh_ = telemetry_info_->GetMetricKey("snd_ssthresh"); + packet_retx_ = telemetry_info_->GetMetricKey("packet_retx"); + packet_spurious_retx_ = + telemetry_info_->GetMetricKey("packet_spurious_retx"); + packet_sent_ = telemetry_info_->GetMetricKey("packet_sent"); + packet_delivered_ = telemetry_info_->GetMetricKey("packet_delivered"); + packet_delivered_ce_ = telemetry_info_->GetMetricKey("packet_delivered_ce"); + data_retx_ = telemetry_info_->GetMetricKey("data_retx"); + data_sent_ = telemetry_info_->GetMetricKey("data_sent"); + pacing_rate_ = telemetry_info_->GetMetricKey("pacing_rate"); + reordering_ = telemetry_info_->GetMetricKey("reordering"); + recurring_retrans_ = telemetry_info_->GetMetricKey("recurring_retrans"); + busy_usec_ = telemetry_info_->GetMetricKey("busy_usec"); + rwnd_limited_usec_ = telemetry_info_->GetMetricKey("rwnd_limited_usec"); + sndbuf_limited_usec_ = telemetry_info_->GetMetricKey("sndbuf_limited_usec"); + is_delivery_rate_app_limited_ = + telemetry_info_->GetMetricKey("is_delivery_rate_app_limited"); + + absl::InlinedVector keys; + if (delivery_rate_.has_value()) keys.push_back(*delivery_rate_); if (byte_offset_.has_value()) keys.push_back(*byte_offset_); if (rtt_.has_value()) keys.push_back(*rtt_); + if (min_rtt_.has_value()) keys.push_back(*min_rtt_); if (data_notsent_.has_value()) keys.push_back(*data_notsent_); + if (congestion_window_.has_value()) keys.push_back(*congestion_window_); + if (snd_ssthresh_.has_value()) keys.push_back(*snd_ssthresh_); + if (packet_retx_.has_value()) keys.push_back(*packet_retx_); + if (packet_spurious_retx_.has_value()) { + keys.push_back(*packet_spurious_retx_); + } + if (packet_sent_.has_value()) keys.push_back(*packet_sent_); + if (packet_delivered_.has_value()) keys.push_back(*packet_delivered_); + if (packet_delivered_ce_.has_value()) keys.push_back(*packet_delivered_ce_); + if (data_retx_.has_value()) keys.push_back(*data_retx_); + if (data_sent_.has_value()) keys.push_back(*data_sent_); + if (pacing_rate_.has_value()) keys.push_back(*pacing_rate_); + if (reordering_.has_value()) keys.push_back(*reordering_); + if (recurring_retrans_.has_value()) keys.push_back(*recurring_retrans_); + if (busy_usec_.has_value()) keys.push_back(*busy_usec_); + if (rwnd_limited_usec_.has_value()) keys.push_back(*rwnd_limited_usec_); + if (sndbuf_limited_usec_.has_value()) keys.push_back(*sndbuf_limited_usec_); + if (is_delivery_rate_app_limited_.has_value()) { + keys.push_back(*is_delivery_rate_app_limited_); + } requested_metrics_ = telemetry_info_->GetMetricsSet(keys); } bool HasAnyMetrics() const { + // Checking this subset of metrics is sufficient to determine if it has + // any metrics return delivery_rate_.has_value() || rtt_.has_value() || - data_notsent_.has_value(); + min_rtt_.has_value() || data_notsent_.has_value() || + byte_offset_.has_value() || congestion_window_.has_value() || + snd_ssthresh_.has_value() || packet_retx_.has_value(); } std::shared_ptr< @@ -583,7 +629,7 @@ class MetricsCollector GRPC_LATENT_SEE_SCOPE("MetricsCollector::WriteEventSink"); ztrace_collector->Append([event, timestamp, &metrics, telemetry_info = self->telemetry_info_, - &reader]() { + reader]() { EndpointWriteMetricsTrace trace{timestamp, event, {}, reader->id()}; trace.metrics.reserve(metrics.size()); for (const auto [id, value] : metrics) { @@ -612,8 +658,25 @@ class MetricsCollector Clock* const clock_; std::optional delivery_rate_; std::optional rtt_; + std::optional min_rtt_; std::optional data_notsent_; std::optional byte_offset_; + std::optional congestion_window_; + std::optional snd_ssthresh_; + std::optional packet_retx_; + std::optional packet_spurious_retx_; + std::optional packet_sent_; + std::optional packet_delivered_; + std::optional packet_delivered_ce_; + std::optional data_retx_; + std::optional data_sent_; + std::optional pacing_rate_; + std::optional reordering_; + std::optional recurring_retrans_; + std::optional busy_usec_; + std::optional rwnd_limited_usec_; + std::optional sndbuf_limited_usec_; + std::optional is_delivery_rate_app_limited_; std::shared_ptr< grpc_event_engine::experimental::EventEngine::Endpoint::MetricsSet> requested_metrics_; @@ -687,7 +750,7 @@ auto Endpoint::WriteLoop(RefCountedPtr ctx) { "DataEndpointPullPayload", Race(PullDataPayload(ctx), Map(ctx->secure_frame_queue->Next(), - [](auto x) -> ValueOrFailure { + [](SliceBuffer x) -> ValueOrFailure { return std::move(x); }))), [ctx, metrics_collector](SliceBuffer buffer) { @@ -695,8 +758,10 @@ auto Endpoint::WriteLoop(RefCountedPtr ctx) { WriteBytesToEndpointTrace{buffer.Length(), ctx->id}); PromiseEndpoint::WriteArgs write_args; auto now = Timestamp::Now(); + static const Duration kMetricsUpdateInterval = Duration::Milliseconds( + ConfigVars::Get().ChaoticGoodMetricsUpdateIntervalMs()); if (metrics_collector != nullptr && - now - ctx->last_metrics_update > Duration::Milliseconds(100)) { + now - ctx->last_metrics_update > kMetricsUpdateInterval) { ctx->last_metrics_update = now; write_args.set_metrics_sink(metrics_collector->MakeWriteEventSink( buffer.Length(), ctx->reader, ctx->ztrace_collector)); diff --git a/deps/grpc/src/core/ext/transport/chaotic_good/message_chunker.h b/deps/grpc/src/core/ext/transport/chaotic_good/message_chunker.h index 285694171ee..1513c93eabb 100644 --- a/deps/grpc/src/core/ext/transport/chaotic_good/message_chunker.h +++ b/deps/grpc/src/core/ext/transport/chaotic_good/message_chunker.h @@ -132,6 +132,12 @@ class MessageChunker { uint32_t max_chunk_size() const { return max_chunk_size_; } uint32_t alignment() const { return alignment_; } + void AddData(channelz::DataSink sink) { + sink.AddData("message_chunker", channelz::PropertyList() + .Set("max_chunk_size", max_chunk_size_) + .Set("alignment", alignment_)); + } + private: bool ShouldChunk(Message& message) { return max_chunk_size_ != 0 && diff --git a/deps/grpc/src/core/ext/transport/chaotic_good/server_transport.cc b/deps/grpc/src/core/ext/transport/chaotic_good/server_transport.cc index f1af9d6a42b..70691959a89 100644 --- a/deps/grpc/src/core/ext/transport/chaotic_good/server_transport.cc +++ b/deps/grpc/src/core/ext/transport/chaotic_good/server_transport.cc @@ -294,6 +294,7 @@ void ChaoticGoodServerTransport::StreamDispatch::AddData( channelz::DataSink sink) { party_->ExportToChannelz("transport_party", sink); MutexLock lock(&mu_); + message_chunker_.AddData(sink); sink.AddData("transport_state", channelz::PropertyList() .Set("stream_map_size", stream_map_.size()) diff --git a/deps/grpc/src/core/ext/transport/chaotic_good/tcp_frame_transport.cc b/deps/grpc/src/core/ext/transport/chaotic_good/tcp_frame_transport.cc index 6a1cca3c6d7..0c97e3457fe 100644 --- a/deps/grpc/src/core/ext/transport/chaotic_good/tcp_frame_transport.cc +++ b/deps/grpc/src/core/ext/transport/chaotic_good/tcp_frame_transport.cc @@ -69,6 +69,19 @@ TcpFrameTransport::TcpFrameTransport( } auto TcpFrameTransport::WriteFrame(MpscQueued queued_frame) { + if (const auto* metadata_frame = + std::get_if(&queued_frame->payload)) { + for (const auto& meta : metadata_frame->body.unknown_metadata()) { + if (meta.key() == "flow-id") { + uint64_t flow_id; + if (absl::SimpleAtoi(meta.value(), &flow_id)) { + ztrace_collector_->Append(ChunkStreamAssociationTrace{ + static_cast(metadata_frame->stream_id), flow_id}); + } + break; + } + } + } const auto& frame = absl::ConvertVariantTo(queued_frame->payload); FrameHeader header = frame.MakeHeader(); diff --git a/deps/grpc/src/core/ext/transport/chaotic_good/tcp_ztrace_collector.h b/deps/grpc/src/core/ext/transport/chaotic_good/tcp_ztrace_collector.h index c6e1b0fed6d..de89b3ebb40 100644 --- a/deps/grpc/src/core/ext/transport/chaotic_good/tcp_ztrace_collector.h +++ b/deps/grpc/src/core/ext/transport/chaotic_good/tcp_ztrace_collector.h @@ -23,6 +23,7 @@ #include "src/core/channelz/ztrace_collector.h" #include "src/core/ext/transport/chaotic_good/tcp_frame_header.h" #include "src/core/lib/event_engine/utils.h" +#include "absl/strings/str_join.h" namespace grpc_core::chaotic_good { namespace tcp_ztrace_collector_detail { @@ -82,7 +83,7 @@ struct EndpointWriteMetricsTrace { return channelz::PropertyList() .Set("metadata_type", grpc_event_engine::experimental::WriteEventToString(write_event)) - .Set("fathom_timestamp", timestamp) + .Set("fathom_timestamp", absl::FormatTime(timestamp)) .Merge([this]() { channelz::PropertyList props; for (const auto& [name, value] : metrics) { @@ -154,13 +155,15 @@ struct WriteLargeFrameHeaderTrace { uint64_t payload_tag; uint64_t payload_size; uint32_t chosen_endpoint; + uint32_t stream_id; channelz::PropertyList ChannelzProperties() const { return channelz::PropertyList() .Set("metadata_type", "WRITE_LARGE_HEADER") .Set("payload_tag", payload_tag) .Set("payload_size", payload_size) - .Set("chosen_endpoint", chosen_endpoint); + .Set("chosen_endpoint", chosen_endpoint) + .Set("stream_id", stream_id); } }; @@ -198,6 +201,18 @@ struct WriteBytesToControlChannelTrace { } }; +struct ChunkStreamAssociationTrace { + int64_t stream_id; + uint64_t flow_id; + + channelz::PropertyList ChannelzProperties() const { + return channelz::PropertyList() + .Set("metadata_type", "CHUNK_STREAM_ASSOCIATION") + .Set("stream_id", stream_id) + .Set("flow_id", flow_id); + } +}; + struct FinishWriteBytesToControlChannelTrace { absl::Status status; @@ -241,8 +256,8 @@ using TcpZTraceCollector = channelz::ZTraceCollector< WriteLargeFrameHeaderTrace, EndpointWriteMetricsTrace, WriteBytesToEndpointTrace, FinishWriteBytesToEndpointTrace, WriteBytesToControlChannelTrace, FinishWriteBytesToControlChannelTrace, - TransportError, TransportError, OrphanTrace, - EndpointCloseTrace>; + ChunkStreamAssociationTrace, TransportError, TransportError, + OrphanTrace, EndpointCloseTrace>; } // namespace grpc_core::chaotic_good diff --git a/deps/grpc/src/core/ext/transport/chttp2/GEMINI.md b/deps/grpc/src/core/ext/transport/chttp2/GEMINI.md index b5f89c377e4..7ba455de5d1 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/GEMINI.md +++ b/deps/grpc/src/core/ext/transport/chttp2/GEMINI.md @@ -4,7 +4,7 @@ * The legacy CHTTP2 transport. * The newer WIP promise-based HTTP/2 transport (PH2). -See also: [gRPC Transports overview](../GEMINI.md) +See also: [gRPC Transports overview](../../../transport/GEMINI.md) ## Overarching Purpose @@ -37,7 +37,7 @@ and the underlying endpoint. ## 1. CHTTP2 (Legacy) * CHTTP2 is compatible with the Call V1 Stack. -* Uses [`combiner`](../../lib/iomgr/combiner.h) for concurrency. +* Uses [`combiner`](../../../lib/iomgr/combiner.h) for concurrency. * CHTTP2 was the original default transport. * **Status:** Active and default, but planned for deprecation and removal after PH2 is fully rolled out and stable. @@ -64,7 +64,10 @@ and the underlying endpoint. * PH2 is compatible with the Call V3 Stack. * PH2 utilizes the gRPC promise framework (`src/core/lib/promise`) for asynchronous operations. * **Status:** Under Development. -* **Rollout:** Expected to begin in January 2026. +* **Rollout:** Expected to begin in July 2026. +* **Experiments:** + * Client: `IsPromiseBasedHttp2ClientTransportEnabled()`. + * Server: `IsPromiseBasedHttp2ServerTransportEnabled()`. ### PH2 Goals @@ -98,34 +101,46 @@ and the underlying endpoint. * Frame Parsers and Validators for PH2: * `frame.{h,cc}`: Newer frame parsing/serialization. * Assemblers: - * `header_assembler.{h,cc}`: Converts gRPC Initial and Trailing Metadata into HTTP2 HEADER and CONTINUATION Frames and back. - * `message_assembler.{h,cc}`: Converts gRPC Messages into HTTP2 DATA Frames and back. + * `header_assembler.h`: Converts gRPC Initial and Trailing Metadata into HTTP2 HEADER and CONTINUATION Frames and back. + * `message_assembler.h`: Converts gRPC Messages into HTTP2 DATA Frames and back. * Error Handling Classes: * `http2_status.h`: Custom HTTP/2 error types (Stream vs Connection). * Ping and Keep Alive Helpers: * `ping_promise.{h,cc}` * `keepalive.{h,cc}` * Helper classes for PH2 writes: - * `stream_data_queue.{h,cc}` Stores gRPC messages and Metadata from the CallV3 stack for each stream in a queue. - * `writable_streams.{h,cc}` Track streams that have some data to send to the peer and have available flow control tokens. + * `stream_data_queue.h` Stores gRPC messages and Metadata from the CallV3 stack for each stream in a queue. + * `writable_streams.h` Track streams that have some data to send to the peer and have available flow control tokens. * Settings Helper : `http2_settings_promises.h` * Flow Control Helper : `flow_control_manager.h` * Stream : `stream.h` representation of each HTTP2 stream in the HTTP2 transport. * GoAway : `goaway.{h,cc}` for implementation of HTTP2 GOAWAY +* Metadata: `incoming_metadata_tracker.h` +* Security : `security_frame.h` ## 3. Common Files (Shared by CHTTP2 and PH2) * **`alpn`**: Contains code for ALPN (Application-Layer Protocol Negotiation), which is used to select the HTTP/2 protocol during the TLS handshake. -* **`client/chttp2_connector.h`, `client/chttp2_connector.cc`**: These files define the client-side connector, which is responsible for creating a new HTTP2 transport. +* **`client/chttp2_connector.h`, `client/chttp2_connector.cc`**: + * These files define the client-side connector, which is responsible for creating a new HTTP2 transport. + * This connector creates either PH2 and CHTTP2 transport. * **`server/chttp2_server.h`, `server/chttp2_server.cc`**: These files define the server-side listener, which is responsible for accepting new connections and creating new HTTP2 transports. -* HPACK implementation: `hpack_*.{h,cc}` (e.g., `hpack_encoder.cc`, `hpack_parser.cc`) -* Flow Control: `flow_control.{h,cc}` -* Settings: `http2_settings*.{h,cc}` (e.g., `http2_settings.cc`, `http2_settings_manager.cc`) -* Ping policies: `ping_abuse_policy.{h,cc}`, `ping_callbacks.{h,cc}`, `ping_rate_policy.{h,cc}` -* Other utilities: `bin_encoder.{h,cc}`, `decode_huff.{h,cc}`, `huffsyms.{h,cc}`, `varint.{h,cc}` -* `transport_common.{h,cc}` -* `internal_channel_arg_names.h` -* `http2_ztrace_collector.h`: Collects events for z-trace debugging. +* Files in `transport/`: + * HPACK implementation: + * `hpack_constants.h` + * `hpack_encoder.{h,cc}` + * `hpack_encoder_table.{h,cc}` + * `hpack_parse_result.{h,cc}` + * `hpack_parser.{h,cc}` + * `hpack_parser_table.{h,cc}` + * Flow Control: `flow_control.{h,cc}` + * Settings: `http2_settings.{h,cc}`, `http2_settings_manager.{h,cc}` + * Ping policies: `ping_abuse_policy.{h,cc}`, `ping_callbacks.{h,cc}`, `ping_rate_policy.{h,cc}` + * Other utilities: `bin_encoder.{h,cc}`, `decode_huff.{h,cc}`, `huffsyms.{h,cc}`, `varint.{h,cc}` + * `transport_common.{h,cc}` + * `internal_channel_arg_names.h` + * `http2_ztrace_collector.h`: Collects events for z-trace debugging. + * `write_size_policy.{h,cc}` ## 4. Unused or TBD Files @@ -134,7 +149,6 @@ and the underlying endpoint. * `call_tracer_wrapper.{h,cc}` * `http2_stats_collector.{h,cc}` * `http2_stats_collector.github.cc` - * `write_size_policy.{h,cc}` ## Key classes in CHTTP2 and their PH2 equivalents @@ -156,6 +170,7 @@ transport to their counterparts in the newer Promise-based PH2 transport. * **Stream Initiation/Handling**: * CHTTP2: Functions like `init_stream`, `chttp2_perform_stream_op_locked`, etc., in `chttp2_transport.cc`. * PH2: Handled within `Http2ClientTransport::StartCall` for clients, and `Http2ServerTransport::SetCallDestination` for servers. + # TODO(tjagtap) [PH2][P0] Fix this * **Error Handling**: * CHTTP2: Error handling with `grpc_error_handle` throughout the code. @@ -183,6 +198,8 @@ Key test files include: * `test/core/transport/chttp2/stream_data_queue_test.cc` * `test/core/transport/chttp2/writable_streams_fuzz_test.cc` * `test/core/transport/chttp2/writable_streams_test.cc` + * `test/core/transport/chttp2/incoming_metadata_tracker_test.cc` + * `test/core/transport/chttp2/http2_security_frame_test.cc` * **Common Component Tests:** * `test/core/transport/chttp2/flow_control_fuzzer.cc` @@ -205,13 +222,13 @@ Key test files include: ## Dependencies for PH2 * **gRPC Promise Library:** - * PH2 heavily relies on the gRPC Promise framework [`src/core/lib/promise/`](../lib/promise/GEMINI.md) - * Key components like [`party.h`](../lib/promise/party.h) are fundamental to PH2's async model. -* **Call Spine:** PH2 interacts with the V3 Call Spine components located in [`src/core/call/`](../../call/GEMINI.md). + * PH2 heavily relies on the gRPC Promise framework [`src/core/lib/promise/`](../../../lib/promise/GEMINI.md) + * Key components like [`party.h`](../../../lib/promise/party.h) are fundamental to PH2's async model. +* **Call Spine:** PH2 interacts with the V3 Call Spine components located in [`src/core/call/`](../../../call/GEMINI.md). ## Similarities of PH2 and Chaotic Good -PH2 shares several architectural similarities with the [Chaotic Good transport](../../ext/transport/chaotic_good/GEMINI.md) transport: +PH2 shares several architectural similarities with the [Chaotic Good transport](../chaotic_good/GEMINI.md) : * **Promise-Based:** Both transports are built upon the gRPC Promise library for managing asynchronous operations. This is a departure from the callback-based system in CHTTP2. * **Call V3 Stack:** Both are designed to work with the newer Call V3 stack. @@ -219,3 +236,30 @@ PH2 shares several architectural similarities with the [Chaotic Good transport]( * **Framing Concepts:** While the specific frame types and serialization differ (HTTP/2 vs. custom proto-based for Chaotic Good), the underlying concepts of defining frame structures (e.g., `frame.h` in both transports) and managing their serialization/deserialization are present in both. * **Endpoint Interaction:** Both transports use the `PromiseEndpoint` abstraction or reading from and writing to the network, making the core transport logic independent of the underlying I/O mechanism. * **Stream Initiation:** In PH2, `Http2ClientTransport::StartCall` initiates a new stream. It acquires a lock, assigns a new stream ID, creates a `Stream` object, and spawns the `CallOutboundLoop` to handle the stream's outgoing messages. Chaotic Good follows a similar pattern in `ChaoticGoodClientTransport::StartCall`, where it calls `StreamDispatch::MakeStream` to allocate a stream ID and create a `Stream` object, and then spawns `CallOutboundLoop` for the stream's lifecycle. + +# PH2 Transport Party Slots + +The HTTP2 transport uses Promise Party internally to manage scheduling of jobs. +Since the number of slots in a Party is 16, we need to account for all the slots +that we use in the transport. +We need to ensure that our slots do not exceed 16. + +## PH2 Client Party Slots Usage + +| Name | Category | Description | Max Spawns at a time | When is it spawned | Max Duration | Resolution | +|---|---|---|---|---|---|---| +| SecurityFrameLoop | Loop | Security Frame | 1 | After Constructor | Lifetime of the transport | Transport Close | +| ReadLoop | Loop | | 1 | After 1st write | Lifetime of the transport | Transport Close | +| FlowControlPeriodicUpdateLoop | Loop | | 1 | After Constructor | Lifetime of the transport | Transport Close | +| MultiplexerLoop | Loop | | 1 | After Constructor | Lifetime of the transport | Transport Close | +| AddData | Misc | ChannelZ AddData | 1 | On demand | Immediate | Immediate | +| CloseTransport | Misc | Close transport | 1 | While closing transport. Only once in the life of a transport | As long as it takes to close the transport | Transport Close | +| WaitForSettingsTimeout | Timeout | Settings Timeout | 1 | When we write SETTINGS | Settings timeout | Settings Ack Received or Settings Timeout | +| Keepalive | Loop | Keepalive Loop | 1 | If Keepalive is enabled, after constructor | Lifetime of the transport | Transport Close +| Ping | Timeout + Misc | | 4 | Sending a ping request | Timeout or a specific duration | +| | | **Total** | 12 | | | | + +## PH2 Server Party Slots Usage + +| Name | Category | Description | Max Spawns at a time | When is it spawned | Max Duration | Resolution | +|---|---|---|---|---|---|---| diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h b/deps/grpc/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h index 74b90468b8d..3fb03d04c57 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h @@ -19,7 +19,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CALL_TRACER_WRAPPER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CALL_TRACER_WRAPPER_H -#include "src/core/lib/transport/transport.h" #include "src/core/telemetry/call_tracer.h" struct grpc_chttp2_stream; @@ -43,7 +42,14 @@ class Chttp2CallTracerWrapper final : public CallTracerInterface { // Everything else is a no-op. void RecordSendInitialMetadata( grpc_metadata_batch* /*send_initial_metadata*/) override {} + void MutateSendInitialMetadata( + grpc_metadata_batch* /*send_initial_metadata*/) override {} void RecordSendTrailingMetadata( + grpc_metadata_batch* send_trailing_metadata) override { + GRPC_CHECK(!IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled()); + MutateSendTrailingMetadata(send_trailing_metadata); + } + void MutateSendTrailingMetadata( grpc_metadata_batch* /*send_trailing_metadata*/) override {} void RecordSendMessage(const Message& /*send_message*/) override {} void RecordSendCompressedMessage( diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc index cdfe96fabbc..11487ce647e 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc @@ -44,9 +44,11 @@ #include #include +#include "src/core/call/metadata.h" #include "src/core/call/metadata_batch.h" #include "src/core/call/metadata_info.h" #include "src/core/channelz/property_list.h" +#include "src/core/client_channel/client_channel_internal.h" #include "src/core/config/config_vars.h" #include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" @@ -169,8 +171,9 @@ static void read_action_locked(grpc_core::RefCountedPtr, static void continue_read_action_locked( grpc_core::RefCountedPtr t); -static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error_handle error, bool tarpit); +static void close_from_api( + grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_error_handle error, + bool tarpit, grpc_core::ServerMetadataHandle send_trailing_metadata); // Start new streams that have been created if we can static void maybe_start_some_streams(grpc_chttp2_transport* t); @@ -347,6 +350,17 @@ std::string HttpAnnotation::ToString() const { return s; } +void HttpAnnotation::ForEachKeyValue( + absl::FunctionRef f) const { + f("type", static_cast(type_)); + f("time_sec", static_cast(time_.tv_sec)); + f("time_nsec", static_cast(time_.tv_nsec)); + if (write_stats_.has_value()) { + f("target_write_size", + static_cast(write_stats_->target_write_size)); + } +} + } // namespace grpc_core // @@ -692,6 +706,8 @@ grpc_chttp2_transport::grpc_chttp2_transport( memory_owner(channel_args.GetObject() ->memory_quota() ->CreateMemoryOwner()), + stream_quota( + channel_args.GetObject()->stream_quota()), self_reservation( memory_owner.MakeReservation(sizeof(grpc_chttp2_transport))), // TODO(ctiller): clean this up so we don't need to RefAsSubclass @@ -1393,7 +1409,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t, t->keepalive_time.millis() > max_keepalive_time_millis ? INT_MAX : t->keepalive_time.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER; - if (!grpc_core::IsTransportStateWatcherEnabled()) { + if (!grpc_core::IsSubchannelConnectionScalingEnabled()) { status.SetPayload(grpc_core::kKeepaliveThrottlingKey, absl::Cord(std::to_string(throttled_keepalive_time))); } @@ -1405,8 +1421,8 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t, if (!grpc_core::test_only_disable_transient_failure_state_notification) { connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status, "got_goaway"); + t->NotifyStateWatcherOnDisconnectLocked(std::move(status), disconnect_info); } - t->NotifyStateWatcherOnDisconnectLocked(std::move(status), disconnect_info); } static void maybe_start_some_streams(grpc_chttp2_transport* t) { @@ -1829,8 +1845,10 @@ static void perform_stream_op_locked(void* stream_op, } if (op->cancel_stream) { - grpc_chttp2_cancel_stream(t, s, op_payload->cancel_stream.cancel_error, - op_payload->cancel_stream.tarpit); + grpc_chttp2_cancel_stream( + t, s, op_payload->cancel_stream.cancel_error, + op_payload->cancel_stream.tarpit, + std::move(op_payload->cancel_stream.send_trailing_metadata)); } if (op->send_initial_metadata) { @@ -2443,15 +2461,23 @@ void MaybeTarpit(grpc_chttp2_transport* t, bool tarpit, F fn) { } // namespace } // namespace grpc_core -void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error_handle due_to_error, bool tarpit) { +void grpc_chttp2_cancel_stream( + grpc_chttp2_transport* t, grpc_chttp2_stream* s, + grpc_error_handle due_to_error, bool tarpit, + grpc_core::ServerMetadataHandle send_trailing_metadata) { if (!t->is_client && !s->sent_trailing_metadata && grpc_error_has_clear_grpc_status(due_to_error) && !(s->read_closed && s->write_closed)) { - close_from_api(t, s, due_to_error, tarpit); + close_from_api(t, s, due_to_error, tarpit, + std::move(send_trailing_metadata)); return; } + if (grpc_core::IsPromiseFilterSendCancelMetadataEnabled()) { + send_trailing_metadata.reset(); + } + GRPC_DCHECK(send_trailing_metadata == nullptr); + if (!due_to_error.ok() && !s->seen_error) { s->seen_error = true; } @@ -2637,8 +2663,9 @@ grpc_chttp2_transport::RemovedStreamHandle grpc_chttp2_mark_stream_closed( return rsh; } -static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error_handle error, bool tarpit) { +static void close_from_api( + grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_error_handle error, + bool tarpit, grpc_core::ServerMetadataHandle send_trailing_metadata) { grpc_status_code grpc_status; std::string message; grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr, @@ -2650,9 +2677,9 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, auto remove_stream_handle = grpc_chttp2_mark_stream_closed(t, s, 1, 1, error); grpc_core::MaybeTarpit( t, tarpit, - [error = std::move(error), - sent_initial_metadata = s->sent_initial_metadata, id = s->id, + [sent_initial_metadata = s->sent_initial_metadata, id = s->id, grpc_status, message = std::move(message), + send_trailing_metadata = std::move(send_trailing_metadata), remove_stream_handle = std::move(remove_stream_handle)](grpc_chttp2_transport* t) mutable { grpc_slice hdr; @@ -2660,6 +2687,9 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_slice http_status_hdr; grpc_slice content_type_hdr; grpc_slice message_pfx; + size_t msg_len = message.length(); + grpc_core::Slice message_slice = + grpc_core::Slice::FromCopiedString(std::move(message)); uint8_t* p; uint32_t len = 0; @@ -2726,57 +2756,70 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, len += static_cast GRPC_SLICE_LENGTH(content_type_hdr); } - status_hdr = GRPC_SLICE_MALLOC(15 + (grpc_status >= 10)); - p = GRPC_SLICE_START_PTR(status_hdr); - *p++ = 0x00; // literal header, not indexed - *p++ = 11; // len(grpc-status) - *p++ = 'g'; - *p++ = 'r'; - *p++ = 'p'; - *p++ = 'c'; - *p++ = '-'; - *p++ = 's'; - *p++ = 't'; - *p++ = 'a'; - *p++ = 't'; - *p++ = 'u'; - *p++ = 's'; - if (grpc_status < 10) { - *p++ = 1; - *p++ = static_cast('0' + grpc_status); + grpc_core::RawEncoder raw_encoder( + t->settings.peer().allow_true_binary_metadata()); + + if (grpc_core::IsPromiseFilterSendCancelMetadataEnabled()) { + raw_encoder.Encode(grpc_core::GrpcStatusMetadata(), grpc_status); + raw_encoder.Encode(grpc_core::GrpcMessageMetadata(), message_slice); + if (send_trailing_metadata != nullptr) { + send_trailing_metadata->Encode(&raw_encoder); + send_trailing_metadata.reset(); + } + len += raw_encoder.Length(); } else { - *p++ = 2; - *p++ = static_cast('0' + (grpc_status / 10)); - *p++ = static_cast('0' + (grpc_status % 10)); + status_hdr = GRPC_SLICE_MALLOC(15 + (grpc_status >= 10)); + p = GRPC_SLICE_START_PTR(status_hdr); + *p++ = 0x00; // literal header, not indexed + *p++ = 11; // len(grpc-status) + *p++ = 'g'; + *p++ = 'r'; + *p++ = 'p'; + *p++ = 'c'; + *p++ = '-'; + *p++ = 's'; + *p++ = 't'; + *p++ = 'a'; + *p++ = 't'; + *p++ = 'u'; + *p++ = 's'; + if (grpc_status < 10) { + *p++ = 1; + *p++ = static_cast('0' + grpc_status); + } else { + *p++ = 2; + *p++ = static_cast('0' + (grpc_status / 10)); + *p++ = static_cast('0' + (grpc_status % 10)); + } + GRPC_CHECK(p == GRPC_SLICE_END_PTR(status_hdr)); + len += static_cast GRPC_SLICE_LENGTH(status_hdr); + + GRPC_CHECK(msg_len <= UINT32_MAX); + grpc_core::VarintWriter<1> msg_len_writer( + static_cast(msg_len)); + message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length()); + p = GRPC_SLICE_START_PTR(message_pfx); + *p++ = 0x00; // literal header, not indexed + *p++ = 12; // len(grpc-message) + *p++ = 'g'; + *p++ = 'r'; + *p++ = 'p'; + *p++ = 'c'; + *p++ = '-'; + *p++ = 'm'; + *p++ = 'e'; + *p++ = 's'; + *p++ = 's'; + *p++ = 'a'; + *p++ = 'g'; + *p++ = 'e'; + msg_len_writer.Write(0, p); + p += msg_len_writer.length(); + GRPC_CHECK(p == GRPC_SLICE_END_PTR(message_pfx)); + len += static_cast GRPC_SLICE_LENGTH(message_pfx); + len += static_cast(msg_len); } - GRPC_CHECK(p == GRPC_SLICE_END_PTR(status_hdr)); - len += static_cast GRPC_SLICE_LENGTH(status_hdr); - - size_t msg_len = message.length(); - GRPC_CHECK(msg_len <= UINT32_MAX); - grpc_core::VarintWriter<1> msg_len_writer( - static_cast(msg_len)); - message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length()); - p = GRPC_SLICE_START_PTR(message_pfx); - *p++ = 0x00; // literal header, not indexed - *p++ = 12; // len(grpc-message) - *p++ = 'g'; - *p++ = 'r'; - *p++ = 'p'; - *p++ = 'c'; - *p++ = '-'; - *p++ = 'm'; - *p++ = 'e'; - *p++ = 's'; - *p++ = 's'; - *p++ = 'a'; - *p++ = 'g'; - *p++ = 'e'; - msg_len_writer.Write(0, p); - p += msg_len_writer.length(); - GRPC_CHECK(p == GRPC_SLICE_END_PTR(message_pfx)); - len += static_cast GRPC_SLICE_LENGTH(message_pfx); - len += static_cast(msg_len); + GRPC_DCHECK(send_trailing_metadata == nullptr); hdr = GRPC_SLICE_MALLOC(9); p = GRPC_SLICE_START_PTR(hdr); @@ -2797,10 +2840,13 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_slice_buffer_add(&t->qbuf, http_status_hdr); grpc_slice_buffer_add(&t->qbuf, content_type_hdr); } - grpc_slice_buffer_add(&t->qbuf, status_hdr); - grpc_slice_buffer_add(&t->qbuf, message_pfx); - grpc_slice_buffer_add(&t->qbuf, - grpc_slice_from_cpp_string(std::move(message))); + if (grpc_core::IsPromiseFilterSendCancelMetadataEnabled()) { + std::move(raw_encoder).Flush(&t->qbuf); + } else { + grpc_slice_buffer_add(&t->qbuf, status_hdr); + grpc_slice_buffer_add(&t->qbuf, message_pfx); + grpc_slice_buffer_add(&t->qbuf, message_slice.TakeCSlice()); + } grpc_chttp2_reset_ping_clock(t); grpc_chttp2_add_rst_stream_to_next_write( t, id, static_cast(Http2ErrorCode::kNoError), nullptr); @@ -3668,6 +3714,10 @@ void grpc_chttp2_transport::MaybeNotifyOnReceiveSettingsLocked( [notify_on_receive_settings = std::move(notify_on_receive_settings), max_concurrent_streams]() mutable { grpc_core::ExecCtx exec_ctx; - std::move(notify_on_receive_settings)(max_concurrent_streams); + notify_on_receive_settings(max_concurrent_streams); + // Ensure the captured callback is destroyed while ExecCtx is still + // alive. Its destructor may trigger work that needs to schedule + // closures on the ExecCtx. + notify_on_receive_settings = nullptr; }); } diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h b/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h index 6e8f57cc4b9..739a1d8aaac 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h @@ -135,6 +135,8 @@ class HttpAnnotation : public CallTracerAnnotationInterface::Annotation { } std::string ToString() const override; + void ForEachKeyValue( + absl::FunctionRef f) const override; Type http_type() const { return type_; } gpr_timespec time() const { return time_; } diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.h b/deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.h index 385b3c731d8..9e1d3a532e8 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.h @@ -37,6 +37,7 @@ #include "src/core/lib/transport/bdp_estimator.h" #include "src/core/util/grpc_check.h" #include "src/core/util/time.h" +#include "absl/container/flat_hash_set.h" #include "absl/functional/function_ref.h" #include "absl/log/log.h" #include "absl/status/status.h" @@ -404,6 +405,14 @@ class TransportFlowControl final { return stats; } + void AddStreamToWindowUpdateList(const uint32_t stream_id) { + window_update_list_.insert(stream_id); + } + absl::flat_hash_set DrainWindowUpdateList() { + return std::exchange(window_update_list_, {}); + } + size_t window_update_list_size() const { return window_update_list_.size(); } + private: friend class StreamFlowControl; @@ -461,6 +470,7 @@ class TransportFlowControl final { int64_t announced_window_ = kDefaultWindow; uint32_t acked_init_window_ = kDefaultWindow; uint32_t sent_init_window_ = kDefaultWindow; + absl::flat_hash_set window_update_list_; }; // Implementation of flow control that abides to HTTP/2 spec and attempts @@ -599,7 +609,7 @@ class StreamFlowControl final { return stats; } - void ReportIfStalled(bool is_client, uint32_t stream_id, + void ReportIfStalled(const bool is_client, const uint32_t stream_id, const Http2Settings& peer_settings) const { if (remote_window_delta() + peer_settings.initial_window_size() <= 0 || tfc_->remote_window_ == 0) { diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/frame.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/frame.cc index 8e578b0eae7..134d3e670e2 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/frame.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/frame.cc @@ -223,8 +223,7 @@ class SerializeHeaderAndPayload { GRPC_HTTP2_FRAME_DLOG << "SerializeHeaderAndPayload Http2DataFrame Type:0 { stream_id:" << frame.stream_id << ", end_stream:" << frame.end_stream - << ", payload_length:" << frame.payload.Length() - << ", payload:" << MaybeTruncatePayload(frame.payload) << "}"; + << ", payload_length:" << frame.payload.Length() << "}"; auto hdr = extra_bytes_.TakeFirst(kFrameHeaderSize); Http2FrameHeader{static_cast(frame.payload.Length()), static_cast(FrameType::kData), @@ -241,8 +240,7 @@ class SerializeHeaderAndPayload { << "SerializeHeaderAndPayload Http2HeaderFrame Type:1 { stream_id:" << frame.stream_id << ", end_headers:" << frame.end_headers << ", end_stream:" << frame.end_stream - << ", payload_length:" << frame.payload.Length() - << ", payload:" << MaybeTruncatePayload(frame.payload) << "}"; + << ", payload_length:" << frame.payload.Length() << "}"; auto hdr = extra_bytes_.TakeFirst(kFrameHeaderSize); Http2FrameHeader{ static_cast(frame.payload.Length()), @@ -262,7 +260,6 @@ class SerializeHeaderAndPayload { << frame.stream_id << ", end_headers:" << frame.end_headers << ", payload_length:" << frame.payload.Length() - << ", payload:" << MaybeTruncatePayload(frame.payload) << "}"; auto hdr = extra_bytes_.TakeFirst(kFrameHeaderSize); Http2FrameHeader{ @@ -880,14 +877,4 @@ Http2Status ValidateFrameHeader(const uint32_t max_frame_size_setting, // for server. return Http2Status::Ok(); } - -std::string MaybeTruncatePayload(SliceBuffer& payload, const uint32_t length) { - if (payload.Length() <= length) { - return payload.JoinIntoString(); - } - std::string result(length, '\0'); - payload.CopyFirstNBytesIntoBuffer(length, result.data()); - return absl::StrCat(result, ""); -} - } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/frame.h b/deps/grpc/src/core/ext/transport/chttp2/transport/frame.h index 335109e0534..19cae7c8b96 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/frame.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/frame.h @@ -32,10 +32,6 @@ namespace grpc_core { -// Prints the first `length` bytes of the payload. If the payload is longer than -// `length`, it appends "" to the output. -std::string MaybeTruncatePayload(SliceBuffer& payload, uint32_t length = 15); - /////////////////////////////////////////////////////////////////////////////// // Frame types // diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.cc index 543d6154382..aa7afec555d 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.cc @@ -18,6 +18,9 @@ #include "src/core/ext/transport/chttp2/transport/goaway.h" +#include + +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/util/grpc_check.h" namespace grpc_core { @@ -57,14 +60,14 @@ std::optional GoawayManager::MaybeGetGoawayFrame() { return std::nullopt; } -void GoawayManager::MaybeGetSerializedGoawayFrame(SliceBuffer& output_buf) { +void GoawayManager::MaybeGetSerializedGoawayFrame(FrameSender& frame_sender) { GRPC_HTTP2_GOAWAY_LOG << "MaybeGetSerializedGoawayFrames: current state: " << context_->GoawayStateToString( context_->goaway_state); std::optional goaway_frame = MaybeGetGoawayFrame(); if (goaway_frame.has_value()) { - Serialize(absl::Span(&goaway_frame.value(), 1), output_buf); + frame_sender.AddRegularFrame(std::move(goaway_frame.value())); GRPC_HTTP2_GOAWAY_LOG << "GOAWAY frame serialized."; } } @@ -117,6 +120,18 @@ std::string GoawayManager::Context::GoawayStateToString( } } +absl::Status GoawayManager::Context::TriggerWriteCycle() { + GRPC_HTTP2_GOAWAY_LOG << "TriggerWriteCycle: current state: " + << GoawayStateToString(goaway_state); + absl::Status status = goaway_interface->TriggerWriteCycle(); + if (!status.ok()) { + GRPC_HTTP2_GOAWAY_LOG << "TriggerWriteCycle failed with status: " << status; + goaway_state = GoawayState::kDone; + } + + return status; +} + std::optional GoawayManager::TestOnlyMaybeGetGoawayFrame() { GRPC_HTTP2_GOAWAY_LOG << "TestOnlyMaybeGetGoawayFrame: current state: " << context_->GoawayStateToString( diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.h b/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.h index 9ba9ca715c9..d339a63704f 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/goaway.h @@ -19,8 +19,12 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_GOAWAY_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_GOAWAY_H +#include +#include + #include "src/core/ext/transport/chttp2/transport/frame.h" #include "src/core/ext/transport/chttp2/transport/http2_status.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/promise/activity.h" #include "src/core/lib/promise/if.h" #include "src/core/lib/promise/promise.h" @@ -47,7 +51,7 @@ class GoawayInterface { virtual Promise SendPingAndWaitForAck() = 0; // Triggers a transport write cycle. - virtual void TriggerWriteCycle() = 0; + virtual absl::Status TriggerWriteCycle() = 0; // Only used for graceful GOAWAY (and by extension relevant only for server). // Returns the last accepted stream id by the transport. @@ -154,6 +158,7 @@ class GoawayManager { std::string GoawayStateToString(GoawayState goaway_state); void SentGoawayTransition(); + absl::Status TriggerWriteCycle(); GoawayState goaway_state = GoawayState::kIdle; std::unique_ptr goaway_interface; @@ -222,7 +227,10 @@ class GoawayManager { /*error_code=*/static_cast(error_code), /*debug_data=*/debug_data.TakeOwned(), /*last_good_stream_id=*/last_good_stream_id); - ctx->goaway_interface->TriggerWriteCycle(); + absl::Status status = ctx->TriggerWriteCycle(); + if (!status.ok()) { + return status; + } return Pending{}; }; } @@ -272,8 +280,11 @@ class GoawayManager { /*error_code=*/static_cast(Http2ErrorCode::kNoError), /*debug_data=*/debug_data.TakeOwned(), /*last_good_stream_id=*/last_good_stream_id); - ctx->goaway_interface->TriggerWriteCycle(); - return TrySeq(ctx->goaway_interface->SendPingAndWaitForAck(), + + return TrySeq([ctx]() { return ctx->TriggerWriteCycle(); }, + [ctx]() { + return ctx->goaway_interface->SendPingAndWaitForAck(); + }, [ctx]() -> Poll { GRPC_HTTP2_GOAWAY_LOG << "Ping resolved. Current state: " @@ -287,7 +298,11 @@ class GoawayManager { "kFinalGracefulGoawayScheduled."; ctx->goaway_state = GoawayState::kFinalGracefulGoawayScheduled; - ctx->goaway_interface->TriggerWriteCycle(); + absl::Status status = + ctx->goaway_interface->TriggerWriteCycle(); + if (!status.ok()) { + return status; + } } return Pending{}; }); @@ -328,7 +343,7 @@ class GoawayManager { // Called from the transport write cycle to serialize the GOAWAY frame if // needed. - void MaybeGetSerializedGoawayFrame(SliceBuffer& output_buf); + void MaybeGetSerializedGoawayFrame(FrameSender& frame_sender); bool IsImmediateGoAway() const { return context_->goaway_state == GoawayState::kImmediateGoawayRequested; @@ -339,6 +354,12 @@ class GoawayManager { // write cycle, this function handles the needed state transition. void NotifyGoawaySent(); + static bool IsGracefulGoaway(Http2GoawayFrame& frame) { + return frame.error_code == + static_cast(Http2ErrorCode::kNoError) && + frame.last_stream_id == RFC9113::kMaxStreamId31Bit; + } + // Returns the current GOAWAY state. GoawayState TestOnlyGetGoawayState() const { return context_->goaway_state; } std::optional TestOnlyMaybeGetGoawayFrame(); diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/header_assembler.h b/deps/grpc/src/core/ext/transport/chttp2/transport/header_assembler.h index 20d576d9190..23c69081e42 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/header_assembler.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/header_assembler.h @@ -57,21 +57,6 @@ constexpr absl::string_view kAssemblerHpackError = "RFC9113 : A decoding error in a field block MUST be treated as a " "connection error of type COMPRESSION_ERROR."; -constexpr absl::string_view kGrpcErrorMaxTwoHeaderFrames = - "Too many header frames sent by peer"; - -// A gRPC server is permitted to send both initial metadata and trailing -// metadata where initial metadata is optional. A gRPC C++ client is permitted -// to send only initial metadata. However, other gRPC Client implementations may -// send trailing metadata too. So we allow only a maximum of 2 metadata per -// streams. Which means only 2 HEADER frames are legal per stream. -constexpr uint8_t kMaxHeaderFrames = 2; - -// TODO(tjagtap) : [PH2][P3] : Handle the case where a Server receives two -// header frames. Which means that the client sent trailing metadata. While we -// dont expect a gRPC C++ peer to behave like this, this might break interop -// tests and genuine interop cases. - // RFC9113 // https://www.rfc-editor.org/rfc/rfc9113.html#name-field-section-compression-a // A complete field section (which contains our gRPC Metadata) consists of @@ -154,7 +139,7 @@ class HeaderAssembler { // The caller MUST check using IsReady() before calling this function ValueOrHttp2Status> ReadMetadata( - HPackParser& parser, bool is_initial_metadata, bool is_client, + HPackParser& parser, bool is_initial_metadata, const uint32_t max_header_list_size_soft_limit, const uint32_t max_header_list_size_hard_limit) { ASSEMBLER_LOG << "HeaderAssembler::ReadMetadata " << buffer_.Length() @@ -185,7 +170,7 @@ class HeaderAssembler { ParseHeaderArgs{ /*is_initial_metadata=*/is_initial_metadata, /*is_end_headers=*/is_ready_, - /*is_client=*/is_client, + /*is_client=*/is_client_, /*max_header_list_size_soft_limit=*/max_header_list_size_soft_limit, /*max_header_list_size_hard_limit=*/max_header_list_size_hard_limit, /*stream_id=*/stream_id_, @@ -199,13 +184,13 @@ class HeaderAssembler { } Http2Status ParseAndDiscardHeaders( - HPackParser& parser, const bool is_initial_metadata, const bool is_client, + HPackParser& parser, const bool is_initial_metadata, const uint32_t max_header_list_size_soft_limit, const uint32_t max_header_list_size_hard_limit) { ASSEMBLER_LOG << "HeaderAssembler::ParseAndDiscardHeaders " << buffer_.Length() << " Bytes" << " is_initial_metadata: " << is_initial_metadata - << " is_client: " << is_client + << " is_client: " << is_client_ << " max_header_list_size_soft_limit: " << max_header_list_size_soft_limit << "max_header_list_size_hard_limit: " @@ -215,7 +200,7 @@ class HeaderAssembler { ParseHeaderArgs{ /*is_initial_metadata=*/is_initial_metadata, /*is_end_headers=*/is_ready_, - /*is_client=*/is_client, + /*is_client=*/is_client_, /*max_header_list_size_soft_limit=*/max_header_list_size_soft_limit, /*max_header_list_size_hard_limit=*/max_header_list_size_hard_limit, /*stream_id=*/stream_id_, @@ -229,10 +214,11 @@ class HeaderAssembler { // This value MUST be checked before calling ReadMetadata() bool IsReady() const { return is_ready_; } - explicit HeaderAssembler() + explicit HeaderAssembler(const bool is_client) : header_in_progress_(false), is_ready_(false), allow_true_binary_metadata_acked_(true), + is_client_(is_client), stream_id_(0) {} ~HeaderAssembler() = default; @@ -338,6 +324,7 @@ class HeaderAssembler { bool header_in_progress_; bool is_ready_; bool allow_true_binary_metadata_acked_; + const bool is_client_; uint32_t stream_id_; SliceBuffer buffer_; }; diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc index 57aec834863..69b311aef2c 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc @@ -20,11 +20,14 @@ #include #include +#include #include #include #include +#include +#include "src/core/call/metadata_batch.h" #include "src/core/ext/transport/chttp2/transport/bin_encoder.h" #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" #include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h" @@ -246,72 +249,77 @@ class StringKey { } // namespace namespace hpack_encoder_detail { -void Encoder::EmitIndexed(uint32_t elem_index) { - VarintWriter<1> w(elem_index); - w.Write(0x80, output_.AddTiny(w.length())); -} - -uint32_t Encoder::EmitLitHdrWithNonBinaryStringKeyIncIdx(Slice key_slice, - Slice value_slice) { +uint32_t HPackWriter::EmitLitHdrWithNonBinaryStringKeyIncIdx( + Slice key_slice, Slice value_slice, SliceBuffer& output, + HPackEncoderTable& table) { auto key_len = key_slice.length(); auto value_len = value_slice.length(); StringKey key(std::move(key_slice)); - key.WritePrefix(0x40, output_.AddTiny(key.prefix_length())); - output_.Append(key.key()); + key.WritePrefix(0x40, output.AddTiny(key.prefix_length())); + output.Append(key.key()); NonBinaryStringValue emit(std::move(value_slice)); - emit.WritePrefix(output_.AddTiny(emit.prefix_length())); + emit.WritePrefix(output.AddTiny(emit.prefix_length())); // Allocate an index in the hpack table for this newly emitted entry. // (we do so here because we know the length of the key and value) - uint32_t index = compressor_->table_.AllocateIndex( - key_len + value_len + hpack_constants::kEntryOverhead); - output_.Append(emit.data()); + uint32_t index = table.AllocateIndex(key_len + value_len + + hpack_constants::kEntryOverhead); + output.Append(emit.data()); return index; } -void Encoder::EmitLitHdrWithBinaryStringKeyNotIdx(Slice key_slice, - Slice value_slice) { +void HPackWriter::EmitLitHdrWithBinaryStringKeyNotIdx( + Slice key_slice, Slice value_slice, SliceBuffer& output, + bool use_true_binary_metadata) { StringKey key(std::move(key_slice)); - key.WritePrefix(0x00, output_.AddTiny(key.prefix_length())); - output_.Append(key.key()); - BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata_); - emit.WritePrefix(output_.AddTiny(emit.prefix_length())); - output_.Append(emit.data()); + key.WritePrefix(0x00, output.AddTiny(key.prefix_length())); + output.Append(key.key()); + BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata); + emit.WritePrefix(output.AddTiny(emit.prefix_length())); + output.Append(emit.data()); } -uint32_t Encoder::EmitLitHdrWithBinaryStringKeyIncIdx(Slice key_slice, - Slice value_slice) { +uint32_t HPackWriter::EmitLitHdrWithBinaryStringKeyIncIdx( + Slice key_slice, Slice value_slice, SliceBuffer& output, + HPackEncoderTable& table, bool use_true_binary_metadata) { auto key_len = key_slice.length(); StringKey key(std::move(key_slice)); - key.WritePrefix(0x40, output_.AddTiny(key.prefix_length())); - output_.Append(key.key()); - BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata_); - emit.WritePrefix(output_.AddTiny(emit.prefix_length())); + key.WritePrefix(0x40, output.AddTiny(key.prefix_length())); + output.Append(key.key()); + BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata); + emit.WritePrefix(output.AddTiny(emit.prefix_length())); // Allocate an index in the hpack table for this newly emitted entry. // (we do so here because we know the length of the key and value) - uint32_t index = compressor_->table_.AllocateIndex( - key_len + emit.hpack_length() + hpack_constants::kEntryOverhead); - output_.Append(emit.data()); + uint32_t index = table.AllocateIndex(key_len + emit.hpack_length() + + hpack_constants::kEntryOverhead); + output.Append(emit.data()); return index; } -void Encoder::EmitLitHdrWithBinaryStringKeyNotIdx(uint32_t key_index, - Slice value_slice) { - BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata_); +void HPackWriter::EmitLitHdrWithBinaryStringKeyNotIdx( + uint32_t key_index, Slice value_slice, SliceBuffer& output, + bool use_true_binary_metadata) { + BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata); VarintWriter<4> key(key_index); - uint8_t* data = output_.AddTiny(key.length() + emit.prefix_length()); + uint8_t* data = output.AddTiny(key.length() + emit.prefix_length()); key.Write(0x00, data); emit.WritePrefix(data + key.length()); - output_.Append(emit.data()); + output.Append(emit.data()); } -void Encoder::EmitLitHdrWithNonBinaryStringKeyNotIdx(Slice key_slice, - Slice value_slice) { +void HPackWriter::EmitLitHdrWithNonBinaryStringKeyNotIdx(Slice key_slice, + Slice value_slice, + SliceBuffer& output) { StringKey key(std::move(key_slice)); - key.WritePrefix(0x00, output_.AddTiny(key.prefix_length())); - output_.Append(key.key()); + key.WritePrefix(0x00, output.AddTiny(key.prefix_length())); + output.Append(key.key()); NonBinaryStringValue emit(std::move(value_slice)); - emit.WritePrefix(output_.AddTiny(emit.prefix_length())); - output_.Append(emit.data()); + emit.WritePrefix(output.AddTiny(emit.prefix_length())); + output.Append(emit.data()); +} + +void Encoder::EmitIndexed(uint32_t elem_index) { + VarintWriter<1> w(elem_index); + w.Write(0x80, output_.AddTiny(w.length())); } void Encoder::AdvertiseTableSizeChange() { @@ -513,4 +521,57 @@ Encoder::Encoder(HPackCompressor* compressor, bool use_true_binary_metadata, } } // namespace hpack_encoder_detail + +RawEncoder::RawEncoder(bool is_true_binary_metadata) + : is_true_binary_metadata_(is_true_binary_metadata) {} + +void RawEncoder::Encode(const Slice& key, const Slice& value) { + SliceBuffer temp_buffer; + if (absl::EndsWith(key.as_string_view(), "-bin")) { + hpack_encoder_detail::HPackWriter::EmitLitHdrWithBinaryStringKeyNotIdx( + key.Ref(), value.Ref(), temp_buffer, is_true_binary_metadata_); + } else { + hpack_encoder_detail::HPackWriter::EmitLitHdrWithNonBinaryStringKeyNotIdx( + key.Ref(), value.Ref(), temp_buffer); + } + MaybeAppend(std::move(temp_buffer)); +} + +void RawEncoder::Encode(GrpcStatusMetadata, grpc_status_code status) { + if (std::exchange(status_encoded_, true)) return; + SliceBuffer temp_buffer; + hpack_encoder_detail::HPackWriter::EmitLitHdrWithNonBinaryStringKeyNotIdx( + Slice::FromCopiedString(GrpcStatusMetadata::key()), + MetadataValueAsSlice(status).Ref(), temp_buffer); + MaybeAppend(std::move(temp_buffer)); +} + +void RawEncoder::Encode(GrpcMessageMetadata, const Slice& message) { + if (std::exchange(message_encoded_, true)) return; + SliceBuffer temp_buffer; + hpack_encoder_detail::HPackWriter::EmitLitHdrWithNonBinaryStringKeyNotIdx( + Slice::FromCopiedString(GrpcMessageMetadata::key()), message.Ref(), + temp_buffer); + MaybeAppend(std::move(temp_buffer)); +} + +void RawEncoder::Flush(grpc_slice_buffer* output_buffer) && { + grpc_slice_buffer_move_into(buffer_.c_slice_buffer(), output_buffer); +} + +bool RawEncoder::CheckLength(const size_t length) { + return (length <= kMaxKeyValueSize) && (Length() <= kMaxSize - length); +} + +void RawEncoder::MaybeAppend(SliceBuffer&& buffer) { + if (CheckLength(buffer.Length())) { + buffer_.TakeAndAppend(buffer); + } else { + LOG(ERROR) + << "Ignoring key value pair due to size limit. Current buffer size: " + << buffer_.Length() << " new key value size: " << buffer.Length() + << " KeyValueSizeLimit: " << kMaxKeyValueSize + << " TotalSizeLimit: " << kMaxSize; + } +} } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h b/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h index a31ead5de7b..369fd79b07a 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h @@ -50,6 +50,26 @@ class HPackCompressor; namespace hpack_encoder_detail { +struct HPackWriter { + GRPC_MUST_USE_RESULT + static uint32_t EmitLitHdrWithNonBinaryStringKeyIncIdx( + Slice key_slice, Slice value_slice, SliceBuffer& output, + HPackEncoderTable& table); + GRPC_MUST_USE_RESULT + static uint32_t EmitLitHdrWithBinaryStringKeyIncIdx( + Slice key_slice, Slice value_slice, SliceBuffer& output, + HPackEncoderTable& table, bool use_true_binary_metadata); + static void EmitLitHdrWithBinaryStringKeyNotIdx( + Slice key_slice, Slice value_slice, SliceBuffer& output, + bool use_true_binary_metadata); + static void EmitLitHdrWithBinaryStringKeyNotIdx( + uint32_t key_index, Slice value_slice, SliceBuffer& output, + bool use_true_binary_metadata); + static void EmitLitHdrWithNonBinaryStringKeyNotIdx(Slice key_slice, + Slice value_slice, + SliceBuffer& output); +}; + class Encoder { public: Encoder(HPackCompressor* compressor, bool use_true_binary_metadata, @@ -407,10 +427,85 @@ void Encoder::Encode(MetadataTrait, EncodeWith(MetadataTrait(), value, this); } +inline uint32_t Encoder::EmitLitHdrWithNonBinaryStringKeyIncIdx( + Slice key_slice, Slice value_slice) { + return HPackWriter::EmitLitHdrWithNonBinaryStringKeyIncIdx( + std::move(key_slice), std::move(value_slice), output_, + compressor_->table_); +} + +inline void Encoder::EmitLitHdrWithBinaryStringKeyNotIdx(Slice key_slice, + Slice value_slice) { + HPackWriter::EmitLitHdrWithBinaryStringKeyNotIdx( + std::move(key_slice), std::move(value_slice), output_, + use_true_binary_metadata_); +} + +inline uint32_t Encoder::EmitLitHdrWithBinaryStringKeyIncIdx( + Slice key_slice, Slice value_slice) { + return HPackWriter::EmitLitHdrWithBinaryStringKeyIncIdx( + std::move(key_slice), std::move(value_slice), output_, + compressor_->table_, use_true_binary_metadata_); +} + +inline void Encoder::EmitLitHdrWithBinaryStringKeyNotIdx(uint32_t key_index, + Slice value_slice) { + HPackWriter::EmitLitHdrWithBinaryStringKeyNotIdx( + key_index, std::move(value_slice), output_, use_true_binary_metadata_); +} + +inline void Encoder::EmitLitHdrWithNonBinaryStringKeyNotIdx(Slice key_slice, + Slice value_slice) { + HPackWriter::EmitLitHdrWithNonBinaryStringKeyNotIdx( + std::move(key_slice), std::move(value_slice), output_); +} + inline HPackEncoderTable& Encoder::hpack_table() { return compressor_->table_; } } // namespace hpack_encoder_detail +// Class to encode metadata in uncompressed and un-indexed form. +class RawEncoder { + public: + explicit RawEncoder(bool is_true_binary_metadata); + + void Encode(const Slice& key, const Slice& value); + + // Status MUST be encoded at most once. + void Encode(GrpcStatusMetadata, grpc_status_code status); + + // Message MUST be encoded at most once. + void Encode(GrpcMessageMetadata, const Slice& message); + + template + void Encode(const MetadataTraits&, + const typename MetadataTraits::ValueType& value); + + uint32_t Length() const { return buffer_.Length(); } + void Flush(grpc_slice_buffer* output_buffer) &&; + + private: + bool CheckLength(size_t length); + void MaybeAppend(SliceBuffer&& buffer); + + // Size limit on all the key values combined. This is set to the minimum + // frame size that HTTP/2 can send. This is done to avoid sending a + // CONTINUATION frame in all cases. + static constexpr uint32_t kMaxSize = (1 << 14u); + static constexpr uint32_t kMaxKeyValueSize = /*2kb*/ 2 * 1024u; + bool status_encoded_ = false; + bool message_encoded_ = false; + const bool is_true_binary_metadata_ = false; + SliceBuffer buffer_; +}; + +template +void RawEncoder::Encode(const MetadataTraits&, + const typename MetadataTraits::ValueType& value) { + Encode(Slice::FromCopiedString(MetadataTraits::key()), + MetadataValueAsSlice(value).Ref()); +} + } // namespace grpc_core #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_H diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.cc index e3bf2a55317..484fd8f8370 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.cc @@ -23,10 +23,8 @@ #include #include -#include #include #include -#include #include #include #include @@ -37,7 +35,6 @@ #include "src/core/call/message.h" #include "src/core/call/metadata.h" #include "src/core/call/metadata_batch.h" -#include "src/core/call/metadata_info.h" #include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/flow_control_manager.h" @@ -53,23 +50,23 @@ #include "src/core/ext/transport/chttp2/transport/keepalive.h" #include "src/core/ext/transport/chttp2/transport/message_assembler.h" #include "src/core/ext/transport/chttp2/transport/ping_promise.h" +#include "src/core/ext/transport/chttp2/transport/security_frame.h" #include "src/core/ext/transport/chttp2/transport/stream.h" #include "src/core/ext/transport/chttp2/transport/stream_data_queue.h" #include "src/core/ext/transport/chttp2/transport/transport_common.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/promise/activity.h" -#include "src/core/lib/promise/context.h" #include "src/core/lib/promise/for_each.h" #include "src/core/lib/promise/if.h" #include "src/core/lib/promise/loop.h" #include "src/core/lib/promise/map.h" -#include "src/core/lib/promise/match_promise.h" #include "src/core/lib/promise/party.h" #include "src/core/lib/promise/poll.h" #include "src/core/lib/promise/promise.h" #include "src/core/lib/promise/race.h" #include "src/core/lib/promise/sleep.h" +#include "src/core/lib/promise/status_flag.h" #include "src/core/lib/promise/try_seq.h" #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/resource_quota/resource_quota.h" @@ -85,25 +82,24 @@ #include "src/core/util/ref_counted_ptr.h" #include "src/core/util/sync.h" #include "src/core/util/time.h" -#include "absl/base/thread_annotations.h" #include "absl/container/flat_hash_map.h" #include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/cord.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" -#include "absl/types/span.h" namespace grpc_core { namespace http2 { -// TODO(akshitpatel)(tjagtap) [PH2][P2] : When settings frame increases incoming +// TODO(akshitpatel)(tjagtap) [PH2][P1] : When settings frame increases incoming // window size, our transport must make the streams that were blocked on stream // flow control as writeable. // As a gRPC server never initiates a stream, the last incoming stream id on // the client side will always be 0. constexpr uint32_t kLastIncomingStreamIdClient = 0; +const bool kIsClient = true; using grpc_event_engine::experimental::EventEngine; using StreamWritabilityUpdate = @@ -113,39 +109,13 @@ using StreamWritabilityUpdate = // and it is functions. The code will be written iteratively. // Do not use or edit any of these functions unless you are // familiar with the PH2 project (Moving chttp2 to promises.) -// TODO(tjagtap) : [PH2][P3] : Delete this comment when http2 -// rollout begins - -template -void Http2ClientTransport::SpawnInfallible(RefCountedPtr party, - absl::string_view name, - Factory&& factory) { - party->Spawn(name, std::forward(factory), [](Empty) {}); -} - -template -void Http2ClientTransport::SpawnInfallibleTransportParty(absl::string_view name, - Factory&& factory) { - SpawnInfallible(general_party_, name, std::forward(factory)); -} - -template -void Http2ClientTransport::SpawnGuardedTransportParty(absl::string_view name, - Factory&& factory) { - general_party_->Spawn( - name, std::forward(factory), - [self = RefAsSubclass()](absl::Status status) { - if (!status.ok()) { - GRPC_UNUSED absl::Status error = self->HandleError( - /*stream_id=*/std::nullopt, ToHttpOkOrConnError(status)); - } - }); -} +// TODO(tjagtap) : [PH2][P5] : Update the experimental status of the code when +// http2 rollout is completed. void Http2ClientTransport::PerformOp(grpc_transport_op* op) { // Notes : Refer : src/core/ext/transport/chaotic_good/client_transport.cc // Functions : StartConnectivityWatch, StopConnectivityWatch, PerformOp - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport PerformOp Begin"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::PerformOp Begin"; bool did_stuff = false; if (op->start_connectivity_watch != nullptr) { StartConnectivityWatch(op->start_connectivity_watch_state, @@ -161,7 +131,7 @@ void Http2ClientTransport::PerformOp(grpc_transport_op* op) { GRPC_DCHECK(did_stuff) << "Unimplemented transport perform op "; ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus()); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport PerformOp End"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::PerformOp End"; // TODO(tjagtap) : [PH2][P2] : // Refer src/core/ext/transport/chttp2/transport/chttp2_transport.cc // perform_transport_op_locked @@ -193,8 +163,9 @@ void Http2ClientTransport::ReportDisconnection( void Http2ClientTransport::ReportDisconnectionLocked( const absl::Status& status, StateWatcher::DisconnectInfo disconnect_info, const char* reason) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ReportDisconnection: status=" - << status.ToString() << "; reason=" << reason; + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ReportDisconnectionLocked status=" + << status.ToString() << "; reason=" << reason; state_tracker_.SetState(GRPC_CHANNEL_TRANSIENT_FAILURE, status, reason); NotifyStateWatcherOnDisconnectLocked(status, disconnect_info); } @@ -230,8 +201,27 @@ void Http2ClientTransport::NotifyStateWatcherOnDisconnectLocked( }); } +absl::Status Http2ClientTransport::AckPing(uint64_t opaque_data) { + // It is possible that the PingRatePolicy may decide to not send a ping + // request (in cases like the number of inflight pings is too high). + // When this happens, it becomes important to ensure that if a ping ack + // is received and there is an "important" outstanding ping request, we + // should retry to send it out now. + if (ping_manager_->AckPing(opaque_data)) { + if (ping_manager_->ImportantPingRequested()) { + return TriggerWriteCycle(); + } + } else { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::AckPing Unknown ping " + "response received for ping id=" + << opaque_data; + } + + return absl::OkStatus(); +} + void Http2ClientTransport::Orphan() { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport Orphan Begin"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::Orphan Begin"; // Accessing general_party here is not advisable. It may so happen that // the party is already freed/may free up any time. The only guarantee here // is that the transport is still valid. @@ -239,37 +229,33 @@ void Http2ClientTransport::Orphan() { MaybeSpawnCloseTransport( ToHttpOkOrConnError(absl::UnavailableError("Orphaned"))); Unref(); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport Orphan End"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::Orphan End"; } /////////////////////////////////////////////////////////////////////////////// // Processing each type of frame -Http2Status Http2ClientTransport::ProcessHttp2DataFrame(Http2DataFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-data GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame { stream_id=" - << frame.stream_id << ", end_stream=" << frame.end_stream - << ", payload=" << MaybeTruncatePayload(frame.payload) + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) { stream_id=" + << frame.stream_id << ", end_stream:" << frame.end_stream << ", payload length=" << frame.payload.Length() << "}"; // TODO(akshitpatel) : [PH2][P3] : Investigate if we should do this even if // the function returns a non-ok status? ping_manager_->ReceivedDataFrame(); - // Lookup stream - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame LookupStream"; RefCountedPtr stream = LookupStream(frame.stream_id); ValueOrHttp2Status flow_control_action = ProcessIncomingDataFrameFlowControl(current_frame_header_, flow_control_, - stream); + stream.get()); if (!flow_control_action.IsOk()) { return ValueOrHttp2Status::TakeStatus( std::move(flow_control_action)); } - ActOnFlowControlAction(flow_control_action.value(), stream); + ActOnFlowControlAction(flow_control_action.value(), stream.get()); if (stream == nullptr) { // TODO(tjagtap) : [PH2][P2] : Implement the correct behaviour later. @@ -277,7 +263,7 @@ Http2Status Http2ClientTransport::ProcessHttp2DataFrame(Http2DataFrame frame) { // or "half-closed (local)" state, the recipient MUST respond with a stream // error (Section 5.4.2) of type STREAM_CLOSED. GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame { stream_id=" + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) { stream_id=" << frame.stream_id << "} Lookup Failed"; return Http2Status::Ok(); } @@ -292,36 +278,41 @@ Http2Status Http2ClientTransport::ProcessHttp2DataFrame(Http2DataFrame frame) { // Add frame to assembler GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame AppendNewDataFrame"; - GrpcMessageAssembler& assembler = stream->assembler; + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) " + "AppendNewDataFrame"; + GrpcMessageAssembler& assembler = stream->GetGrpcMessageAssembler(); Http2Status status = assembler.AppendNewDataFrame(frame.payload, frame.end_stream); if (!status.IsOk()) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessHttp2DataFrame " - "AppendNewDataFrame Failed"; + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) " + "AppendNewDataFrame Failed"; return status; } // Pass the messages up the stack if it is ready. while (true) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame ExtractMessage"; + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) " + "ExtractMessage"; ValueOrHttp2Status result = assembler.ExtractMessage(); if (!result.IsOk()) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame ExtractMessage Failed"; + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) " + "ExtractMessage Failed"; return ValueOrHttp2Status::TakeStatus(std::move(result)); } MessageHandle message = TakeValue(std::move(result)); if (message != nullptr) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame SpawnPushMessage " + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) " + "SpawnPushMessage " << message->DebugString(); - stream->call.SpawnPushMessage(std::move(message)); + stream->GetCallHandler().SpawnPushMessage(std::move(message)); continue; } GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2DataFrame While Break"; + << "Http2ClientTransport::ProcessIncomingFrame(DataFrame) While Break"; break; } @@ -337,14 +328,13 @@ Http2Status Http2ClientTransport::ProcessHttp2DataFrame(Http2DataFrame frame) { return Http2Status::Ok(); } -Http2Status Http2ClientTransport::ProcessHttp2HeaderFrame( - Http2HeaderFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame( + Http2HeaderFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-headers GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2HeaderFrame Promise { stream_id=" + << "Http2ClientTransport::ProcessIncomingFrame(HeaderFrame) { stream_id=" << frame.stream_id << ", end_headers=" << frame.end_headers - << ", end_stream=" << frame.end_stream - << ", payload=" << MaybeTruncatePayload(frame.payload) << " }"; + << ", end_stream=" << frame.end_stream << " }"; // State update MUST happen before processing the frame. incoming_headers_.OnHeaderReceived(frame); @@ -360,7 +350,8 @@ Http2Status Http2ClientTransport::ProcessHttp2HeaderFrame( // receives an unexpected stream identifier MUST respond with a connection // error (Section 5.4.1) of type PROTOCOL_ERROR. GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2HeaderFrame Promise { stream_id=" + << "Http2ClientTransport::ProcessIncomingFrame(HeaderFrame) { " + "stream_id=" << frame.stream_id << "} Lookup Failed"; return ParseAndDiscardHeaders(std::move(frame.payload), frame.end_headers, /*stream=*/nullptr, Http2Status::Ok()); @@ -368,85 +359,49 @@ Http2Status Http2ClientTransport::ProcessHttp2HeaderFrame( if (stream->IsStreamHalfClosedRemote()) { return ParseAndDiscardHeaders( - std::move(frame.payload), frame.end_headers, stream, + std::move(frame.payload), frame.end_headers, stream.get(), Http2Status::Http2StreamError( Http2ErrorCode::kStreamClosed, std::string(RFC9113::kHalfClosedRemoteState))); } - if (incoming_headers_.ClientReceivedDuplicateMetadata( - stream->did_receive_initial_metadata, - stream->did_receive_trailing_metadata)) { + if (incoming_headers_.DidReceiveDuplicateMetadata( + stream->IsInitialMetadataReceived(), + stream->IsTrailingMetadataReceived())) { return ParseAndDiscardHeaders( - std::move(frame.payload), frame.end_headers, stream, + std::move(frame.payload), frame.end_headers, stream.get(), Http2Status::Http2StreamError( Http2ErrorCode::kInternalError, std::string(GrpcErrors::kTooManyMetadata))); } - Http2Status append_result = stream->header_assembler.AppendHeaderFrame(frame); + Http2Status append_result = + stream->GetHeaderAssembler().AppendHeaderFrame(frame); if (!append_result.IsOk()) { // Frame payload is not consumed if AppendHeaderFrame returns a non-OK // status. We need to process it to keep our in consistent state. return ParseAndDiscardHeaders(std::move(frame.payload), frame.end_headers, - stream, std::move(append_result)); + stream.get(), std::move(append_result)); } Http2Status status = ProcessMetadata(stream); if (!status.IsOk()) { // Frame payload has been moved to the HeaderAssembler. So calling // ParseAndDiscardHeaders with an empty buffer. - return ParseAndDiscardHeaders(SliceBuffer(), frame.end_headers, stream, - std::move(status)); + return ParseAndDiscardHeaders(SliceBuffer(), frame.end_headers, + stream.get(), std::move(status)); } // Frame payload has either been processed or moved to the HeaderAssembler. return Http2Status::Ok(); } -Http2Status Http2ClientTransport::ProcessMetadata( - RefCountedPtr stream) { - HeaderAssembler& assembler = stream->header_assembler; - CallHandler call = stream->call; - - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessMetadata"; - if (assembler.IsReady()) { - ValueOrHttp2Status read_result = - assembler.ReadMetadata(parser_, !incoming_headers_.HeaderHasEndStream(), - /*is_client=*/true, - /*max_header_list_size_soft_limit=*/ - incoming_headers_.soft_limit(), - /*max_header_list_size_hard_limit=*/ - settings_->acked().max_header_list_size()); - if (read_result.IsOk()) { - ServerMetadataHandle metadata = TakeValue(std::move(read_result)); - if (incoming_headers_.HeaderHasEndStream()) { - // TODO(tjagtap) : [PH2][P1] : Is this the right way to differentiate - // between initial and trailing metadata? - stream->MarkHalfClosedRemote(); - stream->did_receive_trailing_metadata = true; - BeginCloseStream(stream, /*reset_stream_error_code=*/std::nullopt, - std::move(metadata)); - } else { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessMetadata " - "SpawnPushServerInitialMetadata"; - stream->did_receive_initial_metadata = true; - call.SpawnPushServerInitialMetadata(std::move(metadata)); - } - return Http2Status::Ok(); - } - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessMetadata Failed"; - return ValueOrHttp2Status>::TakeStatus( - std::move(read_result)); - } - return Http2Status::Ok(); -} - -Http2Status Http2ClientTransport::ProcessHttp2RstStreamFrame( - Http2RstStreamFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame( + Http2RstStreamFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-rst_stream GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2RstStreamFrame { stream_id=" + << "Http2ClientTransport::ProcessIncomingFrame(RstStreamFrame) { " + "stream_id=" << frame.stream_id << ", error_code=" << frame.error_code << " }"; Http2ErrorCode error_code = FrameErrorCodeToHttp2ErrorCode(frame.error_code); @@ -455,7 +410,8 @@ Http2Status Http2ClientTransport::ProcessHttp2RstStreamFrame( RefCountedPtr stream = LookupStream(frame.stream_id); if (stream != nullptr) { stream->MarkHalfClosedRemote(); - BeginCloseStream(stream, /*reset_stream_error_code=*/std::nullopt, + BeginCloseStream(std::move(stream), + /*reset_stream_error_code=*/std::nullopt, CancelledServerMetadataFromStatus(status)); } @@ -464,13 +420,13 @@ Http2Status Http2ClientTransport::ProcessHttp2RstStreamFrame( return Http2Status::Ok(); } -Http2Status Http2ClientTransport::ProcessHttp2SettingsFrame( - Http2SettingsFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame( + Http2SettingsFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-settings GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2SettingsFrame { ack=" << frame.ack - << ", settings length=" << frame.settings.size() << "}"; + << "Http2ClientTransport::ProcessIncomingFrame(SettingsFrame) { ack=" + << frame.ack << ", settings length=" << frame.settings.size() << "}"; if (!frame.ack) { Http2Status status = ValidateSettingsValues(frame.settings); @@ -478,7 +434,11 @@ Http2Status Http2ClientTransport::ProcessHttp2SettingsFrame( return status; } settings_->BufferPeerSettings(std::move(frame.settings)); - SpawnGuardedTransportParty("SettingsAck", TriggerWriteCycle()); + absl::Status trigger_write_status = TriggerWriteCycle(); + if (!trigger_write_status.ok()) { + return ToHttpOkOrConnError(trigger_write_status); + } + if (GPR_UNLIKELY(!settings_->IsFirstPeerSettingsApplied())) { // Apply the first settings before we read any other frames. reader_state_.SetPauseReadLoop(); @@ -501,63 +461,53 @@ Http2Status Http2ClientTransport::ProcessHttp2SettingsFrame( return Http2Status::Ok(); } -auto Http2ClientTransport::ProcessHttp2PingFrame(Http2PingFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2PingFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-ping - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessHttp2PingFrame { ack=" - << frame.ack << ", opaque=" << frame.opaque << " }"; - return AssertResultType(If( - frame.ack, - [self = RefAsSubclass(), opaque = frame.opaque]() { - // Received a ping ack. - return self->AckPing(opaque); - }, - [self = RefAsSubclass(), opaque = frame.opaque]() { - return If( - self->test_only_ack_pings_, - [self, opaque]() { - // TODO(akshitpatel) : [PH2][P2] : Have a counter to track number - // of pending induced frames (Ping/Settings Ack). This is to - // ensure that if write is taking a long time, we can stop reads - // and prioritize writes. RFC9113: PING responses SHOULD be given - // higher priority than any other frame. - self->ping_manager_->AddPendingPingAck(opaque); - // TODO(akshitpatel) : [PH2][P2] : This is done assuming that the - // other ProcessFrame promises may return stream or connection - // failures. If this does not turn out to be true, consider - // returning absl::Status here. - return Map(self->TriggerWriteCycle(), [](absl::Status status) { - return ToHttpOkOrConnError(status); - }); - }, - []() { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2PingFrame " - "test_only_ack_pings_ is false. Ignoring the ping " - "request."; - return Immediate(Http2Status::Ok()); - }); - })); + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ProcessIncomingFrame(PingFrame) { ack=" + << frame.ack << ", opaque=" << frame.opaque << " }"; + if (frame.ack) { + return ToHttpOkOrConnError(AckPing(frame.opaque)); + } else { + if (test_only_ack_pings_) { + // TODO(akshitpatel) : [PH2][P2] : Have a counter to track number + // of pending induced frames (Ping/Settings Ack). This is to + // ensure that if write is taking a long time, we can stop reads + // and prioritize writes. RFC9113: PING responses SHOULD be given + // higher priority than any other frame. + ping_manager_->AddPendingPingAck(frame.opaque); + // TODO(akshitpatel) : [PH2][P2] : This is done assuming that the + // other ProcessFrame promises may return stream or connection + // failures. If this does not turn out to be true, consider + // returning absl::Status here. + return ToHttpOkOrConnError(TriggerWriteCycle()); + } else { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ProcessIncomingFrame(PingFrame) " + "test_only_ack_pings_ is false. Ignoring the ping request."; + } + } + return Http2Status::Ok(); } -Http2Status Http2ClientTransport::ProcessHttp2GoawayFrame( - Http2GoawayFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame( + Http2GoawayFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-goaway GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2GoawayFrame Promise { " + << "Http2ClientTransport::ProcessIncomingFrame(GoawayFrame) { " "last_stream_id=" - << frame.last_stream_id << ", error_code=" << frame.error_code - << ", debug_data=" << frame.debug_data.as_string_view() << "}"; + << frame.last_stream_id << ", error_code=" << frame.error_code << "}"; LOG_IF(ERROR, frame.error_code != static_cast(Http2ErrorCode::kNoError)) - << "Received GOAWAY frame with error code: " << frame.error_code - << " and debug data: " << frame.debug_data.as_string_view(); + << "Received GOAWAY frame with error code: " << frame.error_code; uint32_t last_stream_id = 0; absl::Status status(ErrorCodeToAbslStatusCode( FrameErrorCodeToHttp2ErrorCode(frame.error_code)), - frame.debug_data.as_string_view()); - if (frame.error_code == static_cast(Http2ErrorCode::kNoError) && - frame.last_stream_id == RFC9113::kMaxStreamId31Bit) { + frame.debug_data.empty() + ? absl::string_view("GOAWAY received") + : frame.debug_data.as_string_view()); + if (GoawayManager::IsGracefulGoaway(frame)) { const uint32_t next_stream_id = PeekNextStreamId(); last_stream_id = (next_stream_id > 1) ? next_stream_id - 2 : 0; } else { @@ -570,7 +520,8 @@ Http2Status Http2ClientTransport::ProcessHttp2GoawayFrame( MutexLock lock(&transport_mutex_); if (CanCloseTransportLocked()) { close_transport = true; - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessHttp2GoawayFrame " + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessIncomingFrame(" + "GoawayFrame) " "stream_list_ is empty"; } } @@ -596,7 +547,7 @@ Http2Status Http2ClientTransport::ProcessHttp2GoawayFrame( keepalive_time_.millis() > max_keepalive_time_millis ? INT_MAX : keepalive_time_.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER; - if (!IsTransportStateWatcherEnabled()) { + if (!IsSubchannelConnectionScalingEnabled()) { status.SetPayload(kKeepaliveThrottlingKey, absl::Cord(std::to_string(throttled_keepalive_time))); } @@ -614,7 +565,9 @@ Http2Status Http2ClientTransport::ProcessHttp2GoawayFrame( Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kNoError) ? Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kInternalError) : frame.error_code)), - std::string(frame.debug_data.as_string_view()))); + frame.debug_data.empty() + ? std::string("GOAWAY received") + : std::string(frame.debug_data.as_string_view()))); } // lie: use transient failure from the transport to indicate goaway has been @@ -623,11 +576,11 @@ Http2Status Http2ClientTransport::ProcessHttp2GoawayFrame( return Http2Status::Ok(); } -Http2Status Http2ClientTransport::ProcessHttp2WindowUpdateFrame( - Http2WindowUpdateFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame( + Http2WindowUpdateFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-window_update GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2WindowUpdateFrame Promise { " + << "Http2ClientTransport::ProcessIncomingFrame(WindowUpdateFrame) { " " stream_id=" << frame.stream_id << ", increment=" << frame.increment << "}"; @@ -647,22 +600,21 @@ Http2Status Http2ClientTransport::ProcessHttp2WindowUpdateFrame( } } - const bool should_trigger_write = - ProcessIncomingWindowUpdateFrameFlowControl(frame, flow_control_, stream); + const bool should_trigger_write = ProcessIncomingWindowUpdateFrameFlowControl( + frame, flow_control_, stream.get()); if (should_trigger_write) { - SpawnGuardedTransportParty("TransportTokensAvailable", TriggerWriteCycle()); + return ToHttpOkOrConnError(TriggerWriteCycle()); } return Http2Status::Ok(); } -Http2Status Http2ClientTransport::ProcessHttp2ContinuationFrame( - Http2ContinuationFrame frame) { +Http2Status Http2ClientTransport::ProcessIncomingFrame( + Http2ContinuationFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-continuation GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ProcessHttp2ContinuationFrame Promise { " + << "Http2ClientTransport::ProcessIncomingFrame(ContinuationFrame) { " "stream_id=" - << frame.stream_id << ", end_headers=" << frame.end_headers - << ", payload=" << MaybeTruncatePayload(frame.payload) << " }"; + << frame.stream_id << ", end_headers=" << frame.end_headers << " }"; // State update MUST happen before processing the frame. incoming_headers_.OnContinuationReceived(frame); @@ -682,102 +634,102 @@ Http2Status Http2ClientTransport::ProcessHttp2ContinuationFrame( if (stream->IsStreamHalfClosedRemote()) { return ParseAndDiscardHeaders( - std::move(frame.payload), frame.end_headers, stream, + std::move(frame.payload), frame.end_headers, stream.get(), Http2Status::Http2StreamError( Http2ErrorCode::kStreamClosed, std::string(RFC9113::kHalfClosedRemoteState))); } Http2Status append_result = - stream->header_assembler.AppendContinuationFrame(frame); + stream->GetHeaderAssembler().AppendContinuationFrame(frame); if (!append_result.IsOk()) { // Frame payload is not consumed if AppendContinuationFrame returns a // non-OK status. We need to process it to keep our in consistent state. return ParseAndDiscardHeaders(std::move(frame.payload), frame.end_headers, - stream, std::move(append_result)); + stream.get(), std::move(append_result)); } Http2Status status = ProcessMetadata(stream); if (!status.IsOk()) { // Frame payload is consumed by HeaderAssembler. So passing an empty // SliceBuffer to ParseAndDiscardHeaders. - return ParseAndDiscardHeaders(SliceBuffer(), frame.end_headers, stream, - std::move(status)); + return ParseAndDiscardHeaders(SliceBuffer(), frame.end_headers, + stream.get(), std::move(status)); } // Frame payload has either been processed or moved to the HeaderAssembler. return Http2Status::Ok(); } -Http2Status Http2ClientTransport::ProcessHttp2SecurityFrame( - Http2SecurityFrame frame) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessHttp2SecurityFrame " - "{ payload.Length=" - << frame.payload.Length() << " }"; +Http2Status Http2ClientTransport::ProcessIncomingFrame( + Http2SecurityFrame&& frame) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ProcessIncomingFrame(SecurityFrame) "; if (settings_->IsSecurityFrameExpected()) { - // TODO(tjagtap) : [PH2][P3] : Add handling of Security frame - // Just the frame.payload needs to be passed to the endpoint_ object. - // Refer usage of TransportFramingEndpointExtension. + security_frame_handler_->ProcessPayload(std::move(frame.payload)); } - // Ignore the Security frame if it is not expected. return Http2Status::Ok(); } -auto Http2ClientTransport::ProcessOneFrame(Http2Frame frame) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ProcessOneFrame Factory"; - return AssertResultType(MatchPromise( - std::move(frame), - [self = RefAsSubclass()](Http2DataFrame frame) { - return self->ProcessHttp2DataFrame(std::move(frame)); - }, - [self = RefAsSubclass()](Http2HeaderFrame frame) { - return self->ProcessHttp2HeaderFrame(std::move(frame)); - }, - [self = - RefAsSubclass()](Http2RstStreamFrame frame) { - return self->ProcessHttp2RstStreamFrame(frame); - }, - [self = RefAsSubclass()](Http2SettingsFrame frame) { - return self->ProcessHttp2SettingsFrame(std::move(frame)); - }, - [self = RefAsSubclass()](Http2PingFrame frame) { - return self->ProcessHttp2PingFrame(frame); - }, - [self = RefAsSubclass()](Http2GoawayFrame frame) { - return self->ProcessHttp2GoawayFrame(std::move(frame)); - }, - [self = RefAsSubclass()]( - Http2WindowUpdateFrame frame) { - return self->ProcessHttp2WindowUpdateFrame(frame); - }, - [self = RefAsSubclass()]( - Http2ContinuationFrame frame) { - return self->ProcessHttp2ContinuationFrame(std::move(frame)); - }, - [self = RefAsSubclass()](Http2SecurityFrame frame) { - return self->ProcessHttp2SecurityFrame(std::move(frame)); - }, - [](GRPC_UNUSED Http2UnknownFrame frame) { - // RFC9113: Implementations MUST ignore and discard frames of - // unknown types. - return Http2Status::Ok(); - }, - [](GRPC_UNUSED Http2EmptyFrame frame) { - LOG(DFATAL) - << "ParseFramePayload should never return a Http2EmptyFrame"; - return Http2Status::Ok(); - })); +Http2Status Http2ClientTransport::ProcessIncomingFrame( + GRPC_UNUSED Http2UnknownFrame&& frame) { + // RFC9113: Implementations MUST ignore and discard frames of + // unknown types. + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ProcessIncomingFrame(UnknownFrame) "; + return Http2Status::Ok(); +} + +Http2Status Http2ClientTransport::ProcessIncomingFrame( + GRPC_UNUSED Http2EmptyFrame&& frame) { + LOG(DFATAL) << "ParseFramePayload should never return a Http2EmptyFrame"; + return Http2Status::Ok(); +} + +Http2Status Http2ClientTransport::ProcessMetadata( + RefCountedPtr stream) { + HeaderAssembler& assembler = stream->GetHeaderAssembler(); + CallHandler& call = stream->GetCallHandler(); + + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessMetadata"; + if (assembler.IsReady()) { + ValueOrHttp2Status read_result = + assembler.ReadMetadata(parser_, !incoming_headers_.HeaderHasEndStream(), + /*max_header_list_size_soft_limit=*/ + incoming_headers_.soft_limit(), + /*max_header_list_size_hard_limit=*/ + settings_->acked().max_header_list_size()); + if (read_result.IsOk()) { + ServerMetadataHandle metadata = TakeValue(std::move(read_result)); + if (incoming_headers_.HeaderHasEndStream()) { + stream->MarkHalfClosedRemote(); + stream->SetTrailingMetadataReceived(); + BeginCloseStream(std::move(stream), + /*reset_stream_error_code=*/std::nullopt, + std::move(metadata)); + } else { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessMetadata " + "SpawnPushServerInitialMetadata"; + metadata->Set(PeerString(), incoming_headers_.peer_string()); + stream->SetInitialMetadataReceived(); + call.SpawnPushServerInitialMetadata(std::move(metadata)); + } + return Http2Status::Ok(); + } + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessMetadata Failed"; + return ValueOrHttp2Status>::TakeStatus( + std::move(read_result)); + } + return Http2Status::Ok(); } Http2Status Http2ClientTransport::ParseAndDiscardHeaders( - SliceBuffer&& buffer, const bool is_end_headers, - const RefCountedPtr stream, Http2Status&& original_status, - DebugLocation whence) { + SliceBuffer&& buffer, const bool is_end_headers, Stream* stream, + Http2Status&& original_status, DebugLocation whence) { const bool is_initial_metadata = !incoming_headers_.HeaderHasEndStream(); const uint32_t incoming_stream_id = incoming_headers_.GetStreamId(); GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ParseAndDiscardHeaders buffer " - "size: " + << "Http2ClientTransport::ParseAndDiscardHeaders buffer size: " << buffer.Length() << " is_initial_metadata: " << is_initial_metadata << " is_end_headers: " << is_end_headers << " incoming_stream_id: " << incoming_stream_id @@ -790,7 +742,7 @@ Http2Status Http2ClientTransport::ParseAndDiscardHeaders( HeaderAssembler::ParseHeaderArgs{ /*is_initial_metadata=*/is_initial_metadata, /*is_end_headers=*/is_end_headers, - /*is_client=*/true, + /*is_client=*/kIsClient, /*max_header_list_size_soft_limit=*/ incoming_headers_.soft_limit(), /*max_header_list_size_hard_limit=*/ @@ -802,35 +754,9 @@ Http2Status Http2ClientTransport::ParseAndDiscardHeaders( /////////////////////////////////////////////////////////////////////////////// // Read Related Promises and Promise Factories -auto Http2ClientTransport::EndpointReadSlice(const size_t num_bytes) { - return Map( - endpoint_.ReadSlice(num_bytes), - [self = RefAsSubclass(), - num_bytes](absl::StatusOr status) { - if (status.ok()) { - self->keepalive_manager_->GotData(); - self->ztrace_collector_->Append(PromiseEndpointReadTrace{num_bytes}); - } - return status; - }); -} - -auto Http2ClientTransport::EndpointRead(const size_t num_bytes) { - return Map( - endpoint_.Read(num_bytes), - [self = RefAsSubclass(), - num_bytes](absl::StatusOr status) { - if (status.ok()) { - self->keepalive_manager_->GotData(); - self->ztrace_collector_->Append(PromiseEndpointReadTrace{num_bytes}); - } - return status; - }); -} - auto Http2ClientTransport::ReadAndProcessOneFrame() { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ReadAndProcessOneFrame Factory"; + << "Http2ClientTransport::ReadAndProcessOneFrame Factory"; return AssertResultType(TrySeq( // Fetch the first kFrameHeaderSize bytes of the Frame, these contain // the frame header. @@ -838,136 +764,128 @@ auto Http2ClientTransport::ReadAndProcessOneFrame() { // Parse the frame header. [](Slice header_bytes) -> Http2FrameHeader { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ReadAndProcessOneFrame Parse " + << "Http2ClientTransport::ReadAndProcessOneFrame Parse " << header_bytes.as_string_view(); return Http2FrameHeader::Parse(header_bytes.begin()); }, // Validate the incoming frame as per the current state of the transport - [self = RefAsSubclass()](Http2FrameHeader header) { + [this](Http2FrameHeader header) { Http2Status status = ValidateFrameHeader( - /*max_frame_size_setting*/ self->settings_->acked() - .max_frame_size(), + /*max_frame_size_setting*/ settings_->acked().max_frame_size(), /*incoming_header_in_progress*/ - self->incoming_headers_.IsWaitingForContinuationFrame(), + incoming_headers_.IsWaitingForContinuationFrame(), /*incoming_header_stream_id*/ - self->incoming_headers_.GetStreamId(), + incoming_headers_.GetStreamId(), /*current_frame_header*/ header, - /*last_stream_id=*/self->GetLastStreamId(), - /*is_client=*/true, /*is_first_settings_processed=*/ - self->settings_->IsFirstPeerSettingsApplied()); + /*last_stream_id=*/GetLastStreamId(), + /*is_client=*/kIsClient, /*is_first_settings_processed=*/ + settings_->IsFirstPeerSettingsApplied()); if (GPR_UNLIKELY(!status.IsOk())) { GRPC_DCHECK(status.GetType() == Http2Status::Http2ErrorType::kConnectionError); - return self->HandleError(std::nullopt, std::move(status)); + return HandleError(std::nullopt, std::move(status)); } - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ReadAndProcessOneFrame " - "Validated Frame Header:" - << header.ToString(); - self->current_frame_header_ = header; + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ReadAndProcessOneFrame " + "Validated Frame Header:" + << header.ToString(); + current_frame_header_ = header; return absl::OkStatus(); }, // Read the payload of the frame. - [self = RefAsSubclass()]() { + [this]() { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ReadAndProcessOneFrame Read Frame "; - return AssertResultType>( - self->EndpointRead(self->current_frame_header_.length)); - }, - // Parse the payload of the frame based on frame type. - [self = RefAsSubclass()]( - SliceBuffer payload) -> absl::StatusOr { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ReadAndProcessOneFrame ParseFramePayload " - << MaybeTruncatePayload(payload); - ValueOrHttp2Status frame = - ParseFramePayload(self->current_frame_header_, std::move(payload)); - if (!frame.IsOk()) { - return self->HandleError( - self->current_frame_header_.stream_id, - ValueOrHttp2Status::TakeStatus(std::move(frame))); - } - return TakeValue(std::move(frame)); - }, - [self = RefAsSubclass()]( - GRPC_UNUSED Http2Frame frame) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ReadAndProcessOneFrame ProcessOneFrame"; + << "Http2ClientTransport::ReadAndProcessOneFrame Read Frame "; return AssertResultType(Map( - self->ProcessOneFrame(std::move(frame)), - [self](Http2Status status) { - if (!status.IsOk()) { - return self->HandleError(self->current_frame_header_.stream_id, - std::move(status)); + EndpointRead(current_frame_header_.length), + [this](absl::StatusOr&& payload) { + if (GPR_UNLIKELY(!payload.ok())) { + return payload.status(); + } + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::ReadAndProcessOneFrame " + "ParseFramePayload payload length: " + << payload.value().Length(); + ValueOrHttp2Status frame = ParseFramePayload( + current_frame_header_, TakeValue(std::move(payload))); + if (GPR_UNLIKELY(!frame.IsOk())) { + return HandleError(current_frame_header_.stream_id, + ValueOrHttp2Status::TakeStatus( + std::move(frame))); + } + Http2Status status = + ProcessOneIncomingFrame(TakeValue(std::move(frame))); + if (GPR_UNLIKELY(!status.IsOk())) { + return HandleError(current_frame_header_.stream_id, + std::move(status)); } return absl::OkStatus(); })); }, - [self = RefAsSubclass()]() -> Poll { - return self->reader_state_.MaybePauseReadLoop(); + [this]() -> Poll { + return reader_state_.MaybePauseReadLoop(); })); } auto Http2ClientTransport::ReadLoop() { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport ReadLoop Factory"; - return AssertResultType( - Loop([self = RefAsSubclass()]() { - return TrySeq(self->ReadAndProcessOneFrame(), - []() -> LoopCtl { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport ReadLoop Continue"; - return Continue(); - }); - })); + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ReadLoop Factory"; + return AssertResultType(Loop([this]() { + return TrySeq(ReadAndProcessOneFrame(), []() -> LoopCtl { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ReadLoop Continue"; + return Continue(); + }); + })); } /////////////////////////////////////////////////////////////////////////////// // Flow Control for the Transport auto Http2ClientTransport::FlowControlPeriodicUpdateLoop() { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport PeriodicUpdateLoop Factory"; + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::FlowControlPeriodicUpdateLoop Factory"; return AssertResultType( - Loop([self = RefAsSubclass()]() { + Loop([this]() { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport FlowControlPeriodicUpdateLoop Loop"; + << "Http2ClientTransport::FlowControlPeriodicUpdateLoop Loop"; return TrySeq( // TODO(tjagtap) [PH2][P2][BDP] Remove this static sleep when the // BDP code is done. Sleep(chttp2::kFlowControlPeriodicUpdateTimer), - [self]() -> Poll { + [this]() -> Poll { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport FlowControl PeriodicUpdate()"; - chttp2::FlowControlAction action = - self->flow_control_.PeriodicUpdate(); + << "Http2ClientTransport::FlowControlPeriodicUpdateLoop " + "PeriodicUpdate()"; + chttp2::FlowControlAction action = flow_control_.PeriodicUpdate(); bool is_action_empty = action == chttp2::FlowControlAction(); // This may trigger a write cycle - self->ActOnFlowControlAction(action, nullptr); + ActOnFlowControlAction(action, nullptr); if (is_action_empty) { // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is // done. We must continue to do PeriodicUpdate once BDP is in // place. - MutexLock lock(&self->transport_mutex_); - if (self->GetActiveStreamCountLocked() == 0) { - self->AddPeriodicUpdatePromiseWaker(); + MutexLock lock(&transport_mutex_); + if (GetActiveStreamCountLocked() == 0) { + AddPeriodicUpdatePromiseWaker(); return Pending{}; } } return absl::OkStatus(); }, - [self]() -> LoopCtl { return Continue{}; }); + []() -> LoopCtl { return Continue{}; }); })); } // Equivalent to grpc_chttp2_act_on_flowctl_action in chttp2_transport.cc void Http2ClientTransport::ActOnFlowControlAction( - const chttp2::FlowControlAction& action, RefCountedPtr stream) { + const chttp2::FlowControlAction& action, Stream* stream) { GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ActOnFlowControlAction" << action.DebugString(); if (action.send_stream_update() != kNoActionNeeded) { if (GPR_LIKELY(stream != nullptr)) { GRPC_DCHECK_GT(stream->GetStreamId(), 0u); if (stream->CanSendWindowUpdateFrames()) { - window_update_list_.insert(stream->GetStreamId()); + flow_control_.AddStreamToWindowUpdateList(stream->GetStreamId()); GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ActOnFlowControlAction " "added stream " @@ -990,7 +908,10 @@ void Http2ClientTransport::ActOnFlowControlAction( // updates to the peer, causing the peer to block unnecessarily while // waiting for flow control tokens. reader_state_.SetPauseReadLoop(); - SpawnGuardedTransportParty("SendControlFrames", TriggerWriteCycle()); + if (!TriggerWriteCycleOrHandleError()) { + return; + } + GRPC_HTTP2_CLIENT_DLOG << "Update Immediately : " << action.ImmediateUpdateReasons(); } @@ -998,18 +919,34 @@ void Http2ClientTransport::ActOnFlowControlAction( /////////////////////////////////////////////////////////////////////////////// // Write Related Promises and Promise Factories +auto Http2ClientTransport::EndpointWrite(SliceBuffer&& output_buf) { + size_t output_buf_length = output_buf.Length(); + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::EndpointWrite output_buf: " + << output_buf_length; -auto Http2ClientTransport::ProcessAndWriteControlFrames() { - SliceBuffer output_buf; - if (is_first_write_) { + transport_write_context_.GetWriteCycle().BeginWrite(output_buf_length); + return Map( + endpoint_.Write(std::forward(output_buf), + TransportWriteContext::GetWriteArgs(settings_->peer())), + [this](absl::Status status) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::EndpointWrite complete with status = " + << status; + transport_write_context_.GetWriteCycle().EndWrite(status.ok()); + return status; + }); +} + +absl::Status Http2ClientTransport::PrepareControlFrames() { + FrameSender frame_sender = + transport_write_context_.GetWriteCycle().GetFrameSender(); + if (transport_write_context_.IsFirstWrite()) { // RFC9113: That is, the connection preface starts with the string - // "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" - // This sequence MUST be followed by a SETTINGS frame, which MAY be empty. - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport WriteControlFrames " - "GRPC_CHTTP2_CLIENT_CONNECT_STRING"; - output_buf.Append( - Slice::FromCopiedString(GRPC_CHTTP2_CLIENT_CONNECT_STRING)); - settings_->MaybeGetSettingsAndSettingsAckFrames(flow_control_, output_buf); + // "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n". This connection preface string will + // be sent as part of the first write cycle. This sequence MUST be followed + // by a SETTINGS frame, which MAY be empty. + settings_->MaybeGetSettingsAndSettingsAckFrames(flow_control_, + frame_sender); // TODO(tjagtap) [PH2][P2][Server] : This will be opposite for server. We // must read before we write for the server. So the ReadLoop will be Spawned // just after the constructor, and the write loop should be spawned only @@ -1018,7 +955,6 @@ auto Http2ClientTransport::ProcessAndWriteControlFrames() { // Because the client is expected to write before it reads, we spawn the // ReadLoop of the client only after the first write is queued. SpawnGuardedTransportParty("ReadLoop", UntilTransportClosed(ReadLoop())); - is_first_write_ = false; } // Order of Control Frames is important. @@ -1029,86 +965,105 @@ auto Http2ClientTransport::ProcessAndWriteControlFrames() { // 4. WINDOW_UPDATE // 5. Custom gRPC security frame - goaway_manager_.MaybeGetSerializedGoawayFrame(output_buf); + goaway_manager_.MaybeGetSerializedGoawayFrame(frame_sender); + bool should_spawn_security_frame_loop = false; http2::Http2ErrorCode apply_status = - settings_->MaybeReportAndApplyBufferedPeerSettings(event_engine_.get()); + settings_->MaybeReportAndApplyBufferedPeerSettings( + event_engine_.get(), should_spawn_security_frame_loop); + if (should_spawn_security_frame_loop) { + const SecurityFrameHandler::EndpointExtensionState state = + security_frame_handler_->Initialize(event_engine_); + if (state.is_set) { + SpawnInfallibleTransportParty("SecurityFrameLoop", + UntilTransportClosed(SecurityFrameLoop())); + } + } + if (!goaway_manager_.IsImmediateGoAway() && apply_status == http2::Http2ErrorCode::kNoError) { EnforceLatestIncomingSettings(); - settings_->MaybeGetSettingsAndSettingsAckFrames(flow_control_, output_buf); - ping_manager_->MaybeGetSerializedPingFrames(output_buf, - NextAllowedPingInterval()); - MaybeGetWindowUpdateFrames(output_buf); - } - const uint64_t buffer_length = output_buf.Length(); - ztrace_collector_->Append(PromiseEndpointWriteTrace{buffer_length}); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport WriteControlFrames Size : " - << buffer_length; - return AssertResultType( - If((buffer_length > 0 && apply_status == http2::Http2ErrorCode::kNoError), - [self = RefAsSubclass(), - output_buf = std::move(output_buf)]() mutable { - return self->endpoint_.Write(std::move(output_buf), - GetWriteArgs(self->settings_->peer())); - }, - [self = RefAsSubclass(), apply_status]() { - if (apply_status != http2::Http2ErrorCode::kNoError) { - return self->HandleError( - std::nullopt, - Http2Status::Http2ConnectionError( - apply_status, "Failed to apply incoming settings")); - } - return absl::OkStatus(); - })); -} - -void Http2ClientTransport::NotifyControlFramesWriteDone() { + settings_->MaybeGetSettingsAndSettingsAckFrames(flow_control_, + frame_sender); + MaybeSpawnDelayedPing(ping_manager_->MaybeGetSerializedPingFrames( + frame_sender, NextAllowedPingInterval())); + MaybeGetWindowUpdateFrames(frame_sender); + security_frame_handler_->MaybeAppendSecurityFrame(frame_sender); + } + + if (apply_status != http2::Http2ErrorCode::kNoError) { + return HandleError(std::nullopt, + Http2Status::Http2ConnectionError( + apply_status, "Failed to apply incoming settings")); + } + + return absl::OkStatus(); +} + +auto Http2ClientTransport::MaybeWriteUrgentFrames() { + return AssertResultType(If( + transport_write_context_.GetWriteCycle().CanSerializeUrgentFrames(), + [this]() mutable { + WriteCycle& write_cycle = transport_write_context_.GetWriteCycle(); + const uint64_t buffer_length = write_cycle.GetUrgentFrameCount(); + ztrace_collector_->Append(PromiseEndpointWriteTrace{buffer_length}); + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::MaybeWriteUrgentFrames frame count: " + << buffer_length; + return EndpointWrite(write_cycle.SerializeUrgentFrames( + WriteCycle::SerializeStats{should_reset_ping_clock_})); + }, + []() { return absl::OkStatus(); })); +} + +void Http2ClientTransport::NotifyFramesWriteDone() { // Notify Control modules that we have sent the frames. // All notifications are expected to be synchronous. - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport NotifyControlFramesWriteDone"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::NotifyFramesWriteDone"; reader_state_.ResumeReadLoopIfPaused(); - ping_manager_->NotifyPingSent(); + MaybeSpawnPingTimeout(ping_manager_->NotifyPingSent()); goaway_manager_.NotifyGoawaySent(); MaybeSpawnWaitForSettingsTimeout(); } -auto Http2ClientTransport::SerializeAndWrite(std::vector&& frames) { - SliceBuffer output_buf; - should_reset_ping_clock_ = - Serialize(absl::Span(frames), output_buf) - .should_reset_ping_clock; - size_t output_buf_length = output_buf.Length(); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport SerializeAndWrite Write " - "output_buf.length() = " - << output_buf_length; +void Http2ClientTransport::NotifyUrgentFramesWriteDone() {} + +auto Http2ClientTransport::SerializeAndWrite() { return AssertResultType(If( - output_buf_length > 0, - [self = RefAsSubclass(), - output_buf = std::move(output_buf)]() mutable { - return self->endpoint_.Write(std::move(output_buf), - GetWriteArgs(self->settings_->peer())); + transport_write_context_.GetWriteCycle().CanSerializeRegularFrames(), + [this]() mutable { + WriteCycle& write_cycle = transport_write_context_.GetWriteCycle(); + const uint64_t frame_count = write_cycle.GetRegularFrameCount(); + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::SerializeAndWrite frame count: " + << frame_count; + ztrace_collector_->Append(PromiseEndpointWriteTrace{frame_count}); + return EndpointWrite(write_cycle.SerializeRegularFrames( + WriteCycle::SerializeStats{should_reset_ping_clock_})); }, []() { return absl::OkStatus(); })); } -absl::StatusOr> -Http2ClientTransport::DequeueStreamFrames(RefCountedPtr stream) { +absl::Status Http2ClientTransport::DequeueStreamFrames( + RefCountedPtr stream, WriteCycle& write_cycle) { // write_bytes_remaining_ is passed as an upper bound on the max // number of tokens that can be dequeued to prevent dequeuing huge // data frames when write_bytes_remaining_ is very low. As the // available transport tokens can only range from 0 to 2^31 - 1, // we are clamping the write_bytes_remaining_ to that range. - const uint32_t tokens = - GetMaxPermittedDequeue(flow_control_, stream->flow_control, - write_bytes_remaining_, settings_->peer()); - const uint32_t stream_flow_control_tokens = static_cast( - GetStreamFlowControlTokens(stream->flow_control, settings_->peer())); - stream->flow_control.ReportIfStalled( - /*is_client=*/true, stream->GetStreamId(), settings_->peer()); + FrameSender frame_sender = write_cycle.GetFrameSender(); + const uint32_t tokens = GetMaxPermittedDequeue( + flow_control_, stream->GetStreamFlowControl(), + write_cycle.GetWriteBytesRemaining(), settings_->peer()); + const uint32_t stream_flow_control_tokens = + static_cast(GetStreamFlowControlTokens( + stream->GetStreamFlowControl(), settings_->peer())); + stream->GetStreamFlowControl().ReportIfStalled( + /*is_client=*/kIsClient, stream->GetStreamId(), settings_->peer()); StreamDataQueue::DequeueResult result = stream->DequeueFrames(tokens, stream_flow_control_tokens, - settings_->peer().max_frame_size(), encoder_); - ProcessOutgoingDataFrameFlowControl(stream->flow_control, + settings_->peer().max_frame_size(), encoder_, + frame_sender); + ProcessOutgoingDataFrameFlowControl(stream->GetStreamFlowControl(), result.flow_control_tokens_consumed); if (result.is_writable) { // Stream is still writable. Enqueue it back to the writable @@ -1118,7 +1073,7 @@ Http2ClientTransport::DequeueStreamFrames(RefCountedPtr stream) { if (GPR_UNLIKELY(!status.ok())) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport DequeueStreamFrames Failed to " + << "Http2ClientTransport::DequeueStreamFrames Failed to " "enqueue stream " << stream->GetStreamId() << " with status: " << status; // Close transport if we fail to enqueue stream. @@ -1134,9 +1089,9 @@ Http2ClientTransport::DequeueStreamFrames(RefCountedPtr stream) { // multiplexer loop as the stream will never be writable again. Additionally, // the other two stream refs, CallHandler OnDone and OutboundLoop will be // dropped by Callv3 triggering cleaning up the stream object. - if (result.InitialMetadataDequeued()) { + if (result.IsInitialMetadataDequeued()) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport DequeueStreamFrames InitialMetadataDequeued " + << "Http2ClientTransport::DequeueStreamFrames InitialMetadataDequeued " "stream_id = " << stream->GetStreamId(); stream->SentInitialMetadata(); @@ -1144,178 +1099,170 @@ Http2ClientTransport::DequeueStreamFrames(RefCountedPtr stream) { AddToStreamList(stream); } - if (result.HalfCloseDequeued()) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport DequeueStreamFrames HalfCloseDequeued " - "stream_id = " - << stream->GetStreamId(); + if (result.IsHalfCloseDequeued()) { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::DequeueStreamFrames " + "HalfCloseDequeued stream_id = " + << stream->GetStreamId(); stream->MarkHalfClosedLocal(); - CloseStream( - stream, - CloseStreamArgs{/*close_reads=*/stream->did_receive_trailing_metadata, - /*close_writes=*/true}); + + if (stream->IsTrailingMetadataReceived()) { + CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true, + /*close_writes=*/true}); + } } - if (result.ResetStreamDequeued()) { + if (result.IsResetStreamDequeued()) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport DequeueStreamFrames ResetStreamDequeued " + << "Http2ClientTransport::DequeueStreamFrames ResetStreamDequeued " "stream_id = " << stream->GetStreamId(); stream->MarkHalfClosedLocal(); - CloseStream(stream, CloseStreamArgs{/*close_reads=*/true, - /*close_writes=*/true}); + CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true, + /*close_writes=*/true}); } // Update the write_bytes_remaining_ based on the bytes consumed // in the current dequeue. - write_bytes_remaining_ = - (write_bytes_remaining_ >= result.total_bytes_consumed) - ? (write_bytes_remaining_ - result.total_bytes_consumed) - : 0; - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport DequeueStreamFrames " - "write_bytes_remaining_ after dequeue = " - << write_bytes_remaining_ << " total_bytes_consumed = " - << result.total_bytes_consumed + // Note: We do tend to overestimate the bytes consumed here. This may result + // in sending less data than target_write_size_. + + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::DequeueStreamFrames " + "After dequeue: " + << write_cycle.DebugString() << " stream_id = " << stream->GetStreamId() << " is_writable = " << result.is_writable << " stream_priority = " - << static_cast(result.priority) - << " number of frames = " << result.frames.size(); - return std::move(result.frames); + << static_cast(result.priority); + return absl::OkStatus(); } // This MultiplexerLoop promise is responsible for Multiplexing multiple gRPC // Requests (HTTP2 Streams) and writing them into one common endpoint. auto Http2ClientTransport::MultiplexerLoop() { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport MultiplexerLoop Factory"; - return AssertResultType< - absl::Status>(Loop([self = RefAsSubclass()]() { - self->write_bytes_remaining_ = self->GetMaxWriteSize(); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport MultiplexerLoop " - << " max_write_size_=" << self->GetMaxWriteSize(); + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::MultiplexerLoop Factory"; + return AssertResultType(Loop([this]() { return TrySeq( - self->writable_stream_list_.WaitForReady( - self->AreTransportFlowControlTokensAvailable()), - [self]() { - // TODO(akshitpatel) : [PH2][P2] : Return an `important` tag from - // WriteControlFrames() to indicate if we should do a separate write - // for the queued control frames or send the queued frames with the - // data frames(if any). - return Map( - self->ProcessAndWriteControlFrames(), - [self](absl::Status status) { - if (GPR_UNLIKELY(!status.ok())) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MultiplexerLoop Failed to " - "write control frames with status: " - << status; - return status; - } - self->NotifyControlFramesWriteDone(); - return absl::OkStatus(); - }); - }, - [self]() -> absl::StatusOr> { - std::vector frames; - // Drain all the writable streams till we have written - // max_write_size_ bytes of data or there is no more data to send. In - // some cases, we may write more than max_write_size_ bytes(like - // writing metadata). - while (self->write_bytes_remaining_ > 0) { - std::optional> optional_stream = - self->writable_stream_list_.ImmediateNext( - self->AreTransportFlowControlTokensAvailable()); - if (!optional_stream.has_value()) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MultiplexerLoop " - "No writable streams available, write_bytes_remaining_ = " - << self->write_bytes_remaining_; - break; + Map(writable_stream_list_.WaitForReady( + AreTransportFlowControlTokensAvailable()), + [this](absl::StatusOr status) -> absl::Status { + if (GPR_UNLIKELY(!status.ok())) { + return status.status(); + } + transport_write_context_.StartWriteCycle(); + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::MultiplexerLoop " + "Created WriteCycle: " + << transport_write_context_.DebugString(); + return PrepareControlFrames(); + }), + [this] { + return Map(MaybeWriteUrgentFrames(), [this](absl::Status status) { + if (GPR_UNLIKELY(!status.ok())) { + return status; } - RefCountedPtr stream = std::move(optional_stream.value()); + NotifyUrgentFramesWriteDone(); + WriteCycle& write_cycle = transport_write_context_.GetWriteCycle(); GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MultiplexerLoop " - "Next writable stream id = " - << stream->GetStreamId() - << " is_closed_for_writes = " << stream->IsClosedForWrites(); - - if (stream->GetStreamId() == kInvalidStreamId) { - GRPC_DCHECK(stream->IsStreamIdle()); - // TODO(akshitpatel) : [PH2][P5] : We will waste a stream id in - // the rare scenario where the stream is aborted before it can be - // written to. This is a possible area to optimize in future. - absl::Status status = self->InitializeStream(stream); - if (!status.ok()) { + << "Http2ClientTransport::MultiplexerLoop " + << "Starting to iterate over writable stream list " + << write_cycle.DebugString(); + // Drain all the writable streams till we have written + // max_write_size_ bytes of data or there is no more data to send. + // In some cases, we may write more than max_write_size_ bytes(like + // writing metadata). + while (write_cycle.GetWriteBytesRemaining() > 0) { + std::optional> optional_stream = + writable_stream_list_.ImmediateNext( + AreTransportFlowControlTokensAvailable()); + if (!optional_stream.has_value()) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MultiplexerLoop " - "Failed to assign stream id and add to stream list for " - "stream: " - << stream.get() << " closing this stream."; - self->BeginCloseStream( - stream, /*reset_stream_error_code=*/std::nullopt, - CancelledServerMetadataFromStatus(status)); - continue; + << "Http2ClientTransport::MultiplexerLoop " + "No writable streams available "; + break; } - } - - if (GPR_LIKELY(!stream->IsClosedForWrites())) { - absl::StatusOr> stream_frames = - self->DequeueStreamFrames(stream); - if (GPR_UNLIKELY(!stream_frames.ok())) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MultiplexerLoop " - "Failed to dequeue stream frames with status: " - << stream_frames.status(); - return stream_frames.status(); + RefCountedPtr stream = std::move(optional_stream.value()); + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::MultiplexerLoop " + "Next writable stream id = " + << stream->GetStreamId() + << " is_closed_for_writes = " << stream->IsClosedForWrites(); + + if (stream->GetStreamId() == kInvalidStreamId) { + GRPC_DCHECK(stream->IsStreamIdle()); + // TODO(akshitpatel) : [PH2][P5] : We will waste a stream id in + // the rare scenario where the stream is aborted before it can + // be written to. This is a possible area to optimize in future. + absl::Status status = InitializeStream(*stream); + if (!status.ok()) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::MultiplexerLoop " + "Failed to assign stream id and add to stream list for" + " stream: " + << stream.get() << " closing this stream."; + BeginCloseStream(std::move(stream), + /*reset_stream_error_code=*/std::nullopt, + CancelledServerMetadataFromStatus(status)); + continue; + } } - frames.reserve(frames.size() + stream_frames.value().size()); - frames.insert( - frames.end(), - std::make_move_iterator(stream_frames.value().begin()), - std::make_move_iterator(stream_frames.value().end())); + if (GPR_LIKELY(!stream->IsClosedForWrites())) { + absl::Status status = DequeueStreamFrames( + std::move(stream), + transport_write_context_.GetWriteCycle()); + if (GPR_UNLIKELY(!status.ok())) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::MultiplexerLoop " + "Failed to dequeue stream frames with status: " + << status; + return status; + } + } } - } - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MultiplexerLoop " - "write_bytes_remaining_ after draining all writable streams = " - << self->write_bytes_remaining_; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::MultiplexerLoop " + "After draining all writable streams " + << write_cycle.DebugString(); - return std::move(frames); + return absl::OkStatus(); + }); }, - [self](std::vector frames) { - return self->SerializeAndWrite(std::move(frames)); + [this]() { + return Map(SerializeAndWrite(), [this](absl::Status status) { + if (GPR_UNLIKELY(!status.ok())) { + return status; + } + NotifyFramesWriteDone(); + return absl::OkStatus(); + }); }, - [self]() -> LoopCtl { - if (self->should_reset_ping_clock_) { + [this]() -> LoopCtl { + if (should_reset_ping_clock_) { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MultiplexerLoop ResetPingClock"; - self->ping_manager_->ResetPingClock(/*is_client=*/true); - self->should_reset_ping_clock_ = false; + << "Http2ClientTransport::MultiplexerLoop ResetPingClock"; + ping_manager_->ResetPingClock(/*is_client=*/kIsClient); + should_reset_ping_clock_ = false; } + transport_write_context_.EndWriteCycle(); return Continue(); }); })); } -absl::Status Http2ClientTransport::InitializeStream( - RefCountedPtr stream) { +absl::Status Http2ClientTransport::InitializeStream(Stream& stream) { absl::StatusOr next_stream_id = NextStreamId(); if (!next_stream_id.ok()) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport InitializeStream " + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::InitializeStream " "Failed to get next stream id for stream: " - << stream.get(); + << &stream; return std::move(next_stream_id).status(); } - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport InitializeStream " + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::InitializeStream " "Assigned stream id: " - << next_stream_id.value() - << " to stream: " << stream.get() + << next_stream_id.value() << " to stream: " << &stream << ", allow_true_binary_metadata:" << settings_->peer().allow_true_binary_metadata(); - stream->InitializeStream(next_stream_id.value(), - settings_->peer().allow_true_binary_metadata(), - settings_->acked().allow_true_binary_metadata()); + stream.InitializeStream(next_stream_id.value(), + settings_->peer().allow_true_binary_metadata(), + settings_->acked().allow_true_binary_metadata()); return absl::OkStatus(); } @@ -1326,9 +1273,10 @@ void Http2ClientTransport::AddToStreamList(RefCountedPtr stream) { GRPC_DCHECK(stream != nullptr) << "stream is null"; GRPC_DCHECK_GT(stream->GetStreamId(), 0u) << "stream id is invalid"; GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport AddToStreamList for stream id: " + << "Http2ClientTransport::AddToStreamList for stream id: " << stream->GetStreamId(); - stream_list_.emplace(stream->GetStreamId(), stream); + const uint32_t stream_id = stream->GetStreamId(); + stream_list_.emplace(stream_id, std::move(stream)); // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. if (GetActiveStreamCountLocked() == 1) { should_wake_periodic_updates = true; @@ -1363,36 +1311,22 @@ void Http2ClientTransport::MaybeSpawnWaitForSettingsTimeout() { if (settings_->ShouldSpawnWaitForSettingsTimeout()) { GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::MaybeSpawnWaitForSettingsTimeout Spawning"; - general_party_->Spawn("WaitForSettingsTimeout", - settings_->WaitForSettingsTimeout(), - WaitForSettingsTimeoutOnDone()); + SpawnWithOnDoneTransportParty("WaitForSettingsTimeout", + settings_->WaitForSettingsTimeout(), + WaitForSettingsTimeoutOnDone()); } } -void Http2ClientTransport::MaybeGetWindowUpdateFrames(SliceBuffer& output_buf) { - std::vector frames; - frames.reserve(window_update_list_.size() + 1); - uint32_t window_size = - flow_control_.DesiredAnnounceSize(/*writing_anyway=*/true); - if (window_size > 0) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport::MaybeGetWindowUpdateFrames Transport Window " - "Update : " - << window_size; - frames.emplace_back(Http2WindowUpdateFrame{/*stream_id=*/0, window_size}); - flow_control_.SentUpdate(window_size); - } - for (const uint32_t stream_id : window_update_list_) { +void Http2ClientTransport::MaybeGetWindowUpdateFrames( + FrameSender& frame_sender) { + frame_sender.ReserveRegularFrames(flow_control_.window_update_list_size() + + 1); + MaybeAddTransportWindowUpdateFrame(flow_control_, frame_sender); + for (const uint32_t stream_id : flow_control_.DrainWindowUpdateList()) { RefCountedPtr stream = LookupStream(stream_id); - MaybeAddStreamWindowUpdateFrame(stream, frames); - } - window_update_list_.clear(); - if (!frames.empty()) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport::MaybeGetWindowUpdateFrames Total Window " - "Update Frames : " - << frames.size(); - Serialize(absl::Span(frames), output_buf); + if (stream != nullptr) { + MaybeAddStreamWindowUpdateFrame(*stream, frame_sender); + } } } @@ -1400,7 +1334,7 @@ void Http2ClientTransport::MaybeGetWindowUpdateFrames(SliceBuffer& output_buf) { // Constructor Destructor Http2ClientTransport::Http2ClientTransport( - PromiseEndpoint endpoint, GRPC_UNUSED const ChannelArgs& channel_args, + PromiseEndpoint endpoint, const ChannelArgs& channel_args, std::shared_ptr event_engine, absl::AnyInvocable)> on_receive_settings) : channelz::DataSource(http2::CreateChannelzSocketNode( @@ -1411,11 +1345,12 @@ Http2ClientTransport::Http2ClientTransport( std::move(on_receive_settings))), next_stream_id_(/*Initial Stream ID*/ 1), should_reset_ping_clock_(false), - is_first_write_(true), - max_write_size_(kMaxWriteSize), + incoming_headers_(IncomingMetadataTracker::GetPeerString(endpoint_)), + transport_write_context_(kIsClient), ping_manager_(std::nullopt), keepalive_manager_(std::nullopt), goaway_manager_(GoawayInterfaceImpl::Make(this)), + security_frame_handler_(MakeRefCounted()), memory_owner_(channel_args.GetObject() ->memory_quota() ->CreateMemoryOwner()), @@ -1424,13 +1359,13 @@ Http2ClientTransport::Http2ClientTransport( channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true), &memory_owner_), ztrace_collector_(std::make_shared()) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport Constructor Begin"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::Http2ClientTransport Begin"; // Initialize the general party and write party. RefCountedPtr party_arena = SimpleArenaAllocator(0)->MakeArena(); party_arena->SetContext(event_engine_.get()); general_party_ = Party::Make(std::move(party_arena)); - InitLocalSettings(settings_->mutable_local(), /*is_client=*/true); + InitLocalSettings(settings_->mutable_local(), /*is_client=*/kIsClient); TransportChannelArgs args; ReadChannelArgs(channel_args, args); @@ -1442,28 +1377,28 @@ Http2ClientTransport::Http2ClientTransport( KeepAliveInterfaceImpl::Make(this), ((args.keepalive_timeout < args.ping_timeout) ? args.keepalive_timeout : Duration::Infinity()), - args.keepalive_time, general_party_.get()); - - if (settings_->local().allow_security_frame()) { - // TODO(tjagtap) : [PH2][P3] : Setup the plumbing to pass the security frame - // to the endpoing via TransportFramingEndpointExtension. - // Also decide if this plumbing is done here, or when the peer sends - // allow_security_frame too. - } + args.keepalive_time); GRPC_DCHECK(ping_manager_.has_value()); GRPC_DCHECK(keepalive_manager_.has_value()); SourceConstructed(); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport Constructor End"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::Http2ClientTransport End"; } void Http2ClientTransport::SpawnTransportLoops() { GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SpawnTransportLoops Begin"; + MaybeSpawnKeepaliveLoop(); SpawnGuardedTransportParty( "FlowControlPeriodicUpdateLoop", UntilTransportClosed(FlowControlPeriodicUpdateLoop())); - SpawnGuardedTransportParty("FlushInitialFrames", TriggerWriteCycle()); + if (!TriggerWriteCycleOrHandleError()) { + return; + } + // For Client, write happens before read. So MultiplexerLoop is spawned first. + // ReadLoop is spawned after the first write. + // For Server, read happens before write. So ReadLoop is spawned first. + // MultiplexerLoop is spawned after the first read. SpawnGuardedTransportParty("MultiplexerLoop", UntilTransportClosed(MultiplexerLoop())); GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SpawnTransportLoops End"; @@ -1473,7 +1408,7 @@ void Http2ClientTransport::ReadChannelArgs(const ChannelArgs& channel_args, TransportChannelArgs& args) { http2::ReadChannelArgs(channel_args, args, settings_->mutable_local(), flow_control_, - /*is_client=*/true); + /*is_client=*/kIsClient); // Assign the channel args to the member variables. keepalive_time_ = args.keepalive_time; @@ -1493,10 +1428,38 @@ void Http2ClientTransport::ReadChannelArgs(const ChannelArgs& channel_args, } } +absl::Status Http2ClientTransport::HandleError( + const std::optional stream_id, Http2Status status, + DebugLocation whence) { + Http2Status::Http2ErrorType error_type = status.GetType(); + GRPC_DCHECK(error_type != Http2Status::Http2ErrorType::kOk); + + if (error_type == Http2Status::Http2ErrorType::kStreamError) { + GRPC_HTTP2_CLIENT_ERROR_DLOG + << "Http2ClientTransport::HandleError Stream Error:" + << status.DebugString(); + GRPC_DCHECK(stream_id.has_value()); + // Passing a cancelled server metadata handle to propagate the error + // to the upper layers. + BeginCloseStream( + LookupStream(stream_id.value()), + Http2ErrorCodeToFrameErrorCode(status.GetStreamErrorCode()), + CancelledServerMetadataFromStatus(status.GetAbslStreamError()), whence); + return absl::OkStatus(); + } else if (error_type == Http2Status::Http2ErrorType::kConnectionError) { + GRPC_HTTP2_CLIENT_ERROR_DLOG + << "Http2ClientTransport::HandleError Connection Error:" + << status.DebugString(); + absl::Status absl_status = status.GetAbslConnectionError(); + MaybeSpawnCloseTransport(std::move(status), whence); + return absl_status; + } + GPR_UNREACHABLE_CODE(return absl::InternalError("Invalid error type")); +} + // This function MUST be idempotent. This function MUST be called from the // transport party. -void Http2ClientTransport::CloseStream(RefCountedPtr stream, - CloseStreamArgs args, +void Http2ClientTransport::CloseStream(Stream& stream, CloseStreamArgs args, DebugLocation whence) { std::optional close_transport_error; @@ -1504,22 +1467,21 @@ void Http2ClientTransport::CloseStream(RefCountedPtr stream, // TODO(akshitpatel) : [PH2][P3] : Measure the impact of holding mutex // throughout this function. MutexLock lock(&transport_mutex_); - GRPC_DCHECK(stream != nullptr) << "stream is null"; GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CloseStream for stream id: " - << stream->GetStreamId() << " close_reads=" << args.close_reads + << stream.GetStreamId() << " close_reads=" << args.close_reads << " close_writes=" << args.close_writes << " incoming_headers_=" << incoming_headers_.DebugString() << " location=" << whence.file() << ":" << whence.line(); if (args.close_writes) { - stream->SetWriteClosed(); + stream.SetWriteClosed(); } if (args.close_reads) { GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CloseStream for stream id: " - << stream->GetStreamId() << " closing stream for reads."; + << stream.GetStreamId() << " closing stream for reads."; // If the stream is closed while reading HEADER/CONTINUATION frames, we // should still parse the enqueued buffer to maintain HPACK state between // peers. @@ -1529,25 +1491,24 @@ void Http2ClientTransport::CloseStream(RefCountedPtr stream, HeaderAssembler::ParseHeaderArgs{ /*is_initial_metadata=*/!incoming_headers_.HeaderHasEndStream(), /*is_end_headers=*/false, - /*is_client=*/true, + /*is_client=*/kIsClient, /*max_header_list_size_soft_limit=*/ incoming_headers_.soft_limit(), /*max_header_list_size_hard_limit=*/ settings_->acked().max_header_list_size(), /*stream_id=*/incoming_headers_.GetStreamId(), }, - stream, /*original_status=*/Http2Status::Ok()); + &stream, /*original_status=*/Http2Status::Ok()); if (result.GetType() == Http2Status::Http2ErrorType::kConnectionError) { GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CloseStream for stream id: " - << stream->GetStreamId() - << " failed to partially process header: " + << stream.GetStreamId() << " failed to partially process header: " << result.DebugString(); close_transport_error.emplace(std::move(result)); } } - stream_list_.erase(stream->GetStreamId()); + stream_list_.erase(stream.GetStreamId()); if (!close_transport_error.has_value() && CanCloseTransportLocked()) { // TODO(akshitpatel) : [PH2][P3] : Is kInternalError the right error // code to use here? IMO it should be kNoError. @@ -1653,7 +1614,9 @@ void Http2ClientTransport::BeginCloseStream( } else { // Callers taking this path: // 1. Reading Trailing Metadata (MAY send half close from OnDone). - if (stream->IsClosedForWrites()) { + // If a half close frame has already been sent, we should close the stream + // for reads and writes. + if (stream->IsHalfClosedLocal() || stream->IsStreamClosed()) { close_reads = true; close_writes = true; GRPC_HTTP2_CLIENT_DLOG @@ -1664,7 +1627,7 @@ void Http2ClientTransport::BeginCloseStream( } if (close_reads || close_writes) { - CloseStream(stream, CloseStreamArgs{close_reads, close_writes}, whence); + CloseStream(*stream, CloseStreamArgs{close_reads, close_writes}, whence); } // If the call was cancelled, the stream MUST be closed for reads. @@ -1691,7 +1654,6 @@ void Http2ClientTransport::CloseTransport() { transport_closed_latch_.Set(); settings_->HandleTransportShutdown(event_engine_.get()); - MutexLock lock(&transport_mutex_); // This is the only place where the general_party_ is reset. general_party_.reset(); } @@ -1727,16 +1689,18 @@ void Http2ClientTransport::MaybeSpawnCloseTransport(Http2Status http2_status, "CloseTransport", [self = RefAsSubclass(), stream_list = std::move(stream_list), http2_status = std::move(http2_status)]() mutable { + self->security_frame_handler_->OnTransportClosed(); GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport::CloseTransport Cleaning up call stacks"; + << "Http2ClientTransport::MaybeSpawnCloseTransport " + "Cleaning up call stacks"; // Clean up the call stacks for all active streams. for (const auto& pair : stream_list) { // There is no merit in transitioning the stream to // closed state here as the subsequent lookups would // fail. Also, as this is running on the transport // party, there would not be concurrent access to the stream. - auto& stream = pair.second; - self->BeginCloseStream(stream, + RefCountedPtr stream = pair.second; + self->BeginCloseStream(std::move(stream), Http2ErrorCodeToFrameErrorCode( http2_status.GetConnectionErrorCode()), CancelledServerMetadataFromStatus( @@ -1784,11 +1748,11 @@ bool Http2ClientTransport::CanCloseTransportLocked() const { } Http2ClientTransport::~Http2ClientTransport() { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport Destructor Begin"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::~Http2ClientTransport Begin"; GRPC_DCHECK(stream_list_.empty()); GRPC_DCHECK(general_party_ == nullptr); memory_owner_.Reset(); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport Destructor End"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::~Http2ClientTransport End"; } void Http2ClientTransport::SpawnAddChannelzData(RefCountedPtr party, @@ -1797,7 +1761,7 @@ void Http2ClientTransport::SpawnAddChannelzData(RefCountedPtr party, std::move(party), "AddData", [self = RefAsSubclass(), sink = std::move(sink)]() mutable { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::AddData Promise"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SpawnAddChannelzData"; sink.AddData( "Http2ClientTransport", channelz::PropertyList() @@ -1809,7 +1773,8 @@ void Http2ClientTransport::SpawnAddChannelzData(RefCountedPtr party, self->flow_control_.stats().ChannelzProperties())); self->general_party_->ExportToChannelz("Http2ClientTransport Party", sink); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::AddData End"; + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::SpawnAddChannelzData End"; return Empty{}; }); } @@ -1819,48 +1784,103 @@ void Http2ClientTransport::AddData(channelz::DataSink sink) { event_engine_->Run([self = RefAsSubclass(), sink = std::move(sink)]() mutable { - bool is_party_null = false; + RefCountedPtr party = nullptr; { - // Apart from CloseTransport, this is the only place where a lock is taken - // to access general_party_. All other access to general_party_ happens - // on the general party itself and hence do not race with CloseTransport. - // TODO(akshitpatel) : [PH2][P4] : Check if a new mutex is needed to - // protect general_party_. Curently transport_mutex_ can is used in - // these places: - // 1. In promises running on the transport party - // 2. In AddData promise - // 3. In Orphan function. - // 4. Stream creation (this will be removed soon). - // Given that #1 is already serialized (guaranteed by party), #2 is on - // demand and #3 happens once for the lifetime of the transport while - // closing the transport, the contention should be minimal. MutexLock lock(&self->transport_mutex_); - // TODO(akshitpatel) : [PH2][P2] : There is still a potential for a race - // here where the general_party_ is reset between the lock being - // released and the spawn. We cannot just do a spawn inside the mutex as - // that may result in deadlock. - // Potential fix to hold a ref to the party inside the mutex and do a - // spawn outside the mutex. The only side effect is that this introduces - // an additional ref to the party other the transport's copy. - if (GPR_UNLIKELY(self->general_party_ == nullptr)) { - is_party_null = true; + if (GPR_LIKELY(!self->is_transport_closed_)) { + GRPC_DCHECK(self->general_party_ != nullptr); + party = self->general_party_; + } else { GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport::AddData general_party_ is " - "null. Transport is closed."; + << "Http2ClientTransport::AddData Transport is closed."; } } ExecCtx exec_ctx; - if (!is_party_null) { - self->SpawnAddChannelzData(self->general_party_, std::move(sink)); + if (party != nullptr) { + self->SpawnAddChannelzData(std::move(party), std::move(sink)); } self.reset(); // Cleanup with exec_ctx in scope }); } +RefCountedPtr Http2ClientTransport::GetSocketNode() + const { + const channelz::BaseNode* node = channelz::DataSource::channelz_node(); + if (node == nullptr) { + return nullptr; + } + return const_cast(node) + ->RefAsSubclass(); +} + /////////////////////////////////////////////////////////////////////////////// // Stream Related Operations +absl::StatusOr Http2ClientTransport::NextStreamId() { + if (next_stream_id_ > GetMaxAllowedStreamId()) { + // TODO(tjagtap) : [PH2][P3] : Handle case if transport runs out of stream + // ids + // RFC9113 : Stream identifiers cannot be reused. Long-lived connections + // can result in an endpoint exhausting the available range of stream + // identifiers. A client that is unable to establish a new stream + // identifier can establish a new connection for new streams. A server + // that is unable to establish a new stream identifier can send a GOAWAY + // frame so that the client is forced to open a new connection for new + // streams. + return absl::ResourceExhaustedError("No more stream ids available"); + } + // TODO(akshitpatel) : [PH2][P3] : There is a channel arg to delay + // starting new streams instead of failing them. This needs to be + // implemented. + { + // TODO(tjagtap) : [PH2][P1] : For a server we will have to do + // this for incoming streams only. If a server receives more + // streams from a client than is allowed by the clients settings, + // whether or not we should fail is debatable. + MutexLock lock(&transport_mutex_); + if (GetActiveStreamCountLocked() >= + settings_->peer().max_concurrent_streams()) { + return absl::ResourceExhaustedError("Reached max concurrent streams"); + } + } + + // RFC9113 : Streams initiated by a client MUST use odd-numbered stream + // identifiers. + uint32_t new_stream_id = std::exchange(next_stream_id_, next_stream_id_ + 2); + if (GPR_UNLIKELY(next_stream_id_ > GetMaxAllowedStreamId())) { + ReportDisconnection( + absl::ResourceExhaustedError("Transport Stream IDs exhausted"), + {}, // TODO(tjagtap) : [PH2][P2] : Report better disconnect info. + "no_more_stream_ids"); + } + return new_stream_id; +} + +absl::Status Http2ClientTransport::MaybeAddStreamToWritableStreamList( + RefCountedPtr stream, + const StreamDataQueue::StreamWritabilityUpdate + result) { + if (result.became_writable) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::MaybeAddStreamToWritableStreamList Stream " + "id: " + << stream->GetStreamId() << " became writable"; + // TODO(akshitpatel) [Perf]: Might be worth exploring if this funciton + // should take a raw stream ptr and take a ref here. + absl::Status status = + writable_stream_list_.Enqueue(std::move(stream), result.priority); + if (!status.ok()) { + return HandleError( + std::nullopt, + Http2Status::Http2ConnectionError( + Http2ErrorCode::kRefusedStream, + "Failed to enqueue stream to writable stream list")); + } + } + return absl::OkStatus(); +} + RefCountedPtr Http2ClientTransport::LookupStream(uint32_t stream_id) { MutexLock lock(&transport_mutex_); auto it = stream_list_.find(stream_id); @@ -1875,64 +1895,69 @@ RefCountedPtr Http2ClientTransport::LookupStream(uint32_t stream_id) { bool Http2ClientTransport::SetOnDone(CallHandler call_handler, RefCountedPtr stream) { - return call_handler.OnDone( - [self = RefAsSubclass(), stream, - stream_id = stream->GetStreamId()](bool cancelled) { - GRPC_HTTP2_CLIENT_DLOG << "PH2: Client call " << self.get() - << " id=" << stream_id - << " done: cancelled=" << cancelled; - absl::StatusOr enqueue_result; - GRPC_HTTP2_CLIENT_DLOG - << "PH2: Client call " << self.get() << " id=" << stream_id - << " done: stream=" << stream.get() << " cancelled=" << cancelled; - if (cancelled) { - // In most of the cases, EnqueueResetStream would be a no-op as - // BeginCloseStream would have already enqueued the reset stream. - // Currently only Aborts from application will actually enqueue - // the reset stream here. - enqueue_result = stream->EnqueueResetStream( - static_cast(Http2ErrorCode::kCancel)); - GRPC_HTTP2_CLIENT_DLOG - << "Enqueued ResetStream with error code=" - << static_cast(Http2ErrorCode::kCancel) - << " status=" << enqueue_result.status(); - } else { - enqueue_result = stream->EnqueueHalfClosed(); - GRPC_HTTP2_CLIENT_DLOG << "Enqueued HalfClosed with result=" - << enqueue_result.status(); - } + return call_handler.OnDone([self = RefAsSubclass(), + stream = + std::move(stream)](bool cancelled) mutable { + GRPC_HTTP2_CLIENT_DLOG << "PH2: Client call " << self.get() + << " id=" << stream->GetStreamId() + << " done: cancelled=" << cancelled; + absl::StatusOr enqueue_result; + GRPC_HTTP2_CLIENT_DLOG << "PH2: Client call " << self.get() + << " id=" << stream->GetStreamId() + << " done: stream=" << stream.get() + << " cancelled=" << cancelled; + + // If the stream is already closed for writes, then we don't need to + // enqueue the reset stream or the half closed frame. + if (stream->IsClosedForWrites()) { + GRPC_HTTP2_CLIENT_DLOG << "PH2: Client call " << self.get() + << " id=" << stream->GetStreamId() + << " done: stream already closed for writes"; + return; + } - if (enqueue_result.ok()) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport::SetOnDone " - "MaybeAddStreamToWritableStreamList for stream= " - << stream->GetStreamId() << " enqueue_result={became_writable=" - << enqueue_result.value().became_writable << ", priority=" - << static_cast(enqueue_result.value().priority) << "}"; - GRPC_UNUSED absl::Status status = - self->MaybeAddStreamToWritableStreamList(stream, - enqueue_result.value()); - } - }); + if (cancelled) { + // In most of the cases, EnqueueResetStream would be a no-op as + // BeginCloseStream would have already enqueued the reset stream. + // Currently only Aborts from application will actually enqueue + // the reset stream here. + enqueue_result = stream->EnqueueResetStream( + static_cast(Http2ErrorCode::kCancel)); + GRPC_HTTP2_CLIENT_DLOG << "Enqueued ResetStream with error code=" + << static_cast(Http2ErrorCode::kCancel) + << " status=" << enqueue_result.status(); + } else { + enqueue_result = stream->EnqueueHalfClosed(); + GRPC_HTTP2_CLIENT_DLOG << "Enqueued HalfClosed with result=" + << enqueue_result.status(); + } + + if (GPR_LIKELY(enqueue_result.ok())) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::SetOnDone " + "MaybeAddStreamToWritableStreamList for stream= " + << stream->GetStreamId() << " enqueue_result={became_writable=" + << enqueue_result.value().became_writable << ", priority=" + << static_cast(enqueue_result.value().priority) << "}"; + GRPC_UNUSED absl::Status status = + self->MaybeAddStreamToWritableStreamList(std::move(stream), + enqueue_result.value()); + } + }); } std::optional> Http2ClientTransport::MakeStream( CallHandler call_handler) { // https://datatracker.ietf.org/doc/html/rfc9113#name-stream-identifiers RefCountedPtr stream; - { - // TODO(akshitpatel) : [PH2][P3] : Remove this mutex once settings is in - // place. - MutexLock lock(&transport_mutex_); - stream = MakeRefCounted(call_handler, flow_control_); - } - const bool on_done_added = SetOnDone(call_handler, stream); + stream = MakeRefCounted(call_handler, flow_control_); + const bool on_done_added = SetOnDone(std::move(call_handler), stream); if (!on_done_added) return std::nullopt; - return stream; + return std::move(stream); } uint32_t Http2ClientTransport::GetMaxAllowedStreamId() const { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport GetMaxAllowedStreamId " + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::GetMaxAllowedStreamId " << max_allowed_stream_id_; return max_allowed_stream_id_; } @@ -1940,7 +1965,7 @@ uint32_t Http2ClientTransport::GetMaxAllowedStreamId() const { void Http2ClientTransport::SetMaxAllowedStreamId( const uint32_t max_allowed_stream_id) { const uint32_t old_max_allowed_stream_id = GetMaxAllowedStreamId(); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport SetMaxAllowedStreamId " + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SetMaxAllowedStreamId " << " max_allowed_stream_id: " << max_allowed_stream_id << " old_allowed_max_stream_id: " << old_max_allowed_stream_id; @@ -1962,115 +1987,241 @@ void Http2ClientTransport::SetMaxAllowedStreamId( } /////////////////////////////////////////////////////////////////////////////// -// Call Spine related operations +// Http2ClientTransport - Call Spine related operations -auto Http2ClientTransport::CallOutboundLoop(CallHandler call_handler, - RefCountedPtr stream, - ClientMetadataHandle metadata) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport CallOutboundLoop"; +auto Http2ClientTransport::CallOutboundLoop(RefCountedPtr stream) { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CallOutboundLoop"; GRPC_DCHECK(stream != nullptr); - auto send_message = [self = RefAsSubclass(), - stream](MessageHandle&& message) mutable { - return TrySeq(stream->EnqueueMessage(std::move(message)), - [self, stream](const StreamWritabilityUpdate result) mutable { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport CallOutboundLoop " - "Enqueued Message"; - return self->MaybeAddStreamToWritableStreamList( - std::move(stream), result); - }); - }; - - auto send_initial_metadata = [self = RefAsSubclass(), - stream, - metadata = std::move(metadata)]() mutable { + auto send_message = [this, stream](MessageHandle&& message) mutable { return TrySeq( - [stream, metadata = std::move(metadata)]() mutable { - return stream->EnqueueInitialMetadata(std::move(metadata)); - }, - [self, stream](const StreamWritabilityUpdate result) mutable { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport CallOutboundLoop " - "Enqueued Initial Metadata"; - return self->MaybeAddStreamToWritableStreamList(std::move(stream), - result); + stream->EnqueueMessage(std::move(message)), + [this, stream](const StreamWritabilityUpdate result) mutable { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CallOutboundLoop " + "Enqueued Message"; + return MaybeAddStreamToWritableStreamList(std::move(stream), result); }); }; - auto send_half_closed = [self = RefAsSubclass(), - stream]() mutable { - return TrySeq([stream]() { return stream->EnqueueHalfClosed(); }, - [self, stream](const StreamWritabilityUpdate result) mutable { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport CallOutboundLoop " - "Enqueued Half Closed"; - return self->MaybeAddStreamToWritableStreamList( - std::move(stream), result); - }); + auto send_initial_metadata = + [this, stream](ClientMetadataHandle&& metadata) mutable { + absl::StatusOr enqueue_result = + stream->EnqueueInitialMetadata( + std::forward(metadata)); + if (GPR_UNLIKELY(!enqueue_result.ok())) { + return enqueue_result.status(); + } + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport CallOutboundLoop " + "Enqueued Initial Metadata"; + return MaybeAddStreamToWritableStreamList(std::move(stream), + enqueue_result.value()); + }; + + auto send_half_closed = [this, stream]() mutable { + absl::StatusOr enqueue_result = + stream->EnqueueHalfClosed(); + if (GPR_UNLIKELY(!enqueue_result.ok())) { + return enqueue_result.status(); + } + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport CallOutboundLoop " + "Enqueued Half Closed"; + return MaybeAddStreamToWritableStreamList(std::move(stream), + enqueue_result.value()); }; + return GRPC_LATENT_SEE_PROMISE( "Ph2CallOutboundLoop", TrySeq( - send_initial_metadata(), - [call_handler, send_message]() { - // The lock will be released once the promise is constructed from - // this factory. ForEach will be polled after the lock is - // released. - return ForEach(MessagesFrom(call_handler), send_message); - }, - [self = RefAsSubclass(), - send_half_closed = std::move(send_half_closed)]() mutable { - return send_half_closed(); + Map(stream->GetCallHandler().PullClientInitialMetadata(), + [send_initial_metadata = std::move(send_initial_metadata)]( + ValueOrFailure metadata) mutable { + if (GPR_UNLIKELY(!metadata.ok())) { + return absl::InternalError( + "Failed to pull client initial metadata"); + } + return std::move(send_initial_metadata)( + TakeValue(std::move(metadata))); + }), + ForEach(MessagesFrom(stream->GetCallHandler()), + std::move(send_message)), + [send_half_closed = std::move(send_half_closed)]() mutable { + return std::move(send_half_closed)(); }, - [call_handler]() mutable { - return Map(call_handler.WasCancelled(), [](bool cancelled) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport PH2CallOutboundLoop End with " - "cancelled=" - << cancelled; - return (cancelled) ? absl::CancelledError() : absl::OkStatus(); - }); + [stream]() mutable { + return Map( + stream->GetCallHandler().WasCancelled(), [](bool cancelled) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::CallOutboundLoop End with " + "cancelled=" + << cancelled; + return (cancelled) ? absl::CancelledError() + : absl::OkStatus(); + }); })); } void Http2ClientTransport::StartCall(CallHandler call_handler) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport StartCall Begin"; + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::StartCall Begin"; + call_handler.SpawnGuarded( "OutboundLoop", - TrySeq(call_handler.PullClientInitialMetadata(), - [self = RefAsSubclass(), - call_handler](ClientMetadataHandle metadata) mutable { - // For a gRPC Client, we only need to check the - // MAX_CONCURRENT_STREAMS setting compliance at the time of - // sending (that is write path). A gRPC Client will never - // receive a stream initiated by a server, so we dont have to - // check MAX_CONCURRENT_STREAMS compliance on the Read-Path. - // - // TODO(tjagtap) : [PH2][P1] Check for MAX_CONCURRENT_STREAMS - // sent by peer before making a stream. Decide behaviour if we - // are crossing this threshold. - // - // TODO(tjagtap) : [PH2][P1] : For a server we will have to do - // this for incoming streams only. If a server receives more - // streams from a client than is allowed by the clients settings, - // whether or not we should fail is debatable. - std::optional> stream = - self->MakeStream(call_handler); - return If( - stream.has_value(), - [self, call_handler, stream, - initial_metadata = std::move(metadata)]() mutable { - return Map( - self->CallOutboundLoop(call_handler, stream.value(), - std::move(initial_metadata)), - [](absl::Status status) { return status; }); - }, - []() { - return absl::InternalError("Failed to make stream"); - }); - })); - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport StartCall End"; + [self = RefAsSubclass(), call_handler]() mutable { + std::optional> stream = + self->MakeStream(std::move(call_handler)); + + return If( + stream.has_value(), + [self = std::move(self), stream]() mutable { + return Map(self->CallOutboundLoop(std::move(stream.value())), + [self](absl::Status status) { return status; }); + }, + []() { return absl::InternalError("Failed to make stream"); }); + }); + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::StartCall End"; +} + +/////////////////////////////////////////////////////////////////////////////// +// Http2ClientTransport - Test Only Functions + +int64_t Http2ClientTransport::TestOnlyTransportFlowControlWindow() { + return flow_control_.remote_window(); +} + +int64_t Http2ClientTransport::TestOnlyGetStreamFlowControlWindow( + const uint32_t stream_id) { + RefCountedPtr stream = LookupStream(stream_id); + if (stream == nullptr) { + return -1; + } + return stream->GetStreamFlowControl().remote_window_delta(); +} + +//////////////////////////////////////////////////////////////////////////////// +// Http2ClientTransport - Ping Helpers + +void Http2ClientTransport::MaybeSpawnPingTimeout( + std::optional opaque_data) { + if (opaque_data.has_value()) { + SpawnGuardedTransportParty( + "PingTimeout", [self = RefAsSubclass(), + opaque_data = *opaque_data]() { + return self->ping_manager_->TimeoutPromise(opaque_data); + }); + } +} +void Http2ClientTransport::MaybeSpawnDelayedPing( + std::optional delayed_ping_wait) { + if (delayed_ping_wait.has_value()) { + SpawnGuardedTransportParty( + "DelayedPing", [self = RefAsSubclass(), + wait = *delayed_ping_wait]() { + GRPC_HTTP2_PING_LOG << "Scheduling delayed ping after wait=" << wait; + return self->ping_manager_->DelayedPingPromise(wait); + }); + } +} + +void Http2ClientTransport::MaybeSpawnKeepaliveLoop() { + if (keepalive_manager_->IsKeepAliveLoopNeeded()) { + SpawnGuardedTransportParty( + "KeepaliveLoop", [self = RefAsSubclass()]() { + return self->keepalive_manager_->KeepaliveLoop(); + }); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// Class PingSystemInterfaceImpl + +std::unique_ptr +Http2ClientTransport::PingSystemInterfaceImpl::Make( + Http2ClientTransport* transport) { + return std::make_unique( + PingSystemInterfaceImpl(transport)); } +absl::Status Http2ClientTransport::PingSystemInterfaceImpl::TriggerWrite() { + return transport_->TriggerWriteCycle(); +} + +Promise +Http2ClientTransport::PingSystemInterfaceImpl::PingTimeout() { + GRPC_HTTP2_CLIENT_DLOG << "PingSystemInterfaceImpl::PingTimeout at time: " + << Timestamp::Now(); + + // TODO(akshitpatel) : [PH2][P2] : The error code here has been chosen + // based on CHTTP2's usage of GRPC_STATUS_UNAVAILABLE (which corresponds + // to kRefusedStream). However looking at RFC9113, definition of + // kRefusedStream doesn't seem to fit this case. We should revisit this + // and update the error code. + return Immediate(transport_->HandleError( + std::nullopt, + Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream, + GRPC_CHTTP2_PING_TIMEOUT_STR))); +} + +/////////////////////////////////////////////////////////////////////////////// +// Class KeepAliveInterfaceImpl + +std::unique_ptr +Http2ClientTransport::KeepAliveInterfaceImpl::Make( + Http2ClientTransport* transport) { + return std::make_unique( + KeepAliveInterfaceImpl(transport)); +} + +Promise +Http2ClientTransport::KeepAliveInterfaceImpl::SendPingAndWaitForAck() { + return TrySeq( + [transport = transport_] { return transport->TriggerWriteCycle(); }, + [transport = transport_] { return transport->WaitForPingAck(); }); +} + +Promise +Http2ClientTransport::KeepAliveInterfaceImpl::OnKeepAliveTimeout() { + GRPC_HTTP2_CLIENT_DLOG + << "KeepAliveInterfaceImpl::OnKeepAliveTimeout triggered"; + // TODO(akshitpatel) : [PH2][P2] : The error code here has been chosen + // based on CHTTP2's usage of GRPC_STATUS_UNAVAILABLE (which corresponds + // to kRefusedStream). However looking at RFC9113, definition of + // kRefusedStream doesn't seem to fit this case. We should revisit this + // and update the error code. + return Immediate(transport_->HandleError( + std::nullopt, + Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream, + GRPC_CHTTP2_KEEPALIVE_TIMEOUT_STR))); +} + +bool Http2ClientTransport::KeepAliveInterfaceImpl::NeedToSendKeepAlivePing() { + bool need_to_send_ping = false; + { + MutexLock lock(&transport_->transport_mutex_); + need_to_send_ping = (transport_->keepalive_permit_without_calls_ || + transport_->GetActiveStreamCountLocked() > 0); + } + return need_to_send_ping; +} + +/////////////////////////////////////////////////////////////////////////////// +// Class GoawayInterfaceImpl + +std::unique_ptr +Http2ClientTransport::GoawayInterfaceImpl::Make( + Http2ClientTransport* transport) { + return std::make_unique(GoawayInterfaceImpl(transport)); +} + +uint32_t Http2ClientTransport::GoawayInterfaceImpl::GetLastAcceptedStreamId() { + LOG(DFATAL) << "GetLastAcceptedStreamId is not implemented for client " + "transport."; + return 0; +} + +// TODO(akshitpatel) : [PH2][P2] : Eventually there should be a separate ref +// counted struct/class passed to all the transport promises/members. This +// will help removing back references from the transport members to +// transport and greatly simpilfy the cleanup path. Need to do this for +// PingSystemInterfaceImpl, KeepAliveInterfaceImpl and GoawayInterfaceImpl. + } // namespace http2 } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.h b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.h index b65ec1eec80..734c65f271d 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_client_transport.h @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include @@ -46,73 +46,58 @@ #include "src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h" #include "src/core/ext/transport/chttp2/transport/keepalive.h" #include "src/core/ext/transport/chttp2/transport/ping_promise.h" +#include "src/core/ext/transport/chttp2/transport/security_frame.h" #include "src/core/ext/transport/chttp2/transport/stream.h" #include "src/core/ext/transport/chttp2/transport/stream_data_queue.h" #include "src/core/ext/transport/chttp2/transport/writable_streams.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/iomgr/closure.h" #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/lib/promise/activity.h" #include "src/core/lib/promise/context.h" -#include "src/core/lib/promise/if.h" #include "src/core/lib/promise/latch.h" #include "src/core/lib/promise/map.h" #include "src/core/lib/promise/party.h" #include "src/core/lib/promise/poll.h" #include "src/core/lib/promise/promise.h" #include "src/core/lib/promise/race.h" -#include "src/core/lib/promise/try_seq.h" #include "src/core/lib/resource_quota/memory_quota.h" -#include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_buffer.h" #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/promise_endpoint.h" #include "src/core/lib/transport/transport.h" -#include "src/core/util/check_class_size.h" #include "src/core/util/debug_location.h" -#include "src/core/util/grpc_check.h" #include "src/core/util/orphanable.h" #include "src/core/util/ref_counted_ptr.h" #include "src/core/util/sync.h" #include "src/core/util/time.h" #include "absl/base/thread_annotations.h" #include "absl/container/flat_hash_map.h" -#include "absl/container/flat_hash_set.h" #include "absl/functional/any_invocable.h" #include "absl/log/log.h" +#include "absl/meta/type_traits.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/string_view.h" -#include "absl/types/span.h" namespace grpc_core { namespace http2 { -// Http2 Client Transport Spawns Overview - -// | Promise Spawn | Max Duration | Promise Resolution | Max Spawns | -// | | for Spawn | | | -// |---------------------|--------------|-----------------------|------------| -// | Endpoint Read Loop | Infinite | On transport close | One | -// | Endpoint Write Loop | Infinite | On transport close | One | -// | Stream Multiplexer | Infinite | On transport close | One | -// | Close Transport | CloseTimeout | On transport close | One | - -// Max Party Slots (Always): 3 -// Max Promise Slots (Worst Case): 4 - // Experimental : The code will be written iteratively. // Do not use or edit any of these functions unless you are // familiar with the PH2 project (Moving chttp2 to promises.) -// TODO(tjagtap) : [PH2][P3] : Update the experimental status of the code before -// http2 rollout begins. +// TODO(tjagtap) : [PH2][P5] : Update the experimental status of the code when +// http2 rollout is completed. class Http2ClientTransport final : public ClientTransport, public channelz::DataSource { - // TODO(akshitpatel) [PH2][P1] : Functions that need a mutex to be held should - // have "locked" suffix in function name. + // TODO(tjagtap) : [PH2][P3] Move the definitions to the header for better + // inlining. For now definitions are in the cc file to + // reduce cognitive load in the header. public: + ////////////////////////////////////////////////////////////////////////////// + // Constructor, Destructor etc. Http2ClientTransport( - PromiseEndpoint endpoint, GRPC_UNUSED const ChannelArgs& channel_args, + PromiseEndpoint endpoint, const ChannelArgs& channel_args, std::shared_ptr event_engine, absl::AnyInvocable)> on_receive_settings); @@ -128,97 +113,158 @@ class Http2ClientTransport final : public ClientTransport, ServerTransport* server_transport() override { return nullptr; } absl::string_view GetTransportName() const override { return "http2"; } - // TODO(tjagtap) : [PH2][EXT] : These can be removed when event engine rollout - // is complete. + ////////////////////////////////////////////////////////////////////////////// + // Deprecated Stuff + + // TODO(tjagtap) : [PH2][EXT] : Remove after event engine rollout void SetPollset(grpc_stream*, grpc_pollset*) override {} void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {} + ////////////////////////////////////////////////////////////////////////////// + // Transport Functions + // Called at the start of a stream. void StartCall(CallHandler call_handler) override; void PerformOp(grpc_transport_op*) override; - void StartConnectivityWatch( - grpc_connectivity_state state, - OrphanablePtr watcher); - void StopConnectivityWatch(ConnectivityStateWatcherInterface* watcher); - - void StartWatch(RefCountedPtr watcher) override; - void StopWatch(RefCountedPtr watcher) override; void Orphan() override; - RefCountedPtr GetSocketNode() const override { - return const_cast( - channelz::DataSource::channelz_node()) - ->RefAsSubclass(); + bool AreTransportFlowControlTokensAvailable() { + return flow_control_.remote_window() > 0; } + void SpawnTransportLoops(); + + ////////////////////////////////////////////////////////////////////////////// + // Channelz and ZTrace + std::unique_ptr GetZTrace(absl::string_view name) override { if (name == "transport_frames") return ztrace_collector_->MakeZTrace(); return nullptr; } + RefCountedPtr GetSocketNode() const override; + void AddData(channelz::DataSink sink) override; void SpawnAddChannelzData(RefCountedPtr party, channelz::DataSink sink); - auto TestOnlyTriggerWriteCycle() { - return Immediate(writable_stream_list_.ForceReadyForWrite()); + ////////////////////////////////////////////////////////////////////////////// + // Watchers + + void StartWatch(RefCountedPtr watcher) override; + void StopWatch(RefCountedPtr watcher) override; + + ////////////////////////////////////////////////////////////////////////////// + // Test Only Functions + + template + void TestOnlySpawnPromise(absl::string_view name, Factory&& factory) { + SpawnInfallible(general_party_, name, std::forward(factory)); } + absl::Status TestOnlyTriggerWriteCycle() { return TriggerWriteCycle(); } + auto TestOnlySendPing(absl::AnyInvocable on_initiate, bool important = false) { return ping_manager_->RequestPing(std::move(on_initiate), important); } - template - void TestOnlySpawnPromise(absl::string_view name, Factory&& factory) { - general_party_->Spawn(name, std::forward(factory), [](Empty) {}); + int64_t TestOnlyTransportFlowControlWindow(); + int64_t TestOnlyGetStreamFlowControlWindow(const uint32_t stream_id); + + private: + ////////////////////////////////////////////////////////////////////////////// + // Endpoint Helpers + + // Callers MUST ensure that the transport is not destroyed till the promise is + // resolved or cancelled. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto EndpointReadSlice( + const size_t num_bytes) { + return Map(endpoint_.ReadSlice(num_bytes), + [this, num_bytes](absl::StatusOr status) { + OnEndpointRead(status.ok(), num_bytes); + return status; + }); } - int64_t TestOnlyTransportFlowControlWindow() { - return flow_control_.remote_window(); + // Callers MUST ensure that the transport is not destroyed till the promise is + // resolved or cancelled. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto EndpointRead( + const size_t num_bytes) { + return Map(endpoint_.Read(num_bytes), + [this, num_bytes](absl::StatusOr status) { + OnEndpointRead(status.ok(), num_bytes); + return status; + }); } - int64_t TestOnlyGetStreamFlowControlWindow(const uint32_t stream_id) { - RefCountedPtr stream = LookupStream(stream_id); - if (stream == nullptr) { - return -1; + void OnEndpointRead(const bool is_ok, const size_t num_bytes) { + if (is_ok) { + keepalive_manager_->GotData(); + ztrace_collector_->Append(PromiseEndpointReadTrace{num_bytes}); } - return stream->flow_control.remote_window_delta(); } - bool AreTransportFlowControlTokensAvailable() { - return flow_control_.remote_window() > 0; - } - void SpawnTransportLoops(); + auto EndpointWrite(SliceBuffer&& output_buf); + + // Serialize and write the frames in the write cycle to the endpoint. + auto SerializeAndWrite(); + + ////////////////////////////////////////////////////////////////////////////// + // Watchers + + void StartConnectivityWatch( + grpc_connectivity_state state, + OrphanablePtr watcher); + + void StopConnectivityWatch(ConnectivityStateWatcherInterface* watcher); + + void NotifyStateWatcherOnDisconnectLocked( + absl::Status status, StateWatcher::DisconnectInfo disconnect_info) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(&transport_mutex_); + + ////////////////////////////////////////////////////////////////////////////// + // Transport Read Path + + // Synchronous functions for processing each type of frame + Http2Status ProcessIncomingFrame(Http2DataFrame&& frame); + Http2Status ProcessIncomingFrame(Http2HeaderFrame&& frame); + Http2Status ProcessIncomingFrame(Http2RstStreamFrame&& frame); + Http2Status ProcessIncomingFrame(Http2SettingsFrame&& frame); + Http2Status ProcessIncomingFrame(Http2PingFrame&& frame); + Http2Status ProcessIncomingFrame(Http2GoawayFrame&& frame); + Http2Status ProcessIncomingFrame(Http2WindowUpdateFrame&& frame); + Http2Status ProcessIncomingFrame(Http2ContinuationFrame&& frame); + Http2Status ProcessIncomingFrame(Http2SecurityFrame&& frame); + Http2Status ProcessIncomingFrame(Http2UnknownFrame&& frame); + Http2Status ProcessIncomingFrame(Http2EmptyFrame&& frame); - private: - // Promise factory for processing each type of frame - Http2Status ProcessHttp2DataFrame(Http2DataFrame frame); - Http2Status ProcessHttp2HeaderFrame(Http2HeaderFrame frame); - Http2Status ProcessHttp2RstStreamFrame(Http2RstStreamFrame frame); - Http2Status ProcessHttp2SettingsFrame(Http2SettingsFrame frame); - auto ProcessHttp2PingFrame(Http2PingFrame frame); - Http2Status ProcessHttp2GoawayFrame(Http2GoawayFrame frame); - Http2Status ProcessHttp2WindowUpdateFrame(Http2WindowUpdateFrame frame); - Http2Status ProcessHttp2ContinuationFrame(Http2ContinuationFrame frame); - Http2Status ProcessHttp2SecurityFrame(Http2SecurityFrame frame); Http2Status ProcessMetadata(RefCountedPtr stream); - // Reading from the endpoint. + Http2Status ParseAndDiscardHeaders(SliceBuffer&& buffer, bool is_end_headers, + Stream* stream, + Http2Status&& original_status, + DebugLocation whence = {}); - // Returns a promise to keep reading in a Loop till a fail/close is - // received. - auto ReadLoop(); + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Http2Status + ProcessOneIncomingFrame(Http2Frame&& frame) { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessOneIncomingFrame"; + return std::visit( + [this](auto&& frame) { + return ProcessIncomingFrame(std::forward(frame)); + }, + std::forward(frame)); + } - // Returns a promise that will read and process one HTTP2 frame. auto ReadAndProcessOneFrame(); - // Returns a promise that will process one HTTP2 frame. - auto ProcessOneFrame(Http2Frame frame); + // Returns a promise to keep reading in a Loop till a fail/close is received. + auto ReadLoop(); - // Writing to the endpoint. + ////////////////////////////////////////////////////////////////////////////// + // Transport Write Path // Write time sensitive control frames to the endpoint. Frames sent from here // will be GOAWAY, SETTINGS, PING and PING acks, WINDOW_UPDATE and @@ -227,10 +273,30 @@ class Http2ClientTransport final : public ClientTransport, // module needs to take action after the write (for cases like spawning // timeout promises), they MUST plug the call in the // NotifyControlFramesWriteDone. - auto ProcessAndWriteControlFrames(); - // Notify the control frames modules that the endpoint write is done. - void NotifyControlFramesWriteDone(); + // Prepares all the HTTP2 control frames that are to be sent out in this write + // cycle. The modules can choose to either trigger an endpoint write for the + // frames or defer the write with the stream specific frames. In most cases, + // the frames are deferred and a single write is triggered for all the + // frames. + absl::Status PrepareControlFrames(); + + // If there are any urgent frames this would trigger an additional endpoint + // write. CAUTION: This will add significant overhead if used for non-urgent + // frames. + auto MaybeWriteUrgentFrames(); + + // Notify the modules that an endpoint write is done. This corresponds to the + // generic endpoint write that happens in the MultiplexerLoop. + void NotifyFramesWriteDone(); + + // Notify the modules that an urgent endpoint write is done. If some module + // add frames to this buffer in PrepareControlFrames, they can use this to + // do post processing after the write is done. + void NotifyUrgentFramesWriteDone(); + + absl::Status DequeueStreamFrames(RefCountedPtr stream, + WriteCycle& write_cycle); // Returns a promise to keep draining control frames and data frames from all // the writable streams and write to the endpoint. @@ -238,165 +304,102 @@ class Http2ClientTransport final : public ClientTransport, // Returns a promise to fetch data from the callhandler and pass it further // down towards the endpoint. - auto CallOutboundLoop(CallHandler call_handler, RefCountedPtr stream, - ClientMetadataHandle metadata); + auto CallOutboundLoop(RefCountedPtr stream); - // TODO(akshitpatel) : [PH2][P1] : Make this a synchronous function. // Force triggers a transport write cycle - auto TriggerWriteCycle() { - return Immediate(writable_stream_list_.ForceReadyForWrite()); + absl::Status TriggerWriteCycle(DebugLocation whence = {}) { + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::TriggerWriteCycle invoked from " + << whence.file() << ":" << whence.line(); + return writable_stream_list_.ForceReadyForWrite(); } - auto FlowControlPeriodicUpdateLoop(); - // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. - void AddPeriodicUpdatePromiseWaker() { - periodic_updates_waker_ = GetContext()->MakeNonOwningWaker(); + // Triggers a write cycle. If successful, returns true. + // If failed, calls HandleError and returns false. + bool TriggerWriteCycleOrHandleError(DebugLocation whence = {}) { + absl::Status status = TriggerWriteCycle(whence); + if (GPR_LIKELY(status.ok())) return true; + GRPC_HTTP2_CLIENT_DLOG + << "Http2ClientTransport::TriggerWriteCycleOrHandleError failed with " + "status: " + << status << " at " << whence.file() << ":" << whence.line(); + GRPC_UNUSED absl::Status unused_status = + HandleError(std::nullopt, ToHttpOkOrConnError(status), whence); + return false; } - // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. - void WakeupPeriodicUpdatePromise() { periodic_updates_waker_.Wakeup(); } - // Processes the flow control action and take necessary steps. - void ActOnFlowControlAction(const chttp2::FlowControlAction& action, - RefCountedPtr stream); + absl::Status InitializeStream(Stream& stream); - void NotifyStateWatcherOnDisconnectLocked( - absl::Status status, StateWatcher::DisconnectInfo disconnect_info) - ABSL_EXCLUSIVE_LOCKS_REQUIRED(&transport_mutex_); - - RefCountedPtr general_party_; - std::shared_ptr event_engine_; - - PromiseEndpoint endpoint_; - RefCountedPtr settings_; + ////////////////////////////////////////////////////////////////////////////// + // Spawn Helpers and Promise Helpers - Http2FrameHeader current_frame_header_; - // Returns the number of active streams. A stream is removed from the `active` - // list once both client and server agree to close the stream. The count of - // stream_list_(even though stream list represents streams open for reads) - // works here because of the following cases where the stream is closed: - // 1. Reading a RST stream frame: In this case, the stream is immediately - // closed for reads and writes and removed from the stream_list_ - // (effectively tracking the number of active streams). - // 2. Reading a Trailing Metadata frame: In this case, the stream MAY be - // closed for reads and writes immediately which follows the above case. In - // other cases, the transport either reads RST stream frame from the server - // (and follows case 1) or sends a half close frame and closes the stream - // for reads and writes (in the multiplexer loop). - // 3. Hitting error condition in the transport: In this case, RST stream is - // is enqueued and the stream is closed for reads immediately. This means - // we effectively reduce the number of active streams inline (because we - // remove the stream from the stream_list_). This is fine because the - // priority logic in list of writable streams ensures that the RST stream - // frame is given priority over any new streams being created by the - // client. - // 4. Application abort: In this case, multiplexer loop will write RST stream - // frame to the endpoint and close the stream from reads and writes. This - // then follows the same reasoning as case 1. - inline uint32_t GetActiveStreamCountLocked() const - ABSL_EXCLUSIVE_LOCKS_REQUIRED(transport_mutex_) { - return stream_list_.size(); - } - - // Returns the next stream id. If the next stream id is not available, it - // returns std::nullopt. MUST be called from the transport party. - absl::StatusOr NextStreamId() { - if (next_stream_id_ > GetMaxAllowedStreamId()) { - // TODO(tjagtap) : [PH2][P3] : Handle case if transport runs out of stream - // ids - // RFC9113 : Stream identifiers cannot be reused. Long-lived connections - // can result in an endpoint exhausting the available range of stream - // identifiers. A client that is unable to establish a new stream - // identifier can establish a new connection for new streams. A server - // that is unable to establish a new stream identifier can send a GOAWAY - // frame so that the client is forced to open a new connection for new - // streams. - return absl::ResourceExhaustedError("No more stream ids available"); - } - // TODO(akshitpatel) : [PH2][P3] : There is a channel arg to delay - // starting new streams instead of failing them. This needs to be - // implemented. - { - MutexLock lock(&transport_mutex_); - if (GetActiveStreamCountLocked() >= - settings_->peer().max_concurrent_streams()) { - return absl::ResourceExhaustedError("Reached max concurrent streams"); - } - } - - // RFC9113 : Streams initiated by a client MUST use odd-numbered stream - // identifiers. - uint32_t new_stream_id = - std::exchange(next_stream_id_, next_stream_id_ + 2); - if (GPR_UNLIKELY(next_stream_id_ > GetMaxAllowedStreamId())) { - ReportDisconnection( - absl::ResourceExhaustedError("Transport Stream IDs exhausted"), - {}, // TODO(tjagtap) : [PH2][P2] : Report better disconnect info. - "no_more_stream_ids"); - } - return new_stream_id; - } - - // Returns the next stream id without incrementing it. MUST be called from the - // transport party. - uint32_t PeekNextStreamId() const { return next_stream_id_; } - - // Returns the last stream id sent by the transport. If no streams were sent, - // returns 0. MUST be called from the transport party. - uint32_t GetLastStreamId() const { - const uint32_t next_stream_id = PeekNextStreamId(); - return (next_stream_id > 1) ? (next_stream_id - 2) : 0; + template ()()), + Poll>, + bool> = true> + auto UntilTransportClosed(Promise&& promise) { + return Race(Map(transport_closed_latch_.Wait(), + [self = RefAsSubclass()](Empty) { + GRPC_HTTP2_CLIENT_DLOG << "Transport closed"; + return absl::CancelledError("Transport closed"); + }), + std::forward(promise)); } - absl::Status InitializeStream(RefCountedPtr stream); - - void AddToStreamList(RefCountedPtr stream); - - Mutex transport_mutex_; - - absl::flat_hash_map> stream_list_ - ABSL_GUARDED_BY(transport_mutex_); - - uint32_t next_stream_id_; - HPackCompressor encoder_; - HPackParser parser_; - bool is_transport_closed_ ABSL_GUARDED_BY(transport_mutex_) = false; - Latch transport_closed_latch_; - - template - auto UntilTransportClosed(Promise promise) { + template ()()), + Poll>, + bool> = true> + auto UntilTransportClosed(Promise&& promise) { return Race(Map(transport_closed_latch_.Wait(), - [](Empty) { + [self = RefAsSubclass()](Empty) { GRPC_HTTP2_CLIENT_DLOG << "Transport closed"; - return absl::CancelledError("Transport closed"); + return Empty{}; }), - std::move(promise)); + std::forward(promise)); } // Spawns an infallible promise on the given party. template void SpawnInfallible(RefCountedPtr party, absl::string_view name, - Factory&& factory); + Factory&& factory) { + party->Spawn(name, std::forward(factory), [](Empty) {}); + } // Spawns an infallible promise on the transport party. template - void SpawnInfallibleTransportParty(absl::string_view name, Factory&& factory); + void SpawnInfallibleTransportParty(absl::string_view name, + Factory&& factory) { + SpawnInfallible(general_party_, name, std::forward(factory)); + } // Spawns a promise on the transport party. If the promise returns a non-ok // status, it is handled by closing the transport with the corresponding // status. template - void SpawnGuardedTransportParty(absl::string_view name, Factory&& factory); - - ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(transport_mutex_){ - "http2_client", GRPC_CHANNEL_READY}; + void SpawnGuardedTransportParty(absl::string_view name, Factory&& factory) { + general_party_->Spawn( + name, std::forward(factory), + [self = RefAsSubclass()](absl::Status status) { + if (!status.ok()) { + GRPC_UNUSED absl::Status error = self->HandleError( + /*stream_id=*/std::nullopt, ToHttpOkOrConnError(status)); + } + }); + } - RefCountedPtr watcher_ ABSL_GUARDED_BY(transport_mutex_); + template + void SpawnWithOnDoneTransportParty(absl::string_view name, Factory&& factory, + OnDone&& on_done) { + general_party_->Spawn(name, std::forward(factory), + std::forward(on_done)); + } // Runs on the call party. std::optional> MakeStream(CallHandler call_handler); // This function MUST be idempotent. - void CloseStream(RefCountedPtr stream, CloseStreamArgs args, + void CloseStream(Stream& stream, CloseStreamArgs args, DebugLocation whence = {}); void BeginCloseStream(RefCountedPtr stream, @@ -404,83 +407,94 @@ class Http2ClientTransport final : public ClientTransport, ServerMetadataHandle&& metadata, DebugLocation whence = {}); - RefCountedPtr LookupStream(uint32_t stream_id); - - auto EndpointReadSlice(const size_t num_bytes); - auto EndpointRead(const size_t num_bytes); + ////////////////////////////////////////////////////////////////////////////// + // Settings - // HTTP2 Settings auto WaitForSettingsTimeoutOnDone(); void MaybeSpawnWaitForSettingsTimeout(); void EnforceLatestIncomingSettings(); - // This function MUST run on the transport party. - void CloseTransport(); + ////////////////////////////////////////////////////////////////////////////// + // Flow Control and BDP - void MaybeSpawnCloseTransport(Http2Status http2_status, - DebugLocation whence = {}); + // Processes the flow control action and take necessary steps. + void ActOnFlowControlAction(const chttp2::FlowControlAction& action, + Stream* stream); - // Handles the error status and returns the corresponding absl status. Absl - // Status is returned so that the error can be gracefully handled - // by promise primitives. - // If the error is a stream error, it closes the stream and returns an ok - // status. Ok status is returned because the calling transport promise loops - // should not be cancelled in case of stream errors. - // If the error is a connection error, it closes the transport and returns the - // corresponding (failed) absl status. - absl::Status HandleError(const std::optional stream_id, - Http2Status status, DebugLocation whence = {}) { - auto error_type = status.GetType(); - GRPC_DCHECK(error_type != Http2Status::Http2ErrorType::kOk); - - if (error_type == Http2Status::Http2ErrorType::kStreamError) { - GRPC_HTTP2_CLIENT_ERROR_DLOG << "Stream Error: " << status.DebugString(); - GRPC_DCHECK(stream_id.has_value()); - // Passing a cancelled server metadata handle to propagate the error - // to the upper layers. - BeginCloseStream( - LookupStream(stream_id.value()), - Http2ErrorCodeToFrameErrorCode(status.GetStreamErrorCode()), - CancelledServerMetadataFromStatus(status.GetAbslStreamError()), - whence); - return absl::OkStatus(); - } else if (error_type == Http2Status::Http2ErrorType::kConnectionError) { - GRPC_HTTP2_CLIENT_ERROR_DLOG << "Connection Error: " - << status.DebugString(); - absl::Status absl_status = status.GetAbslConnectionError(); - MaybeSpawnCloseTransport(std::move(status), whence); - return absl_status; - } - GPR_UNREACHABLE_CODE(return absl::InternalError("Invalid error type")); + void MaybeGetWindowUpdateFrames(FrameSender& frame_sender); + + auto FlowControlPeriodicUpdateLoop(); + + // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. + void AddPeriodicUpdatePromiseWaker() { + periodic_updates_waker_ = GetContext()->MakeNonOwningWaker(); } - bool should_reset_ping_clock_; - bool is_first_write_; - IncomingMetadataTracker incoming_headers_; + // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. + void WakeupPeriodicUpdatePromise() { periodic_updates_waker_.Wakeup(); } + + ////////////////////////////////////////////////////////////////////////////// + // Stream List Operations + + RefCountedPtr LookupStream(uint32_t stream_id); + + void AddToStreamList(RefCountedPtr stream); + + absl::Status MaybeAddStreamToWritableStreamList( + const RefCountedPtr stream, + const StreamDataQueue::StreamWritabilityUpdate + result); + + // Returns the next stream id. If the next stream id is not available, it + // returns std::nullopt. MUST be called from the transport party. + absl::StatusOr NextStreamId(); + + // Returns the next stream id without incrementing it. MUST be called from the + // transport party. + uint32_t PeekNextStreamId() const { return next_stream_id_; } + + // Returns the last stream id sent by the transport. If no streams were sent, + // returns 0. MUST be called from the transport party. + uint32_t GetLastStreamId() const { + const uint32_t next_stream_id = PeekNextStreamId(); + return (next_stream_id > 1) ? (next_stream_id - 2) : 0; + } - // The target number of bytes to write in a single write cycle. We may not - // always honour this max_write_size. We MAY overshoot it at most once per - // write cycle. - size_t max_write_size_; - // The number of bytes remaining to be written in the current write cycle. - size_t write_bytes_remaining_; - - // The max_write_size will be decided dynamically based on the available - // bandwidth on the wire. We aim to keep the time spent in the write loop to - // about 100ms. - void SetMaxWriteSize(const size_t max_write_size) { - GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport SetMaxWriteSize " - << " max_write_size changed: " << max_write_size_ - << " -> " << max_write_size; - max_write_size_ = max_write_size; + // Returns the number of active streams. A stream is removed from the `active` + // list once both client and server agree to close the stream. The count of + // stream_list_(even though stream list represents streams open for reads) + // works here because of the following cases where the stream is closed: + // 1. Reading a RST_STREAM frame: In this case, the stream is immediately + // closed for reads and writes and removed from the stream_list_ + // (effectively tracking the number of active streams). + // 2. Reading a Trailing Metadata frame: In this case, the stream MAY be + // closed for reads and writes immediately which follows the above case. In + // other cases, the transport either reads RST_STREAM frame from the server + // (and follows case 1) or sends a half close frame and closes the stream + // for reads and writes (in the multiplexer loop). + // 3. Hitting error condition in the transport: In this case, RST_STREAM is + // is enqueued and the stream is closed for reads immediately. This means + // we effectively reduce the number of active streams inline (because we + // remove the stream from the stream_list_). This is fine because the + // priority logic in list of writable streams ensures that the RST_STREAM + // frame is given priority over any new streams being created by the + // client. + // 4. Application abort: In this case, multiplexer loop will write RST_STREAM + // frame to the endpoint and close the stream from reads and writes. This + // then follows the same reasoning as case 1. + inline uint32_t GetActiveStreamCountLocked() const + ABSL_EXCLUSIVE_LOCKS_REQUIRED(transport_mutex_) { + return stream_list_.size(); } - size_t GetMaxWriteSize() const { return max_write_size_; } + ////////////////////////////////////////////////////////////////////////////// + // Stream Operations - auto SerializeAndWrite(std::vector&& frames); - // Tracks the max allowed stream id. Currently this is only set on receiving a - // graceful GOAWAY frame. - uint32_t max_allowed_stream_id_ = RFC9113::kMaxStreamId31Bit; + // This function MUST run on the transport party. + void CloseTransport(); + + void MaybeSpawnCloseTransport(Http2Status http2_status, + DebugLocation whence = {}); uint32_t GetMaxAllowedStreamId() const; @@ -489,23 +503,46 @@ class Http2ClientTransport final : public ClientTransport, bool CanCloseTransportLocked() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(transport_mutex_); - // Ping related members + ////////////////////////////////////////////////////////////////////////////// + // Ping Keepalive and Goaway - // Duration between two consecutive keepalive pings. - Duration keepalive_time_; - bool test_only_ack_pings_; - std::optional ping_manager_; - std::optional keepalive_manager_; - - // Flags - bool keepalive_permit_without_calls_; + void MaybeSpawnPingTimeout(std::optional opaque_data); + void MaybeSpawnDelayedPing(std::optional delayed_ping_wait); + void MaybeSpawnKeepaliveLoop(); auto SendPing(absl::AnyInvocable on_initiate, bool important) { return ping_manager_->RequestPing(std::move(on_initiate), important); } + auto WaitForPingAck() { return ping_manager_->WaitForPingAck(); } - void MaybeGetWindowUpdateFrames(SliceBuffer& output_buf); + // Ping Helper functions + Duration NextAllowedPingInterval() { + MutexLock lock(&transport_mutex_); + return (!keepalive_permit_without_calls_ && + GetActiveStreamCountLocked() == 0) + ? Duration::Hours(2) + : Duration::Seconds(1); + } + + absl::Status AckPing(uint64_t opaque_data); + + ////////////////////////////////////////////////////////////////////////////// + // Error Path and Close Path + + // Handles the error status and returns the corresponding absl status. Absl + // Status is returned so that the error can be gracefully handled + // by promise primitives. + // If the error is a stream error, it closes the stream and returns an ok + // status. Ok status is returned because the calling transport promise loops + // should not be cancelled in case of stream errors. + // If the error is a connection error, it closes the transport and returns the + // corresponding (failed) absl status. + absl::Status HandleError(const std::optional stream_id, + Http2Status status, DebugLocation whence = {}); + + ////////////////////////////////////////////////////////////////////////////// + // Misc Transport Stuff void ReportDisconnection(const absl::Status& status, StateWatcher::DisconnectInfo disconnect_info, @@ -516,70 +553,42 @@ class Http2ClientTransport final : public ClientTransport, const char* reason) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&transport_mutex_); - // Ping Helper functions - Duration NextAllowedPingInterval() { - MutexLock lock(&transport_mutex_); - return (!keepalive_permit_without_calls_ && - GetActiveStreamCountLocked() == 0) - ? Duration::Hours(2) - : Duration::Seconds(1); - } - - auto AckPing(uint64_t opaque_data) { - bool valid_ping_ack_received = true; + bool SetOnDone(CallHandler call_handler, RefCountedPtr stream); - if (!ping_manager_->AckPing(opaque_data)) { - GRPC_HTTP2_CLIENT_DLOG << "Unknown ping response received for ping id=" - << opaque_data; - valid_ping_ack_received = false; - } + void ReadChannelArgs(const ChannelArgs& channel_args, + TransportChannelArgs& args); - return If( - // It is possible that the PingRatePolicy may decide to not send a ping - // request (in cases like the number of inflight pings is too high). - // When this happens, it becomes important to ensure that if a ping ack - // is received and there is an "important" outstanding ping request, we - // should retry to send it out now. - valid_ping_ack_received && ping_manager_->ImportantPingRequested(), - [self = RefAsSubclass()] { - return Map(self->TriggerWriteCycle(), [](const absl::Status status) { - return ToHttpOkOrConnError(status); - }); - }, - [] { return Immediate(Http2Status::Ok()); }); + auto SecurityFrameLoop() { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SecurityFrameLoop Factory"; + return AssertResultType(Loop([this]() { + return Map(security_frame_handler_->WaitForSecurityFrameSending(), + [this](Empty) -> LoopCtl { + if (security_frame_handler_->TriggerWriteSecurityFrame() + .terminate) { + return Empty{}; + } + + if (!TriggerWriteCycleOrHandleError()) { + return Empty{}; + } + return Continue(); + }); + })); } + ////////////////////////////////////////////////////////////////////////////// + // Inner Classes and Structs + class PingSystemInterfaceImpl : public PingInterface { public: - static std::unique_ptr Make( - Http2ClientTransport* transport) { - return std::make_unique( - PingSystemInterfaceImpl(transport)); - } - - Promise TriggerWrite() override { - return transport_->TriggerWriteCycle(); - } - - Promise PingTimeout() override { - GRPC_HTTP2_CLIENT_DLOG << "Ping timeout at time: " << Timestamp::Now(); - - // TODO(akshitpatel) : [PH2][P2] : The error code here has been chosen - // based on CHTTP2's usage of GRPC_STATUS_UNAVAILABLE (which corresponds - // to kRefusedStream). However looking at RFC9113, definition of - // kRefusedStream doesn't seem to fit this case. We should revisit this - // and update the error code. - return Immediate(transport_->HandleError( - std::nullopt, - Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream, - GRPC_CHTTP2_PING_TIMEOUT_STR))); - } + static std::unique_ptr Make(Http2ClientTransport* transport); + absl::Status TriggerWrite() override; + Promise PingTimeout() override; private: - // TODO(akshitpatel) : [PH2][P2] : Eventually there should be a separate ref - // counted struct/class passed to all the transport promises/members. This - // will help removing back references from the transport members to - // transport and greatly simpilfy the cleanup path. + // Holding a raw pointer to transport works because all the promises + // invoking the methods of this class are invoked while holding a ref to the + // transport. Http2ClientTransport* transport_; explicit PingSystemInterfaceImpl(Http2ClientTransport* transport) : transport_(transport) {} @@ -588,135 +597,109 @@ class Http2ClientTransport final : public ClientTransport, class KeepAliveInterfaceImpl : public KeepAliveInterface { public: static std::unique_ptr Make( - Http2ClientTransport* transport) { - return std::make_unique( - KeepAliveInterfaceImpl(transport)); - } + Http2ClientTransport* transport); private: explicit KeepAliveInterfaceImpl(Http2ClientTransport* transport) : transport_(transport) {} - Promise SendPingAndWaitForAck() override { - return TrySeq(transport_->TriggerWriteCycle(), [transport = transport_] { - return transport->WaitForPingAck(); - }); - } - Promise OnKeepAliveTimeout() override { - GRPC_HTTP2_CLIENT_DLOG << "Keepalive timeout triggered"; - - // TODO(akshitpatel) : [PH2][P2] : The error code here has been chosen - // based on CHTTP2's usage of GRPC_STATUS_UNAVAILABLE (which corresponds - // to kRefusedStream). However looking at RFC9113, definition of - // kRefusedStream doesn't seem to fit this case. We should revisit this - // and update the error code. - return Immediate(transport_->HandleError( - std::nullopt, Http2Status::Http2ConnectionError( - Http2ErrorCode::kRefusedStream, - GRPC_CHTTP2_KEEPALIVE_TIMEOUT_STR))); - } - - bool NeedToSendKeepAlivePing() override { - bool need_to_send_ping = false; - { - MutexLock lock(&transport_->transport_mutex_); - need_to_send_ping = (transport_->keepalive_permit_without_calls_ || - transport_->GetActiveStreamCountLocked() > 0); - } - return need_to_send_ping; - } - - // TODO(akshitpatel) : [PH2][P2] : Eventually there should be a separate ref - // counted struct/class passed to all the transport promises/members. This - // will help removing back references from the transport members to - // transport and greatly simpilfy the cleanup path. + Promise SendPingAndWaitForAck() override; + Promise OnKeepAliveTimeout() override; + bool NeedToSendKeepAlivePing() override; + // Holding a raw pointer to transport works because all the promises + // invoking the methods of this class are invoked while holding a ref to the + // transport. Http2ClientTransport* transport_; }; class GoawayInterfaceImpl : public GoawayInterface { public: static std::unique_ptr Make( - Http2ClientTransport* transport) { - return std::make_unique( - GoawayInterfaceImpl(transport)); - } + Http2ClientTransport* transport); Promise SendPingAndWaitForAck() override { return transport_->ping_manager_->RequestPing(/*on_initiate=*/[] {}, /*important=*/true); } - void TriggerWriteCycle() override { transport_->TriggerWriteCycle(); } - - uint32_t GetLastAcceptedStreamId() override { - GRPC_DCHECK(false) - << "GetLastAcceptedStreamId is not implemented for client transport."; - LOG(ERROR) << "GetLastAcceptedStreamId is not implemented for client " - "transport."; - return 0; + absl::Status TriggerWriteCycle() override { + return transport_->TriggerWriteCycle(); } + uint32_t GetLastAcceptedStreamId() override; private: explicit GoawayInterfaceImpl(Http2ClientTransport* transport) : transport_(transport) {} - + // Holding a raw pointer to transport works because all the promises + // invoking the methods of this class are invoked while holding a ref to the + // transport. Http2ClientTransport* transport_; }; + ////////////////////////////////////////////////////////////////////////////// + // All Data Members + + RefCountedPtr general_party_; // Refer Gemini.md for party slot usage + std::shared_ptr event_engine_; + + PromiseEndpoint endpoint_; + RefCountedPtr settings_; + + Http2FrameHeader current_frame_header_; + + Mutex transport_mutex_; + + absl::flat_hash_map> stream_list_ + ABSL_GUARDED_BY(transport_mutex_); + + uint32_t next_stream_id_; + HPackCompressor encoder_; + HPackParser parser_; + bool is_transport_closed_ ABSL_GUARDED_BY(transport_mutex_) = false; + Latch transport_closed_latch_; + + ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(transport_mutex_){ + "http2_client", GRPC_CHANNEL_READY}; + + RefCountedPtr watcher_ ABSL_GUARDED_BY(transport_mutex_); + + bool should_reset_ping_clock_; + IncomingMetadataTracker incoming_headers_; + + // Transport wide write context. This is used to track the state of the + // transport during write cycles. + TransportWriteContext transport_write_context_; + + // Tracks the max allowed stream id. Currently this is only set on receiving a + // graceful GOAWAY frame. + uint32_t max_allowed_stream_id_ = RFC9113::kMaxStreamId31Bit; + + // Duration between two consecutive keepalive pings. + Duration keepalive_time_; + bool test_only_ack_pings_; + std::optional ping_manager_; + std::optional keepalive_manager_; + + // Flags + bool keepalive_permit_without_calls_; + GoawayManager goaway_manager_; WritableStreams> writable_stream_list_; - absl::Status MaybeAddStreamToWritableStreamList( - const RefCountedPtr stream, - const StreamDataQueue::StreamWritabilityUpdate - result) { - if (result.became_writable) { - GRPC_HTTP2_CLIENT_DLOG - << "Http2ClientTransport MaybeAddStreamToWritableStreamList " - " Stream id: " - << stream->GetStreamId() << " became writable"; - absl::Status status = - writable_stream_list_.Enqueue(stream, result.priority); - if (!status.ok()) { - return HandleError( - std::nullopt, - Http2Status::Http2ConnectionError( - Http2ErrorCode::kRefusedStream, - "Failed to enqueue stream to writable stream list")); - } - } - return absl::OkStatus(); - } - bool SetOnDone(CallHandler call_handler, RefCountedPtr stream); - absl::StatusOr> DequeueStreamFrames( - RefCountedPtr stream); - /// Based on channel args, preferred_rx_crypto_frame_sizes are advertised to /// the peer bool enable_preferred_rx_crypto_frame_advertisement_; + RefCountedPtr security_frame_handler_; MemoryOwner memory_owner_; chttp2::TransportFlowControl flow_control_; std::shared_ptr ztrace_collector_; - absl::flat_hash_set window_update_list_; // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. Waker periodic_updates_waker_; Http2ReadContext reader_state_; - Http2Status ParseAndDiscardHeaders(SliceBuffer&& buffer, bool is_end_headers, - RefCountedPtr stream, - Http2Status&& original_status, - DebugLocation whence = {}); - void ReadChannelArgs(const ChannelArgs& channel_args, - TransportChannelArgs& args); }; -// Since the corresponding class in CHTTP2 is about 3.9KB, our goal is to -// remain within that range. When this check fails, please update it to size -// (current size + 32) to make sure that it does not fail each time we add a -// small variable to the class. -GRPC_CHECK_CLASS_SIZE(Http2ClientTransport, 600); - } // namespace http2 } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.cc index 6f44fb7abe9..e55080867be 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.cc @@ -19,39 +19,90 @@ #include "src/core/ext/transport/chttp2/transport/http2_server_transport.h" #include +#include #include +#include +#include +#include +#include +#include #include +#include +#include #include +#include +#include #include "src/core/call/call_destination.h" +#include "src/core/call/call_spine.h" +#include "src/core/call/message.h" +#include "src/core/call/metadata.h" +#include "src/core/call/metadata_batch.h" +#include "src/core/channelz/channelz.h" +#include "src/core/ext/transport/chttp2/transport/flow_control.h" +#include "src/core/ext/transport/chttp2/transport/flow_control_manager.h" #include "src/core/ext/transport/chttp2/transport/frame.h" +#include "src/core/ext/transport/chttp2/transport/goaway.h" +#include "src/core/ext/transport/chttp2/transport/header_assembler.h" #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h" #include "src/core/ext/transport/chttp2/transport/hpack_parser.h" +#include "src/core/ext/transport/chttp2/transport/http2_settings.h" +#include "src/core/ext/transport/chttp2/transport/http2_settings_promises.h" +#include "src/core/ext/transport/chttp2/transport/http2_status.h" +#include "src/core/ext/transport/chttp2/transport/http2_transport.h" +#include "src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h" +#include "src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h" +#include "src/core/ext/transport/chttp2/transport/keepalive.h" +#include "src/core/ext/transport/chttp2/transport/message_assembler.h" +#include "src/core/ext/transport/chttp2/transport/ping_promise.h" +#include "src/core/ext/transport/chttp2/transport/security_frame.h" +#include "src/core/ext/transport/chttp2/transport/stream.h" +#include "src/core/ext/transport/chttp2/transport/stream_data_queue.h" +#include "src/core/ext/transport/chttp2/transport/transport_common.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/debug/trace_impl.h" +#include "src/core/lib/iomgr/exec_ctx.h" +#include "src/core/lib/promise/for_each.h" +#include "src/core/lib/promise/if.h" #include "src/core/lib/promise/loop.h" +#include "src/core/lib/promise/map.h" #include "src/core/lib/promise/match_promise.h" #include "src/core/lib/promise/party.h" #include "src/core/lib/promise/poll.h" #include "src/core/lib/promise/promise.h" +#include "src/core/lib/promise/race.h" +#include "src/core/lib/promise/sleep.h" #include "src/core/lib/promise/try_seq.h" #include "src/core/lib/resource_quota/arena.h" +#include "src/core/lib/resource_quota/resource_quota.h" +#include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_buffer.h" +#include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/promise_endpoint.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/debug_location.h" #include "src/core/util/grpc_check.h" +#include "src/core/util/latent_see.h" +#include "src/core/util/orphanable.h" #include "src/core/util/ref_counted.h" +#include "src/core/util/ref_counted_ptr.h" +#include "src/core/util/sync.h" +#include "src/core/util/time.h" +#include "absl/container/flat_hash_map.h" #include "absl/log/log.h" #include "absl/status/status.h" +#include "absl/strings/cord.h" +#include "absl/strings/str_cat.h" +#include "absl/strings/string_view.h" +#include "absl/types/span.h" namespace grpc_core { namespace http2 { -#define GRPC_HTTP2_SERVER_DLOG \ - DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport)) - using grpc_event_engine::experimental::EventEngine; +using StreamWritabilityUpdate = + StreamDataQueue::StreamWritabilityUpdate; // Experimental : This is just the initial skeleton of class // and it is functions. The code will be written iteratively. @@ -60,260 +111,1120 @@ using grpc_event_engine::experimental::EventEngine; // TODO(tjagtap) : [PH2][P3] : Delete this comment when http2 // rollout begins -// TODO(akshitpatel) : [PH2][P2] : Choose appropriate size later. -// TODO(tjagtap) : [PH2][P2] : Consider moving to common code. -constexpr int kMpscSize = 10; +constexpr bool kIsClient = false; -void Http2ServerTransport::SetCallDestination( - RefCountedPtr call_destination) { - // TODO(tjagtap) : [PH2][P2] : Implement this function. - GRPC_CHECK(call_destination_ == nullptr); - GRPC_CHECK(call_destination != nullptr); - call_destination_ = call_destination; - // got_acceptor_.Set(); // Copied from CG. Understand and fix. +////////////////////////////////////////////////////////////////////////////// +// Channelz and ZTrace + +RefCountedPtr Http2ServerTransport::GetSocketNode() + const { + const channelz::BaseNode* node = channelz::DataSource::channelz_node(); + if (node == nullptr) { + return nullptr; + } + return const_cast(node) + ->RefAsSubclass(); } -void Http2ServerTransport::PerformOp(GRPC_UNUSED grpc_transport_op*) { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport PerformOp Begin"; - // TODO(tjagtap) : [PH2][P2] : Implement this function. - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport PerformOp End"; +void Http2ServerTransport::AddData(channelz::DataSink sink) { + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::AddData Begin"; + + event_engine_->Run([self = RefAsSubclass(), + sink = std::move(sink)]() mutable { + RefCountedPtr party = nullptr; + { + MutexLock lock(&self->transport_mutex_); + if (GPR_LIKELY(!self->is_transport_closed_)) { + GRPC_DCHECK(self->general_party_ != nullptr); + party = self->general_party_; + } else { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::AddData Transport is closed."; + } + } + + ExecCtx exec_ctx; + if (party != nullptr) { + self->SpawnAddChannelzData(std::move(party), std::move(sink)); + } + self.reset(); // Cleanup with exec_ctx in scope + }); } -void Http2ServerTransport::Orphan() { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Orphan Begin"; - // TODO(tjagtap) : [PH2][P2] : Implement the needed cleanup - general_party_.reset(); - Unref(); - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Orphan End"; +void Http2ServerTransport::SpawnAddChannelzData(RefCountedPtr party, + channelz::DataSink sink) { + SpawnInfallible( + std::move(party), "AddData", + [self = RefAsSubclass(), + sink = std::move(sink)]() mutable { + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::SpawnAddChannelzData"; + sink.AddData( + "Http2ServerTransport", + channelz::PropertyList() + .Set("keepalive_time", self->keepalive_time_) + .Set("keepalive_permit_without_calls", + self->keepalive_permit_without_calls_) + .Set("settings", self->settings_->ChannelzProperties()) + .Set("flow_control", + self->flow_control_.stats().ChannelzProperties())); + self->general_party_->ExportToChannelz("Http2ServerTransport Party", + sink); + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::SpawnAddChannelzData End"; + return Empty{}; + }); } -void Http2ServerTransport::AbortWithError() { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport AbortWithError Begin"; - // TODO(tjagtap) : [PH2][P2] : Implement this function. - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport AbortWithError End"; +////////////////////////////////////////////////////////////////////////////// +// Watchers + +void Http2ServerTransport::StartWatch(RefCountedPtr watcher) { + MutexLock lock(&transport_mutex_); + GRPC_CHECK(watcher_ == nullptr); + watcher_ = std::move(watcher); + if (is_transport_closed_) { + // TODO(tjagtap) : [PH2][P2] : Provide better status message and + // disconnect info here. + NotifyStateWatcherOnDisconnectLocked( + absl::UnknownError("transport closed before watcher started"), {}); + } else { + // TODO(tjagtap) : [PH2][P2] : Notify the state watcher of the current + // value of the peer's MAX_CONCURRENT_STREAMS setting. + } +} + +void Http2ServerTransport::StopWatch(RefCountedPtr watcher) { + MutexLock lock(&transport_mutex_); + if (watcher_ == watcher) watcher_.reset(); +} + +void Http2ServerTransport::StartConnectivityWatch( + grpc_connectivity_state state, + OrphanablePtr watcher) { + MutexLock lock(&transport_mutex_); + state_tracker_.AddWatcher(state, std::move(watcher)); +} + +void Http2ServerTransport::StopConnectivityWatch( + ConnectivityStateWatcherInterface* watcher) { + MutexLock lock(&transport_mutex_); + state_tracker_.RemoveWatcher(watcher); } -Http2Status ProcessHttp2DataFrame(Http2DataFrame frame) { +void Http2ServerTransport::NotifyStateWatcherOnDisconnectLocked( + absl::Status status, StateWatcher::DisconnectInfo disconnect_info) { + if (watcher_ == nullptr) return; + event_engine_->Run([watcher = std::move(watcher_), status = std::move(status), + disconnect_info]() mutable { + ExecCtx exec_ctx; + watcher->OnDisconnect(std::move(status), disconnect_info); + watcher.reset(); // Before ExecCtx goes out of scope. + }); +} + +////////////////////////////////////////////////////////////////////////////// +// Test Only Functions + +int64_t Http2ServerTransport::TestOnlyTransportFlowControlWindow() { + return flow_control_.remote_window(); +} + +int64_t Http2ServerTransport::TestOnlyGetStreamFlowControlWindow( + const uint32_t stream_id) { + RefCountedPtr stream = LookupStream(stream_id); + if (stream == nullptr) { + return -1; + } + return stream->GetStreamFlowControl().remote_window_delta(); +} + +////////////////////////////////////////////////////////////////////////////// +// Endpoint Helpers + +auto Http2ServerTransport::EndpointWrite(SliceBuffer&& output_buf) { + size_t output_buf_length = output_buf.Length(); + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::EndpointWrite output_buf: " + << output_buf_length; + + transport_write_context_.GetWriteCycle().BeginWrite(output_buf_length); + return Map( + endpoint_.Write(std::forward(output_buf), + TransportWriteContext::GetWriteArgs(settings_->peer())), + [this](absl::Status status) { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::EndpointWrite complete with status = " + << status; + transport_write_context_.GetWriteCycle().EndWrite(status.ok()); + return status; + }); +} + +auto Http2ServerTransport::SerializeAndWrite() { + return AssertResultType(If( + transport_write_context_.GetWriteCycle().CanSerializeRegularFrames(), + [this]() mutable { + WriteCycle& write_cycle = transport_write_context_.GetWriteCycle(); + const uint64_t frame_count = write_cycle.GetRegularFrameCount(); + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::SerializeAndWrite frame count: " + << frame_count; + ztrace_collector_->Append(PromiseEndpointWriteTrace{frame_count}); + return EndpointWrite(write_cycle.SerializeRegularFrames( + WriteCycle::SerializeStats{should_reset_ping_clock_})); + }, + []() { return absl::OkStatus(); })); +} + +////////////////////////////////////////////////////////////////////////////// +// Transport Read Path + +Http2Status Http2ServerTransport::ProcessIncomingFrame(Http2DataFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-data GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2DataFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2DataFrame Promise { stream_id=" - << frame.stream_id << ", end_stream=" << frame.end_stream - << ", payload=" << frame.payload.JoinIntoString() << "}"; + << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) { stream_id=" + << frame.stream_id << ", end_stream:" << frame.end_stream + << ", payload length=" << frame.payload.Length() << "}"; + + // TODO(akshitpatel) : [PH2][P3] : Investigate if we should do this even if + // the function returns a non-ok status? + // ping_manager_->ReceivedDataFrame(); + + // RefCountedPtr stream = LookupStream(frame.stream_id); + + // ValueOrHttp2Status flow_control_action = + // ProcessIncomingDataFrameFlowControl(current_frame_header_, + // flow_control_, + // stream.get()); + // if (!flow_control_action.IsOk()) { + // return ValueOrHttp2Status::TakeStatus( + // std::move(flow_control_action)); + // } + // ActOnFlowControlAction(flow_control_action.value(), stream.get()); + + // if (stream == nullptr) { + // // TODO(tjagtap) : [PH2][P2] : Implement the correct behaviour later. + // // RFC9113 : If a DATA frame is received whose stream is not in the + // "open" + // // or "half-closed (local)" state, the recipient MUST respond with a + // stream + // // error (Section 5.4.2) of type STREAM_CLOSED. + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) { + // stream_id=" + // << frame.stream_id << "} Lookup Failed"; + // return Http2Status::Ok(); + // } + + // // TODO(akshitpatel) : [PH2][P3] : We should add a check to reset stream + // if + // // the stream state is kIdle as well. + + // Http2Status stream_status = stream->CanStreamReceiveDataFrames(); + // if (!stream_status.IsOk()) { + // return stream_status; + // } + + // // Add frame to assembler + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) " + // "AppendNewDataFrame"; + // GrpcMessageAssembler& assembler = stream->GetGrpcMessageAssembler(); + // Http2Status status = + // assembler.AppendNewDataFrame(frame.payload, frame.end_stream); + // if (!status.IsOk()) { + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) " + // "AppendNewDataFrame Failed"; + // return status; + // } + + // // Pass the messages up the stack if it is ready. + // while (true) { + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) " + // "ExtractMessage"; + // ValueOrHttp2Status result = assembler.ExtractMessage(); + // if (!result.IsOk()) { + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) " + // "ExtractMessage Failed"; + // return + // ValueOrHttp2Status::TakeStatus(std::move(result)); + // } + // MessageHandle message = TakeValue(std::move(result)); + // if (message != nullptr) { + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) " + // "SpawnPushMessage " + // << message->DebugString(); + // stream->GetCallInitiator().SpawnPushMessage(std::move(message)); + // continue; + // } + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(DataFrame) While + // Break"; + // break; + // } + + // TODO(tjagtap) : [PH2][P2] : List of Tests: + // 1. Data frame with unknown stream ID + // 2. Data frame with only half a message and then end stream + // 3. One data frame with a full message + // 4. Three data frames with one full message + // 5. One data frame with three full messages. All messages should be pushed. + // Will need to mock the call_handler object and test this along with the + // Header reading code. Because we need a stream in place for the lookup to + // work. return Http2Status::Ok(); } -Http2Status ProcessHttp2HeaderFrame(Http2HeaderFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame( + Http2HeaderFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-headers GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2HeaderFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2HeaderFrame Promise { stream_id=" - << frame.stream_id << ", end_headers=" << frame.end_headers - << ", end_stream=" << frame.end_stream - << ", payload=" << frame.payload.JoinIntoString() << " }"; + << "Http2ServerTransport::ProcessIncomingFrame(HeaderFrame) {stream_id = " + << frame.stream_id << ",end_headers = " << frame.end_headers + << ", end_stream=" << frame.end_stream << " }"; + // State update MUST happen before processing the frame. + // incoming_headers_.OnHeaderReceived(frame); + + // ping_manager_->ReceivedDataFrame(); + + // RefCountedPtr stream = LookupStream(frame.stream_id); + // if (stream == nullptr) { + // // TODO(tjagtap) : [PH2][P3] : Implement this. + // // RFC9113 : The identifier of a newly established stream MUST be + // // numerically greater than all streams that the initiating endpoint + // has + // // opened or reserved. This governs streams that are opened using a + // HEADERS + // // frame and streams that are reserved using PUSH_PROMISE. An endpoint + // that + // // receives an unexpected stream identifier MUST respond with a + // connection + // // error (Section 5.4.1) of type PROTOCOL_ERROR. + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(HeaderFrame) { " + // "stream_id=" + // << frame.stream_id << "} Lookup Failed"; + // return ParseAndDiscardHeaders(std::move(frame.payload), + // frame.end_headers, + // /*stream=*/nullptr, Http2Status::Ok()); + // } + + // if (stream->IsStreamHalfClosedRemote()) { + // return ParseAndDiscardHeaders( + // std::move(frame.payload), frame.end_headers, stream.get(), + // Http2Status::Http2StreamError( + // Http2ErrorCode::kStreamClosed, + // std::string(RFC9113::kHalfClosedRemoteState))); + // } + + // if (incoming_headers_.ClientReceivedDuplicateMetadata( + // stream->IsInitialMetadataReceived(), + // stream->IsTrailingMetadataReceived())) { + // return ParseAndDiscardHeaders( + // std::move(frame.payload), frame.end_headers, stream.get(), + // Http2Status::Http2StreamError( + // Http2ErrorCode::kInternalError, + // std::string(GrpcErrors::kTooManyMetadata))); + // } + + // Http2Status append_result = + // stream->GetHeaderAssembler().AppendHeaderFrame(frame); if + // (!append_result.IsOk()) { + // // Frame payload is not consumed if AppendHeaderFrame returns a non-OK + // // status. We need to process it to keep our in consistent state. + // return ParseAndDiscardHeaders(std::move(frame.payload), + // frame.end_headers, + // stream.get(), std::move(append_result)); + // } + + // Http2Status status = ProcessMetadata(stream); + // if (!status.IsOk()) { + // // Frame payload has been moved to the HeaderAssembler. So calling + // // ParseAndDiscardHeaders with an empty buffer. + // return ParseAndDiscardHeaders(SliceBuffer(), frame.end_headers, + // stream.get(), std::move(status)); + // } + + // Frame payload has either been processed or moved to the HeaderAssembler. return Http2Status::Ok(); } -Http2Status ProcessHttp2RstStreamFrame(Http2RstStreamFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame( + Http2RstStreamFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-rst_stream GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2RstStreamFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2RstStreamFrame Promise{ stream_id=" + << "Http2ServerTransport::ProcessIncomingFrame(RstStreamFrame) { " + "stream_id=" << frame.stream_id << ", error_code=" << frame.error_code << " }"; + + // Http2ErrorCode error_code = + // FrameErrorCodeToHttp2ErrorCode(frame.error_code); absl::Status status = + // absl::Status(ErrorCodeToAbslStatusCode(error_code), + // "Reset stream frame received."); + // RefCountedPtr stream = LookupStream(frame.stream_id); + // if (stream != nullptr) { + // stream->MarkHalfClosedRemote(); + // BeginCloseStream(std::move(stream), + // /*reset_stream_error_code=*/std::nullopt, + // CancelledServerMetadataFromStatus(status)); + // } + + // In case of stream error, we do not want the Read Loop to be broken. Hence + // returning an ok status. return Http2Status::Ok(); } -Http2Status ProcessHttp2SettingsFrame(Http2SettingsFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame( + Http2SettingsFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-settings GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2SettingsFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - // Load into this.settings_ - // Take necessary actions as per settings that have changed. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2SettingsFrame Promise { ack=" + << "Http2ServerTransport::ProcessIncomingFrame(SettingsFrame) { ack=" << frame.ack << ", settings length=" << frame.settings.size() << "}"; + + if (!frame.ack) { + Http2Status status = ValidateSettingsValues(frame.settings); + if (!status.IsOk()) { + return status; + } + settings_->BufferPeerSettings(std::move(frame.settings)); + absl::Status trigger_write_status = TriggerWriteCycle(); + if (!trigger_write_status.ok()) { + return ToHttpOkOrConnError(trigger_write_status); + } + + if (GPR_UNLIKELY(!settings_->IsFirstPeerSettingsApplied())) { + // Apply the first settings before we read any other frames. + // TODO(tjagtap) [PH2][P0][Write] Uncomment when write loop does wakeup + // reader_state_.SetPauseReadLoop(); + } + } else { + if (settings_->OnSettingsAckReceived()) { + // TODO(tjagtap) [PH2][P0] : Implement this. + // parser_.hpack_table()->SetMaxBytes( + // settings_->acked().header_table_size()); + // ActOnFlowControlAction(flow_control_.SetAckedInitialWindow( + // settings_->acked().initial_window_size()), + // /*stream=*/nullptr); + } else { + // TODO(tjagtap) [PH2][P4] : The RFC does not say anything about what + // should happen if we receive an unsolicited SETTINGS ACK. Decide if we + // want to respond with any error or just proceed. + LOG(ERROR) << "Settings ack received without sending settings"; + } + } return Http2Status::Ok(); } -Http2Status ProcessHttp2PingFrame(Http2PingFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame(Http2PingFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-ping GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2PingFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2PingFrame Promise { ack=" + << "Http2ServerTransport::ProcessIncomingFrame(PingFrame) { ack=" << frame.ack << ", opaque=" << frame.opaque << " }"; + // if (frame.ack) { + // return ToHttpOkOrConnError(AckPing(frame.opaque)); + // } else { + // if (test_only_ack_pings_) { + // // TODO(akshitpatel) : [PH2][P2] : Have a counter to track number + // // of pending induced frames (Ping/Settings Ack). This is to + // // ensure that if write is taking a long time, we can stop reads + // // and prioritize writes. RFC9113: PING responses SHOULD be given + // // higher priority than any other frame. + // ping_manager_->AddPendingPingAck(frame.opaque); + // // TODO(akshitpatel) : [PH2][P2] : This is done assuming that the + // // other ProcessFrame promises may return stream or connection + // // failures. If this does not turn out to be true, consider + // // returning absl::Status here. + // return ToHttpOkOrConnError(TriggerWriteCycle()); + // } else { + // GRPC_HTTP2_SERVER_DLOG + // << "Http2ServerTransport::ProcessIncomingFrame(PingFrame) " + // "test_only_ack_pings_ is false. Ignoring the ping request."; + // } + // } return Http2Status::Ok(); } -Http2Status ProcessHttp2GoawayFrame(Http2GoawayFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame( + Http2GoawayFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-goaway GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2GoawayFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2GoawayFrame Promise { " + << "Http2ServerTransport::ProcessIncomingFrame(GoawayFrame) { " "last_stream_id=" - << frame.last_stream_id << ", error_code=" << frame.error_code - << ", debug_data=" << frame.debug_data.as_string_view() << "}"; + << frame.last_stream_id << ", error_code=" << frame.error_code << "}"; + LOG_IF(ERROR, + frame.error_code != static_cast(Http2ErrorCode::kNoError)) + << "Received GOAWAY frame with error code: " << frame.error_code; + + // uint32_t last_stream_id = 0; + // absl::Status status(ErrorCodeToAbslStatusCode( + // FrameErrorCodeToHttp2ErrorCode(frame.error_code)), + // frame.debug_data.empty() + // ? absl::string_view("GOAWAY received") + // : frame.debug_data.as_string_view()); + // if (GoawayManager::IsGracefulGoaway(frame)) { + // const uint32_t next_stream_id = PeekNextStreamId(); + // last_stream_id = (next_stream_id > 1) ? next_stream_id - 2 : 0; + // } else { + // last_stream_id = frame.last_stream_id; + // } + // SetMaxAllowedStreamId(last_stream_id); + + // bool close_transport = false; + // { + // MutexLock lock(&transport_mutex_); + // if (CanCloseTransportLocked()) { + // close_transport = true; + // GRPC_HTTP2_SERVER_DLOG << + // "Http2ServerTransport::ProcessIncomingFrame(" + // "GoawayFrame) " + // "stream_list_ is empty"; + // } + // } + + // StateWatcher::DisconnectInfo disconnect_info; + // disconnect_info.reason = Transport::StateWatcher::kGoaway; + // disconnect_info.http2_error_code = + // static_cast(frame.error_code); + + // // Throttle keepalive time if the server sends a GOAWAY with error code + // // ENHANCE_YOUR_CALM and debug data equal to "too_many_pings". This + // will + // // apply to any new transport created on by any subchannel of this + // channel. if (GPR_UNLIKELY(frame.error_code == static_cast( + // Http2ErrorCode::kEnhanceYourCalm) + // && + // frame.debug_data == "too_many_pings")) { + // LOG(ERROR) << ": Received a GOAWAY with error code ENHANCE_YOUR_CALM + // and + // " + // "debug data equal to \"too_many_pings\". Current + // keepalive " "time (before throttling): " + // << keepalive_time_.ToString(); + // constexpr int max_keepalive_time_millis = + // INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER; + // uint64_t throttled_keepalive_time = + // keepalive_time_.millis() > max_keepalive_time_millis + // ? INT_MAX + // : keepalive_time_.millis() * + // KEEPALIVE_TIME_BACKOFF_MULTIPLIER; + // if (!IsSubchannelConnectionScalingEnabled()) { + // status.SetPayload(kKeepaliveThrottlingKey, + // absl::Cord(std::to_string(throttled_keepalive_time))); + // } + // disconnect_info.keepalive_time = + // Duration::Milliseconds(throttled_keepalive_time); + // } + + // if (close_transport) { + // // TODO(akshitpatel) : [PH2][P3] : Ideally the error here should be + // // kNoError. However, Http2Status does not support kNoError. We + // should + // // revisit this and update the error code. + // MaybeSpawnCloseTransport(Http2Status::Http2ConnectionError( + // FrameErrorCodeToHttp2ErrorCode(( + // frame.error_code == + // Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kNoError) + // ? + // Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kInternalError) + // : frame.error_code)), + // frame.debug_data.empty() + // ? std::string("GOAWAY received") + // : std::string(frame.debug_data.as_string_view()))); + // } + + // // lie: use transient failure from the transport to indicate goaway has + // been + // // received. + // ReportDisconnection(status, disconnect_info, "got_goaway"); return Http2Status::Ok(); } -Http2Status ProcessHttp2WindowUpdateFrame(Http2WindowUpdateFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame( + Http2WindowUpdateFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-window_update GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2WindowUpdateFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2WindowUpdateFrame Promise { " + << "Http2ServerTransport::ProcessIncomingFrame(WindowUpdateFrame) { " " stream_id=" << frame.stream_id << ", increment=" << frame.increment << "}"; + + // RefCountedPtr stream = nullptr; + // if (frame.stream_id != 0) { + // stream = LookupStream(frame.stream_id); + // } + // if (stream != nullptr) { + // StreamWritabilityUpdate update = + // stream->ReceivedFlowControlWindowUpdate(frame.increment); + // if (update.became_writable) { + // absl::Status status = writable_stream_list_.EnqueueWrapper( + // stream, update.priority, + // AreTransportFlowControlTokensAvailable()); + // if (!status.ok()) { + // return ToHttpOkOrConnError(status); + // } + // } + // } + + // const bool should_trigger_write = + // ProcessIncomingWindowUpdateFrameFlowControl( + // frame, flow_control_, stream.get()); + // if (should_trigger_write) { + // return ToHttpOkOrConnError(TriggerWriteCycle()); + // } return Http2Status::Ok(); } -Http2Status ProcessHttp2ContinuationFrame(Http2ContinuationFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame( + Http2ContinuationFrame&& frame) { // https://www.rfc-editor.org/rfc/rfc9113.html#name-continuation GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2ContinuationFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2ContinuationFrame Promise { " + << "Http2ServerTransport::ProcessIncomingFrame(ContinuationFrame) { " "stream_id=" - << frame.stream_id << ", end_headers=" << frame.end_headers - << ", payload=" << frame.payload.JoinIntoString() << " }"; + << frame.stream_id << ", end_headers=" << frame.end_headers << " }"; + + // // State update MUST happen before processing the frame. + // incoming_headers_.OnContinuationReceived(frame); + + // RefCountedPtr stream = LookupStream(frame.stream_id); + // if (stream == nullptr) { + // // TODO(tjagtap) : [PH2][P3] : Implement this. + // // RFC9113 : The identifier of a newly established stream MUST be + // // numerically greater than all streams that the initiating endpoint + // has + // // opened or reserved. This governs streams that are opened using a + // HEADERS + // // frame and streams that are reserved using PUSH_PROMISE. An + // endpoint that + // // receives an unexpected stream identifier MUST respond with a + // connection + // // error (Section 5.4.1) of type PROTOCOL_ERROR. + // return ParseAndDiscardHeaders(std::move(frame.payload), + // frame.end_headers, + // nullptr, Http2Status::Ok()); + // } + + // if (stream->IsStreamHalfClosedRemote()) { + // return ParseAndDiscardHeaders( + // std::move(frame.payload), frame.end_headers, stream.get(), + // Http2Status::Http2StreamError( + // Http2ErrorCode::kStreamClosed, + // std::string(RFC9113::kHalfClosedRemoteState))); + // } + + // Http2Status append_result = + // stream->GetHeaderAssembler().AppendContinuationFrame(frame); + // if (!append_result.IsOk()) { + // // Frame payload is not consumed if AppendContinuationFrame returns a + // // non-OK status. We need to process it to keep our in consistent + // state. return ParseAndDiscardHeaders(std::move(frame.payload), + // frame.end_headers, + // stream.get(), + // std::move(append_result)); + // } + + // Http2Status status = ProcessMetadata(stream); + // if (!status.IsOk()) { + // // Frame payload is consumed by HeaderAssembler. So passing an empty + // // SliceBuffer to ParseAndDiscardHeaders. + // return ParseAndDiscardHeaders(SliceBuffer(), frame.end_headers, + // stream.get(), std::move(status)); + // } + + // Frame payload has either been processed or moved to the HeaderAssembler. return Http2Status::Ok(); } -Http2Status ProcessHttp2SecurityFrame(Http2SecurityFrame frame) { +Http2Status Http2ServerTransport::ProcessIncomingFrame( + Http2SecurityFrame&& frame) { GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2SecurityFrame Factory"; - // TODO(tjagtap) : [PH2][P2] : Implement this. + << "Http2ServerTransport::ProcessIncomingFrame(SecurityFrame) "; + if (settings_->IsSecurityFrameExpected()) { + security_frame_handler_->ProcessPayload(std::move(frame.payload)); + } + return Http2Status::Ok(); +} + +Http2Status Http2ServerTransport::ProcessIncomingFrame( + GRPC_UNUSED Http2UnknownFrame&& frame) { + // RFC9113: Implementations MUST ignore and discard frames of + // unknown types. GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ProcessHttp2SecurityFrame Promise { payload=" - << frame.payload.JoinIntoString() << " }"; + << "Http2ServerTransport::ProcessIncomingFrame(UnknownFrame) "; return Http2Status::Ok(); } -auto Http2ServerTransport::ProcessOneFrame(Http2Frame frame) { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport ProcessOneFrame Factory"; - return AssertResultType(MatchPromise( - std::move(frame), - [](Http2DataFrame frame) { - return ProcessHttp2DataFrame(std::move(frame)); - }, - [](Http2HeaderFrame frame) { - return ProcessHttp2HeaderFrame(std::move(frame)); - }, - [](Http2RstStreamFrame frame) { - return ProcessHttp2RstStreamFrame(frame); - }, - [](Http2SettingsFrame frame) { - return ProcessHttp2SettingsFrame(std::move(frame)); - }, - [](Http2PingFrame frame) { return ProcessHttp2PingFrame(frame); }, - [](Http2GoawayFrame frame) { - return ProcessHttp2GoawayFrame(std::move(frame)); - }, - [](Http2WindowUpdateFrame frame) { - return ProcessHttp2WindowUpdateFrame(frame); - }, - [](Http2ContinuationFrame frame) { - return ProcessHttp2ContinuationFrame(std::move(frame)); - }, - [](Http2SecurityFrame frame) { - return ProcessHttp2SecurityFrame(std::move(frame)); - }, - [](GRPC_UNUSED Http2UnknownFrame frame) { - // As per HTTP2 RFC, implementations MUST ignore and discard frames of - // unknown types. - return Http2Status::Ok(); +Http2Status Http2ServerTransport::ProcessIncomingFrame( + GRPC_UNUSED Http2EmptyFrame&& frame) { + LOG(DFATAL) << "ParseFramePayload should never return a Http2EmptyFrame"; + return Http2Status::Ok(); +} + +Http2Status Http2ServerTransport::ProcessMetadata( + RefCountedPtr stream) { + HeaderAssembler& assembler = stream->GetHeaderAssembler(); + // CallInitiator& call = stream->GetCallInitiator(); + + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ProcessMetadata"; + if (assembler.IsReady()) { + ValueOrHttp2Status read_result = + assembler.ReadMetadata(parser_, !incoming_headers_.HeaderHasEndStream(), + /*max_header_list_size_soft_limit=*/ + incoming_headers_.soft_limit(), + /*max_header_list_size_hard_limit=*/ + settings_->acked().max_header_list_size()); + if (read_result.IsOk()) { + // ServerMetadataHandle metadata = TakeValue(std::move(read_result)); + // if (incoming_headers_.HeaderHasEndStream()) { + // stream->MarkHalfClosedRemote(); + // stream->SetTrailingMetadataReceived(); + // // BeginCloseStream(std::move(stream), + // // /*reset_stream_error_code=*/std::nullopt, + // // std::move(metadata)); + // } else { + // GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ProcessMetadata " + // "SpawnPushServerInitialMetadata"; + // metadata->Set(PeerString(), incoming_headers_.peer_string()); + // stream->SetInitialMetadataReceived(); + // call.SpawnPushServerInitialMetadata(std::move(metadata)); + // } + return Http2Status::Ok(); + } + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ProcessMetadata Failed"; + return ValueOrHttp2Status>::TakeStatus( + std::move(read_result)); + } + return Http2Status::Ok(); +} + +Http2Status Http2ServerTransport::ParseAndDiscardHeaders( + SliceBuffer&& buffer, const bool is_end_headers, Stream* stream, + Http2Status&& original_status, DebugLocation whence) { + const bool is_initial_metadata = !incoming_headers_.HeaderHasEndStream(); + const uint32_t incoming_stream_id = incoming_headers_.GetStreamId(); + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::ParseAndDiscardHeaders buffer size: " + << buffer.Length() << " is_initial_metadata: " << is_initial_metadata + << " is_end_headers: " << is_end_headers + << " incoming_stream_id: " << incoming_stream_id + << " stream_id: " << (stream == nullptr ? 0 : stream->GetStreamId()) + << " original_status: " << original_status.DebugString() + << " whence: " << whence.file() << ":" << whence.line(); + + return http2::ParseAndDiscardHeaders( + parser_, std::move(buffer), + HeaderAssembler::ParseHeaderArgs{ + /*is_initial_metadata=*/is_initial_metadata, + /*is_end_headers=*/is_end_headers, + /*is_client=*/kIsClient, + /*max_header_list_size_soft_limit=*/ + incoming_headers_.soft_limit(), + /*max_header_list_size_hard_limit=*/ + settings_->acked().max_header_list_size(), + /*stream_id=*/incoming_stream_id, }, - [](GRPC_UNUSED Http2EmptyFrame frame) { - LOG(DFATAL) - << "ParseFramePayload should never return a Http2EmptyFrame"; - return Http2Status::Ok(); - })); + stream, std::move(original_status)); } auto Http2ServerTransport::ReadAndProcessOneFrame() { GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ReadAndProcessOneFrame Factory"; + << "Http2ServerTransport::ReadAndProcessOneFrame Factory"; return AssertResultType(TrySeq( // Fetch the first kFrameHeaderSize bytes of the Frame, these contain // the frame header. - endpoint_.ReadSlice(kFrameHeaderSize), + EndpointReadSlice(kFrameHeaderSize), // Parse the frame header. [](Slice header_bytes) -> Http2FrameHeader { GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ReadAndProcessOneFrame Parse " + << "Http2ServerTransport::ReadAndProcessOneFrame Parse " << header_bytes.as_string_view(); return Http2FrameHeader::Parse(header_bytes.begin()); }, - // Read the payload of the frame. + // Validate the incoming frame as per the current state of the transport [this](Http2FrameHeader header) { + Http2Status status = ValidateFrameHeader( + /*max_frame_size_setting*/ settings_->acked().max_frame_size(), + /*incoming_header_in_progress*/ + incoming_headers_.IsWaitingForContinuationFrame(), + /*incoming_header_stream_id*/ + incoming_headers_.GetStreamId(), + /*current_frame_header*/ header, + // TODO(tjagtap) : [PH2][P0] : Fix + /*last_stream_id=*//*GetLastStreamId()*/ 100, + /*is_client=*/kIsClient, /*is_first_settings_processed=*/ + settings_->IsFirstPeerSettingsApplied()); + + if (GPR_UNLIKELY(!status.IsOk())) { + GRPC_DCHECK(status.GetType() == + Http2Status::Http2ErrorType::kConnectionError); + return HandleError(std::nullopt, std::move(status)); + } GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ReadAndProcessOneFrame Read"; + << "Http2ServerTransport::ReadAndProcessOneFrame " + "Validated Frame Header:" + << header.ToString(); current_frame_header_ = header; - return AssertResultType>( - endpoint_.Read(header.length)); - }, - // Parse the payload of the frame based on frame type. - [this](SliceBuffer payload) -> absl::StatusOr { - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ReadAndProcessOneFrame ParseFramePayload " - << payload.JoinIntoString(); - ValueOrHttp2Status frame = - ParseFramePayload(current_frame_header_, std::move(payload)); - if (frame.IsOk()) { - return TakeValue(std::move(frame)); - } - - return HandleError( - ValueOrHttp2Status::TakeStatus(std::move(frame))); + return absl::OkStatus(); }, - [this](GRPC_UNUSED Http2Frame frame) { + // Read the payload of the frame. + [this]() { GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport ReadAndProcessOneFrame ProcessOneFrame"; - return Map( - ProcessOneFrame(std::move(frame)), - [self = RefAsSubclass()](Http2Status status) { - if (status.IsOk()) { - return absl::OkStatus(); + << "Http2ServerTransport::ReadAndProcessOneFrame Read Frame "; + return AssertResultType(Map( + EndpointRead(current_frame_header_.length), + [this](absl::StatusOr&& payload) { + if (GPR_UNLIKELY(!payload.ok())) { + return payload.status(); } - return self->HandleError(std::move(status)); - }); + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::ReadAndProcessOneFrame " + "ParseFramePayload payload length: " + << payload.value().Length(); + ValueOrHttp2Status frame = ParseFramePayload( + current_frame_header_, TakeValue(std::move(payload))); + if (GPR_UNLIKELY(!frame.IsOk())) { + return HandleError(current_frame_header_.stream_id, + ValueOrHttp2Status::TakeStatus( + std::move(frame))); + } + Http2Status status = + ProcessOneIncomingFrame(TakeValue(std::move(frame))); + if (GPR_UNLIKELY(!status.IsOk())) { + return HandleError(current_frame_header_.stream_id, + std::move(status)); + } + return absl::OkStatus(); + })); + }, + [this]() -> Poll { + return reader_state_.MaybePauseReadLoop(); })); } auto Http2ServerTransport::ReadLoop() { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport ReadLoop Factory"; + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ReadLoop Factory"; return AssertResultType(Loop([this]() { return TrySeq(ReadAndProcessOneFrame(), []() -> LoopCtl { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport ReadLoop Continue"; + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ReadLoop Continue"; return Continue(); }); })); } -auto Http2ServerTransport::OnReadLoopEnded() { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport OnReadLoopEnded Factory"; - return - [self = RefAsSubclass()](absl::Status status) { - // TODO(tjagtap) : [PH2][P2] : Implement this. - GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport OnReadLoopEnded Promise Status=" << status; - GRPC_UNUSED absl::Status error_status = - self->HandleError(Http2Status::AbslConnectionError( - status.code(), std::string(status.message()))); - }; -} +////////////////////////////////////////////////////////////////////////////// +// Transport Write Path + +// absl::Status Http2ServerTransport::PrepareControlFrames() { +// FrameSender frame_sender = +// transport_write_context_.GetWriteCycle().GetFrameSender(); +// if (transport_write_context_.IsFirstWrite()) { +// // RFC9113: That is, the connection preface starts with the string +// // "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n". This connection preface string +// will +// // be sent as part of the first write cycle. This sequence MUST be +// followed +// // by a SETTINGS frame, which MAY be empty. +// settings_->MaybeGetSettingsAndSettingsAckFrames(flow_control_, +// frame_sender); +// // TODO(tjagtap) [PH2][P2][Server] : This will be opposite for server. We +// // must read before we write for the server. So the ReadLoop will be +// Spawned +// // just after the constructor, and the write loop should be spawned only +// // after the first SETTINGS frame is completely received. +// // +// // Because the client is expected to write before it reads, we spawn the +// // ReadLoop of the client only after the first write is queued. +// SpawnGuardedTransportParty("ReadLoop", ReadLoop()); +// } + +// // Order of Control Frames is important. +// // 1. GOAWAY - This is first because if this is the final GoAway, then we +// may +// // not need to send anything else to the peer. +// // 2. SETTINGS and SETTINGS ACK +// // 3. PING and PING acks. +// // 4. WINDOW_UPDATE +// // 5. Custom gRPC security frame + +// goaway_manager_.MaybeGetSerializedGoawayFrame(frame_sender); +// bool should_spawn_security_frame_loop = false; +// http2::Http2ErrorCode apply_status = +// settings_->MaybeReportAndApplyBufferedPeerSettings( +// event_engine_.get(), should_spawn_security_frame_loop); +// if (should_spawn_security_frame_loop) { +// const SecurityFrameHandler::EndpointExtensionState state = +// security_frame_handler_->Initialize(event_engine_); +// if (state.is_set) { +// SpawnInfallibleTransportParty("SecurityFrameLoop", +// UntilTransportClosed(SecurityFrameLoop())); +// } +// } + +// if (!goaway_manager_.IsImmediateGoAway() && +// apply_status == http2::Http2ErrorCode::kNoError) { +// EnforceLatestIncomingSettings(); +// settings_->MaybeGetSettingsAndSettingsAckFrames(flow_control_, +// frame_sender); +// MaybeSpawnDelayedPing(ping_manager_->MaybeGetSerializedPingFrames( +// frame_sender, NextAllowedPingInterval())); +// MaybeGetWindowUpdateFrames(frame_sender); +// security_frame_handler_->MaybeAppendSecurityFrame(frame_sender); +// } + +// if (apply_status != http2::Http2ErrorCode::kNoError) { +// return HandleError(std::nullopt, +// Http2Status::Http2ConnectionError( +// apply_status, "Failed to apply incoming +// settings")); +// } + +// return absl::OkStatus(); +// } + +// auto Http2ServerTransport::MaybeWriteUrgentFrames() { +// return AssertResultType(If( +// transport_write_context_.GetWriteCycle().CanSerializeUrgentFrames(), +// [this]() mutable { +// WriteCycle& write_cycle = transport_write_context_.GetWriteCycle(); +// const uint64_t buffer_length = write_cycle.GetUrgentFrameCount(); +// ztrace_collector_->Append(PromiseEndpointWriteTrace{buffer_length}); +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MaybeWriteUrgentFrames frame count: " +// << buffer_length; +// return EndpointWrite(write_cycle.SerializeUrgentFrames( +// WriteCycle::SerializeStats{should_reset_ping_clock_})); +// }, +// []() { return absl::OkStatus(); })); +// } + +// void Http2ServerTransport::NotifyFramesWriteDone() { +// // Notify Control modules that we have sent the frames. +// // All notifications are expected to be synchronous. +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::NotifyFramesWriteDone"; +// reader_state_.ResumeReadLoopIfPaused(); +// MaybeSpawnPingTimeout(ping_manager_->NotifyPingSent()); +// goaway_manager_.NotifyGoawaySent(); +// MaybeSpawnWaitForSettingsTimeout(); +// } + +// void Http2ServerTransport::NotifyUrgentFramesWriteDone() {} + +// absl::Status Http2ServerTransport::DequeueStreamFrames( +// RefCountedPtr stream, WriteCycle& write_cycle) { +// // write_bytes_remaining_ is passed as an upper bound on the max +// // number of tokens that can be dequeued to prevent dequeuing huge +// // data frames when write_bytes_remaining_ is very low. As the +// // available transport tokens can only range from 0 to 2^31 - 1, +// // we are clamping the write_bytes_remaining_ to that range. +// FrameSender frame_sender = write_cycle.GetFrameSender(); +// const uint32_t tokens = GetMaxPermittedDequeue( +// flow_control_, stream->GetStreamFlowControl(), +// write_cycle.GetWriteBytesRemaining(), settings_->peer()); +// const uint32_t stream_flow_control_tokens = static_cast( +// GetStreamFlowControlTokens(stream->GetStreamFlowControl(), +// settings_->peer())); +// stream->GetStreamFlowControl().ReportIfStalled( +// /*is_client=*/kIsClient, stream->GetStreamId(), settings_->peer()); +// StreamDataQueue::DequeueResult result = +// stream->DequeueFrames(tokens, stream_flow_control_tokens, +// settings_->peer().max_frame_size(), encoder_, +// frame_sender); +// ProcessOutgoingDataFrameFlowControl(stream->GetStreamFlowControl(), +// result.flow_control_tokens_consumed); +// if (result.is_writable) { +// // Stream is still writable. Enqueue it back to the writable +// // stream list. +// absl::Status status = writable_stream_list_.EnqueueWrapper( +// stream, result.priority, AreTransportFlowControlTokensAvailable()); + +// if (GPR_UNLIKELY(!status.ok())) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::DequeueStreamFrames Failed to " +// "enqueue stream " +// << stream->GetStreamId() << " with status: " << status; +// // Close transport if we fail to enqueue stream. +// return HandleError(std::nullopt, ToHttpOkOrConnError(status)); +// } +// } + +// // If the stream is aborted before initial metadata is dequeued, we will +// // not dequeue any frames from the stream data queue (including +// RST_STREAM). +// // Because of this, we will add the stream to the stream_list only when +// // we are guaranteed to send initial metadata on the wire. If the above +// // mentioned scenario occurs, the stream ref will be dropped by the +// // multiplexer loop as the stream will never be writable again. +// Additionally, +// // the other two stream refs, CallHandler OnDone and OutboundLoop will be +// // dropped by Callv3 triggering cleaning up the stream object. +// if (result.IsInitialMetadataDequeued()) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::DequeueStreamFrames InitialMetadataDequeued +// " +// "stream_id = " +// << stream->GetStreamId(); +// stream->SentInitialMetadata(); +// // After this point, initial metadata is guaranteed to be sent out. +// AddToStreamList(stream); +// } + +// if (result.IsHalfCloseDequeued()) { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::DequeueStreamFrames " +// "HalfCloseDequeued stream_id = " +// << stream->GetStreamId(); +// stream->MarkHalfClosedLocal(); + +// if (stream->IsTrailingMetadataReceived()) { +// CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true, +// /*close_writes=*/true}); +// } +// } +// if (result.IsResetStreamDequeued()) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::DequeueStreamFrames ResetStreamDequeued " +// "stream_id = " +// << stream->GetStreamId(); +// stream->MarkHalfClosedLocal(); +// CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true, +// /*close_writes=*/true}); +// } + +// // Update the write_bytes_remaining_ based on the bytes consumed +// // in the current dequeue. +// // Note: We do tend to overestimate the bytes consumed here. This may +// result +// // in sending less data than target_write_size_. + +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::DequeueStreamFrames " +// "After dequeue: " +// << write_cycle.DebugString() +// << " stream_id = " << stream->GetStreamId() +// << " is_writable = " << result.is_writable +// << " stream_priority = " +// << static_cast(result.priority); +// return absl::OkStatus(); +// } + +// This MultiplexerLoop promise is responsible for Multiplexing multiple gRPC +// Requests (HTTP2 Streams) and writing them into one common endpoint. +// auto Http2ServerTransport::MultiplexerLoop() { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::MultiplexerLoop Factory"; +// return AssertResultType(UntilTransportClosed(Loop([this]() { +// return TrySeq( +// Map(writable_stream_list_.WaitForReady( +// AreTransportFlowControlTokensAvailable()), +// [this](absl::StatusOr status) -> absl::Status { +// if (GPR_UNLIKELY(!status.ok())) { +// return status.status(); +// } +// transport_write_context_.StartWriteCycle(); +// GRPC_HTTP2_SERVER_DLOG << +// "Http2ServerTransport::MultiplexerLoop " +// "Created WriteCycle: " +// << +// transport_write_context_.DebugString(); +// return PrepareControlFrames(); +// }), +// [this] { +// return Map(MaybeWriteUrgentFrames(), [this](absl::Status status) { +// if (GPR_UNLIKELY(!status.ok())) { +// return status; +// } +// NotifyUrgentFramesWriteDone(); +// WriteCycle& write_cycle = +// transport_write_context_.GetWriteCycle(); GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MultiplexerLoop " +// << "Starting to iterate over writable stream list " +// << write_cycle.DebugString(); +// // Drain all the writable streams till we have written +// // max_write_size_ bytes of data or there is no more data to +// send. +// // In some cases, we may write more than max_write_size_ +// bytes(like +// // writing metadata). +// while (write_cycle.GetWriteBytesRemaining() > 0) { +// std::optional> optional_stream = +// writable_stream_list_.ImmediateNext( +// AreTransportFlowControlTokensAvailable()); +// if (!optional_stream.has_value()) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MultiplexerLoop " +// "No writable streams available "; +// break; +// } +// RefCountedPtr stream = +// std::move(optional_stream.value()); GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MultiplexerLoop " +// "Next writable stream id = " +// << stream->GetStreamId() +// << " is_closed_for_writes = " << +// stream->IsClosedForWrites(); + +// if (stream->GetStreamId() == kInvalidStreamId) { +// GRPC_DCHECK(stream->IsStreamIdle()); +// // TODO(akshitpatel) : [PH2][P5] : We will waste a stream id +// in +// // the rare scenario where the stream is aborted before it +// can +// // be written to. This is a possible area to optimize in +// future. absl::Status status = InitializeStream(*stream); if +// (!status.ok()) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MultiplexerLoop " +// "Failed to assign stream id and add to stream list +// for" " stream: " +// << stream.get() << " closing this stream."; +// BeginCloseStream(std::move(stream), +// /*reset_stream_error_code=*/std::nullopt, +// CancelledServerMetadataFromStatus(status)); +// continue; +// } +// } + +// if (GPR_LIKELY(!stream->IsClosedForWrites())) { +// absl::Status status = DequeueStreamFrames( +// std::move(stream), +// transport_write_context_.GetWriteCycle()); +// if (GPR_UNLIKELY(!status.ok())) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MultiplexerLoop " +// "Failed to dequeue stream frames with status: " +// << status; +// return status; +// } +// } +// } + +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::MultiplexerLoop +// " +// "After draining all writable streams " +// << write_cycle.DebugString(); + +// return absl::OkStatus(); +// }); +// }, +// [this]() { +// return Map(SerializeAndWrite(), [this](absl::Status status) { +// if (GPR_UNLIKELY(!status.ok())) { +// return status; +// } +// NotifyFramesWriteDone(); +// return absl::OkStatus(); +// }); +// }, +// [this]() -> LoopCtl { +// if (should_reset_ping_clock_) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MultiplexerLoop ResetPingClock"; +// ping_manager_->ResetPingClock(/*is_client=*/kIsClient); +// should_reset_ping_clock_ = false; +// } +// transport_write_context_.EndWriteCycle(); +// return Continue(); +// }); +// }))); +// } auto Http2ServerTransport::WriteFromQueue() { GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport WriteFromQueue Factory"; @@ -335,45 +1246,1005 @@ auto Http2ServerTransport::WriteLoop() { })); } -auto Http2ServerTransport::OnWriteLoopEnded() { - GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport OnWriteLoopEnded Factory"; - return - [self = RefAsSubclass()](absl::Status status) { - // TODO(tjagtap) : [PH2][P2] : Implement this. +////////////////////////////////////////////////////////////////////////////// +// Spawn Helpers and Promise Helpers + +////////////////////////////////////////////////////////////////////////////// +// Settings + +void Http2ServerTransport::EnforceLatestIncomingSettings() { + encoder_.SetMaxTableSize(settings_->peer().header_table_size()); +} + +auto Http2ServerTransport::WaitForSettingsTimeoutOnDone() { + return [self = RefAsSubclass()](absl::Status status) { + if (!status.ok()) { + GRPC_UNUSED absl::Status result = self->HandleError( + std::nullopt, Http2Status::Http2ConnectionError( + Http2ErrorCode::kProtocolError, + std::string(RFC9113::kSettingsTimeout))); + } + }; +} + +void Http2ServerTransport::MaybeSpawnWaitForSettingsTimeout() { + if (settings_->ShouldSpawnWaitForSettingsTimeout()) { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::MaybeSpawnWaitForSettingsTimeout Spawning"; + SpawnWithOnDoneTransportParty("WaitForSettingsTimeout", + settings_->WaitForSettingsTimeout(), + WaitForSettingsTimeoutOnDone()); + } +} + +////////////////////////////////////////////////////////////////////////////// +// Flow Control and BDP + +// Equivalent to grpc_chttp2_act_on_flowctl_action in chttp2_transport.cc +void Http2ServerTransport::ActOnFlowControlAction( + const chttp2::FlowControlAction& action, Stream* stream) { + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ActOnFlowControlAction" + << action.DebugString(); + if (action.send_stream_update() != kNoActionNeeded) { + if (GPR_LIKELY(stream != nullptr)) { + GRPC_DCHECK_GT(stream->GetStreamId(), 0u); + if (stream->CanSendWindowUpdateFrames()) { + flow_control_.AddStreamToWindowUpdateList(stream->GetStreamId()); GRPC_HTTP2_SERVER_DLOG - << "Http2ServerTransport OnWriteLoopEnded Promise Status=" - << status; - GRPC_UNUSED absl::Status error_status = - self->HandleError(Http2Status::AbslConnectionError( - status.code(), std::string(status.message()))); - }; + << "Http2ServerTransport::ActOnFlowControlAction " + "added stream " + << stream->GetStreamId() << " to window_update_list_"; + } + } else { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::ActOnFlowControlAction stream is null"; + } + } + + ActOnFlowControlActionSettings( + action, settings_->mutable_local(), + enable_preferred_rx_crypto_frame_advertisement_); + + if (action.AnyUpdateImmediately()) { + // Prioritize sending flow control updates over reading data. If we + // continue reading while urgent flow control updates are pending, we might + // exhaust the flow control window. This prevents us from sending window + // updates to the peer, causing the peer to block unnecessarily while + // waiting for flow control tokens. + reader_state_.SetPauseReadLoop(); + if (!TriggerWriteCycleOrHandleError()) { + return; + } + + GRPC_HTTP2_SERVER_DLOG << "Update Immediately : " + << action.ImmediateUpdateReasons(); + } } -Http2ServerTransport::Http2ServerTransport( - PromiseEndpoint endpoint, GRPC_UNUSED const ChannelArgs& channel_args, - std::shared_ptr event_engine) - : endpoint_(std::move(endpoint)), outgoing_frames_(kMpscSize) { - // TODO(tjagtap) : [PH2][P2] : Save and apply channel_args. - // TODO(tjagtap) : [PH2][P2] : Initialize settings_ to appropriate values. +void Http2ServerTransport::MaybeGetWindowUpdateFrames( + FrameSender& frame_sender) { + frame_sender.ReserveRegularFrames(flow_control_.window_update_list_size() + + 1); + MaybeAddTransportWindowUpdateFrame(flow_control_, frame_sender); + for (const uint32_t stream_id : flow_control_.DrainWindowUpdateList()) { + RefCountedPtr stream = LookupStream(stream_id); + if (stream != nullptr) { + MaybeAddStreamWindowUpdateFrame(*stream, frame_sender); + } + } +} + +auto Http2ServerTransport::FlowControlPeriodicUpdateLoop() { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::FlowControlPeriodicUpdateLoop Factory"; + return AssertResultType( + Loop([this]() { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::FlowControlPeriodicUpdateLoop Loop"; + return TrySeq( + // TODO(tjagtap) [PH2][P2][BDP] Remove this static sleep when the + // BDP code is done. + Sleep(chttp2::kFlowControlPeriodicUpdateTimer), + [this]() -> Poll { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::FlowControlPeriodicUpdateLoop " + "PeriodicUpdate()"; + chttp2::FlowControlAction action = flow_control_.PeriodicUpdate(); + bool is_action_empty = action == chttp2::FlowControlAction(); + // This may trigger a write cycle + ActOnFlowControlAction(action, nullptr); + if (is_action_empty) { + // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is + // done. We must continue to do PeriodicUpdate once BDP is in + // place. + MutexLock lock(&transport_mutex_); + if (GetActiveStreamCountLocked() == 0) { + AddPeriodicUpdatePromiseWaker(); + return Pending{}; + } + } + return absl::OkStatus(); + }, + []() -> LoopCtl { return Continue{}; }); + })); +} + +////////////////////////////////////////////////////////////////////////////// +// Stream List Operations + +RefCountedPtr Http2ServerTransport::LookupStream(uint32_t stream_id) { + MutexLock lock(&transport_mutex_); + auto it = stream_list_.find(stream_id); + if (it == stream_list_.end()) { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::LookupStream Stream not found stream_id=" + << stream_id; + return nullptr; + } + return it->second; +} + +// void Http2ServerTransport::AddToStreamList(RefCountedPtr stream) { +// bool should_wake_periodic_updates = false; +// { +// MutexLock lock(&transport_mutex_); +// GRPC_DCHECK(stream != nullptr) << "stream is null"; +// GRPC_DCHECK_GT(stream->GetStreamId(), 0u) << "stream id is invalid"; +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::AddToStreamList for stream id: " +// << stream->GetStreamId(); +// const uint32_t stream_id = stream->GetStreamId(); +// stream_list_.emplace(stream_id, std::move(stream)); +// // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. +// if (GetActiveStreamCountLocked() == 1) { +// should_wake_periodic_updates = true; +// } +// } +// // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. +// if (should_wake_periodic_updates) { +// // Release the lock before you wake up another promise on the party. +// WakeupPeriodicUpdatePromise(); +// } +// } + +// absl::Status Http2ServerTransport::MaybeAddStreamToWritableStreamList( +// RefCountedPtr stream, +// const StreamDataQueue::StreamWritabilityUpdate +// result) { +// if (result.became_writable) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MaybeAddStreamToWritableStreamList Stream " +// "id: " +// << stream->GetStreamId() << " became writable"; +// // TODO(akshitpatel) [Perf]: Might be worth exploring if this funciton +// // should take a raw stream ptr and take a ref here. +// absl::Status status = +// writable_stream_list_.Enqueue(std::move(stream), result.priority); +// if (!status.ok()) { +// return HandleError( +// std::nullopt, +// Http2Status::Http2ConnectionError( +// Http2ErrorCode::kRefusedStream, +// "Failed to enqueue stream to writable stream list")); +// } +// } +// return absl::OkStatus(); +// } + +// absl::StatusOr Http2ServerTransport::NextStreamId() { +// if (next_stream_id_ > GetMaxAllowedStreamId()) { +// // TODO(tjagtap) : [PH2][P3] : Handle case if transport runs out of +// stream +// // ids +// // RFC9113 : Stream identifiers cannot be reused. Long-lived connections +// // can result in an endpoint exhausting the available range of stream +// // identifiers. A client that is unable to establish a new stream +// // identifier can establish a new connection for new streams. A server +// // that is unable to establish a new stream identifier can send a GOAWAY +// // frame so that the client is forced to open a new connection for new +// // streams. +// return absl::ResourceExhaustedError("No more stream ids available"); +// } +// // TODO(akshitpatel) : [PH2][P3] : There is a channel arg to delay +// // starting new streams instead of failing them. This needs to be +// // implemented. +// { +// // TODO(tjagtap) : [PH2][P1] : For a server we will have to do +// // this for incoming streams only. If a server receives more +// // streams from a client than is allowed by the clients settings, +// // whether or not we should fail is debatable. +// MutexLock lock(&transport_mutex_); +// if (GetActiveStreamCountLocked() >= +// settings_->peer().max_concurrent_streams()) { +// return absl::ResourceExhaustedError("Reached max concurrent streams"); +// } +// } + +// // RFC9113 : Streams initiated by a client MUST use odd-numbered stream +// // identifiers. +// uint32_t new_stream_id = std::exchange(next_stream_id_, next_stream_id_ + +// 2); if (GPR_UNLIKELY(next_stream_id_ > GetMaxAllowedStreamId())) { +// ReportDisconnection( +// absl::ResourceExhaustedError("Transport Stream IDs exhausted"), +// {}, // TODO(tjagtap) : [PH2][P2] : Report better disconnect info. +// "no_more_stream_ids"); +// } +// return new_stream_id; +// } + +////////////////////////////////////////////////////////////////////////////// +// Stream Operations + +// auto Http2ServerTransport::CallOutboundLoop(RefCountedPtr stream) { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::CallOutboundLoop"; +// GRPC_DCHECK(stream != nullptr); + +// auto send_message = [this, stream](MessageHandle&& message) mutable { +// return TrySeq( +// stream->EnqueueMessage(std::move(message)), +// [this, stream](const StreamWritabilityUpdate result) mutable { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::CallOutboundLoop " +// "Enqueued Message"; +// return MaybeAddStreamToWritableStreamList(std::move(stream), +// result); +// }); +// }; + +// auto send_initial_metadata = +// [this, stream](ClientMetadataHandle&& metadata) mutable { +// absl::StatusOr enqueue_result = +// stream->EnqueueInitialMetadata( +// std::forward(metadata)); +// if (GPR_UNLIKELY(!enqueue_result.ok())) { +// return enqueue_result.status(); +// } +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport CallOutboundLoop " +// "Enqueued Initial Metadata"; +// return MaybeAddStreamToWritableStreamList(std::move(stream), +// enqueue_result.value()); +// }; + +// auto send_half_closed = [this, stream]() mutable { +// absl::StatusOr enqueue_result = +// stream->EnqueueHalfClosed(); +// if (GPR_UNLIKELY(!enqueue_result.ok())) { +// return enqueue_result.status(); +// } +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport CallOutboundLoop " +// "Enqueued Half Closed"; +// return MaybeAddStreamToWritableStreamList(std::move(stream), +// enqueue_result.value()); +// }; + +// return GRPC_LATENT_SEE_PROMISE( +// "Ph2CallOutboundLoop", +// TrySeq( +// Map(stream->GetCallInitiator().PullClientInitialMetadata(), +// [send_initial_metadata = std::move(send_initial_metadata)]( +// ValueOrFailure metadata) mutable { +// if (GPR_UNLIKELY(!metadata.ok())) { +// return absl::InternalError( +// "Failed to pull client initial metadata"); +// } +// return std::move(send_initial_metadata)( +// TakeValue(std::move(metadata))); +// }), +// ForEach(MessagesFrom(stream->GetCallInitiator()), +// std::move(send_message)), [send_half_closed = +// std::move(send_half_closed)]() mutable { +// return std::move(send_half_closed)(); +// }, +// [stream]() mutable { +// return Map(stream->GetCallInitiator().WasCancelled(), [](bool +// cancelled) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::CallOutboundLoop End with " +// "cancelled=" +// << cancelled; +// return (cancelled) ? absl::CancelledError() : absl::OkStatus(); +// }); +// })); +// } + +// absl::Status Http2ServerTransport::InitializeStream(Stream& stream) { +// absl::StatusOr next_stream_id = NextStreamId(); +// if (!next_stream_id.ok()) { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::InitializeStream " +// "Failed to get next stream id for stream: " +// << &stream; +// return std::move(next_stream_id).status(); +// } +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::InitializeStream " +// "Assigned stream id: " +// << next_stream_id.value() << " to stream: " << +// &stream +// << ", allow_true_binary_metadata:" +// << settings_->peer().allow_true_binary_metadata(); +// stream.InitializeStream(next_stream_id.value(), +// settings_->peer().allow_true_binary_metadata(), +// settings_->acked().allow_true_binary_metadata()); +// return absl::OkStatus(); +// } + +// std::optional> Http2ServerTransport::MakeStream( +// CallHandler call_handler) { +// // https://datatracker.ietf.org/doc/html/rfc9113#name-stream-identifiers +// RefCountedPtr stream; +// stream = MakeRefCounted(call_handler, flow_control_); +// const bool on_done_added = SetOnDone(std::move(call_handler), stream); +// if (!on_done_added) return std::nullopt; +// return std::move(stream); +// } + +// This function is idempotent and MUST be called from the transport party. +// All the scenarios that can lead to this function being called are: +// 1. Reading a RST stream frame: In this case, the stream is immediately +// closed for reads and writes and removed from the stream_list_. +// 2. Reading a Trailing Metadata frame: There are two possible scenarios: +// a. The stream is closed for writes: Close the stream for reads and writes +// and remove the stream from the stream_list_. +// b. The stream is NOT closed for writes: Stream is kept open for reads and +// writes. CallHandler OnDone will trigger sending a half close frame. If +// before the multiplexer loop triggers sending a half close a RST stream +// is read, the stream is closed for reads and writes immediately and the +// half close is discarded. If no RST stream is read, the stream is closed +// for reads and writes upon sending the half close frame from the +// multiplexer loop. +// 3. Hitting error condition in the transport: In this case, RST stream is +// enqueued and the stream is closed for reads immediately. This implies we +// reduce the number of active streams inline. When multiplexer loop +// processes the RST stream frame, the stream ref will dropped. The other +// stream ref will be dropped when CallHandler's OnDone is executed causing +// the stream to be destroyed. CallHandlers OnDone also tries to enqueue a +// RST stream frame. This is a no-op at this point. +// 4. Application abort: In this case, CallHandler OnDone will enqueue RST +// stream frame to the stream data queue. The multiplexer loop will send the +// reset stream frame and close the stream from reads and writes. +// 5. Transport close: This takes up the same path as case 3. +// In all the above cases, trailing metadata is pushed to the call spine. +// Note: The stream ref is held in atmost 3 places: +// 1. stream_list_ : This is released when the stream is closed for reads. +// 2. CallHandler OnDone : This is released when Trailing Metadata is pushed to +// the call spine. +// 3. List of writable streams : This is released after the final frame is +// dequeued from the StreamDataQueue. +// void Http2ServerTransport::BeginCloseStream( +// RefCountedPtr stream, +// std::optional reset_stream_error_code, +// ServerMetadataHandle&& metadata, DebugLocation whence) { +// if (stream == nullptr) { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::BeginCloseStream stream +// " +// "is null reset_stream_error_code=" +// << (reset_stream_error_code.has_value() +// ? absl::StrCat(*reset_stream_error_code) +// : "nullopt") +// << " metadata=" << metadata->DebugString(); +// return; +// } + +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::BeginCloseStream for stream id: " +// << stream->GetStreamId() << " error_code=" +// << (reset_stream_error_code.has_value() +// ? absl::StrCat(*reset_stream_error_code) +// : "nullopt") +// << " ServerMetadata=" << metadata->DebugString() +// << " location=" << whence.file() << ":" << whence.line(); + +// bool close_reads = false; +// bool close_writes = false; +// if (metadata->get(GrpcCallWasCancelled())) { +// if (!reset_stream_error_code) { +// // Callers taking this path: +// // 1. Reading a RST stream frame (will not send any frame out). +// // 2. Closing a stream before initial metadata is sent. +// close_reads = true; +// close_writes = true; +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::BeginCloseStream for stream id: " +// << stream->GetStreamId() << " close_reads= " << close_reads +// << " close_writes= " << close_writes; +// } else { +// // Callers taking this path: +// // 1. Processing Error in transport (will send reset stream from here). +// absl::StatusOr enqueue_result = +// stream->EnqueueResetStream(reset_stream_error_code.value()); +// GRPC_HTTP2_SERVER_DLOG << "Enqueued ResetStream with error code=" +// << reset_stream_error_code.value() +// << " status=" << enqueue_result.status(); +// if (enqueue_result.ok()) { +// GRPC_UNUSED absl::Status status = +// MaybeAddStreamToWritableStreamList(stream, +// enqueue_result.value()); +// } +// close_reads = true; +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::BeginCloseStream for stream id: " +// << stream->GetStreamId() << " close_reads= " << close_reads +// << " close_writes= " << close_writes; +// } +// } else { +// // Callers taking this path: +// // 1. Reading Trailing Metadata (MAY send half close from OnDone). +// // If a half close frame has already been sent, we should close the +// stream +// // for reads and writes. +// if (stream->IsHalfClosedLocal() || stream->IsStreamClosed()) { +// close_reads = true; +// close_writes = true; +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::BeginCloseStream for stream id: " +// << stream->GetStreamId() << " close_reads= " << close_reads +// << " close_writes= " << close_writes; +// } +// } + +// if (close_reads || close_writes) { +// CloseStream(*stream, CloseStreamArgs{close_reads, close_writes}, whence); +// } + +// // If the call was cancelled, the stream MUST be closed for reads. +// GRPC_DCHECK(metadata->get(GrpcCallWasCancelled()) ? close_reads : true); + +// // This maybe called multiple times while closing a stream. In CallV3, the +// // flow for pushing server trailing metadata is idempotent. However, there +// is +// // a subtle difference. When we push server trailing metadata with a +// cancelled +// // status PushServerTrailingMetadata is spawned inline on the Call party +// // whereas for the non-cancelled status, PushServerTrailingMetadata is +// // spawned in the server_to_client spawn serializer. Because of this, in +// // case when the server pushes trailing metadata (non-cancelled) followed +// by a +// // RST stream with cancelled status, it is possible that the cancelled +// // trailing metadata (for RST stream) is processed before. This would +// result +// // in losing the actual status/message pushed by the server. +// // To address this, we push the server trailing metadata to the stream only +// // if it is not pushed already. +// stream->MaybePushServerTrailingMetadata(std::move(metadata)); +// } + +// This function MUST be idempotent. This function MUST be called from the +// transport party. +// void Http2ServerTransport::CloseStream(Stream& stream, CloseStreamArgs args, +// DebugLocation whence) { +// std::optional close_transport_error; + +// { +// // TODO(akshitpatel) : [PH2][P3] : Measure the impact of holding mutex +// // throughout this function. +// MutexLock lock(&transport_mutex_); +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::CloseStream for stream id: " +// << stream.GetStreamId() << " close_reads=" << args.close_reads +// << " close_writes=" << args.close_writes +// << " incoming_headers_=" << incoming_headers_.DebugString() +// << " location=" << whence.file() << ":" << whence.line(); + +// if (args.close_writes) { +// stream.SetWriteClosed(); +// } + +// if (args.close_reads) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::CloseStream for stream id: " +// << stream.GetStreamId() << " closing stream for reads."; +// // If the stream is closed while reading HEADER/CONTINUATION frames, we +// // should still parse the enqueued buffer to maintain HPACK state +// between +// // peers. +// if (incoming_headers_.IsWaitingForContinuationFrame()) { +// Http2Status result = http2::ParseAndDiscardHeaders( +// parser_, SliceBuffer(), +// HeaderAssembler::ParseHeaderArgs{ +// /*is_initial_metadata=*/!incoming_headers_.HeaderHasEndStream(), +// /*is_end_headers=*/false, +// /*is_client=*/kIsClient, +// /*max_header_list_size_soft_limit=*/ +// incoming_headers_.soft_limit(), +// /*max_header_list_size_hard_limit=*/ +// settings_->acked().max_header_list_size(), +// /*stream_id=*/incoming_headers_.GetStreamId(), +// }, +// &stream, /*original_status=*/Http2Status::Ok()); +// if (result.GetType() == +// Http2Status::Http2ErrorType::kConnectionError) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::CloseStream for stream id: " +// << stream.GetStreamId() << " failed to partially process +// header: " +// << result.DebugString(); +// close_transport_error.emplace(std::move(result)); +// } +// } + +// stream_list_.erase(stream.GetStreamId()); +// if (!close_transport_error.has_value() && CanCloseTransportLocked()) { +// // TODO(akshitpatel) : [PH2][P3] : Is kInternalError the right error +// // code to use here? IMO it should be kNoError. +// close_transport_error.emplace(Http2Status::Http2ConnectionError( +// Http2ErrorCode::kInternalError, +// std::string(RFC9113::kLastStreamClosed))); +// } +// } +// } + +// if (close_transport_error.has_value()) { +// GRPC_UNUSED absl::Status status = HandleError( +// /*stream_id=*/std::nullopt, std::move(*close_transport_error)); +// } +// } + +////////////////////////////////////////////////////////////////////////////// +// Ping Keepalive and Goaway + +// void Http2ServerTransport::MaybeSpawnPingTimeout( +// std::optional opaque_data) { +// if (opaque_data.has_value()) { +// SpawnGuardedTransportParty( +// "PingTimeout", [self = RefAsSubclass(), +// opaque_data = *opaque_data]() { +// return self->ping_manager_->TimeoutPromise(opaque_data); +// }); +// } +// } +// void Http2ServerTransport::MaybeSpawnDelayedPing( +// std::optional delayed_ping_wait) { +// if (delayed_ping_wait.has_value()) { +// SpawnGuardedTransportParty( +// "DelayedPing", [self = RefAsSubclass(), +// wait = *delayed_ping_wait]() { +// GRPC_HTTP2_PING_LOG << "Scheduling delayed ping after wait=" << +// wait; return self->ping_manager_->DelayedPingPromise(wait); +// }); +// } +// } + +// absl::Status Http2ServerTransport::AckPing(uint64_t opaque_data) { +// // It is possible that the PingRatePolicy may decide to not send a ping +// // request (in cases like the number of inflight pings is too high). +// // When this happens, it becomes important to ensure that if a ping ack +// // is received and there is an "important" outstanding ping request, we +// // should retry to send it out now. +// if (ping_manager_->AckPing(opaque_data)) { +// if (ping_manager_->ImportantPingRequested()) { +// return TriggerWriteCycle(); +// } +// } else { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::AckPing Unknown ping " +// "response received for ping id=" +// << opaque_data; +// } + +// return absl::OkStatus(); +// } + +// void Http2ServerTransport::MaybeSpawnKeepaliveLoop() { +// if (keepalive_manager_->IsKeepAliveLoopNeeded()) { +// SpawnGuardedTransportParty( +// "KeepaliveLoop", [self = RefAsSubclass()]() { +// return self->keepalive_manager_->KeepaliveLoop(); +// }); +// } +// } + +////////////////////////////////////////////////////////////////////////////// +// Error Path and Close Path + +// void Http2ServerTransport::MaybeSpawnCloseTransport(Http2Status http2_status, +// DebugLocation whence) { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::MaybeSpawnCloseTransport " +// "status=" +// << http2_status << " location=" << whence.file() << +// ":" +// << whence.line(); + +// // Free up the stream_list at this point. This would still allow the frames +// // in the MPSC to be drained and block any additional frames from being +// // enqueued. Additionally this also prevents additional frames with +// non-zero +// // stream_ids from being processed by the read loop. +// ReleasableMutexLock lock(&transport_mutex_); +// if (is_transport_closed_) { +// lock.Release(); +// return; +// } +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::MaybeSpawnCloseTransport " +// "Initiating transport close"; +// is_transport_closed_ = true; +// absl::flat_hash_map> stream_list = +// std::move(stream_list_); +// stream_list_.clear(); +// ReportDisconnectionLocked( +// http2_status.GetAbslConnectionError(), {}, +// absl::StrCat("Transport closed: ", +// http2_status.DebugString()).c_str()); +// lock.Release(); + +// SpawnInfallibleTransportParty( +// "CloseTransport", [self = RefAsSubclass(), +// stream_list = std::move(stream_list), +// http2_status = std::move(http2_status)]() mutable { +// self->security_frame_handler_->OnTransportClosed(); +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::MaybeSpawnCloseTransport " +// "Cleaning up call stacks"; +// // Clean up the call stacks for all active streams. +// for (const auto& pair : stream_list) { +// // There is no merit in transitioning the stream to +// // closed state here as the subsequent lookups would +// // fail. Also, as this is running on the transport +// // party, there would not be concurrent access to the stream. +// RefCountedPtr stream = pair.second; +// self->BeginCloseStream(std::move(stream), +// Http2ErrorCodeToFrameErrorCode( +// http2_status.GetConnectionErrorCode()), +// CancelledServerMetadataFromStatus( +// http2_status.GetAbslConnectionError())); +// } + +// // RFC9113 : A GOAWAY frame might not immediately precede closing of +// // the connection; a receiver of a GOAWAY that has no more use for +// the +// // connection SHOULD still send a GOAWAY frame before terminating the +// // connection. +// return Map( +// // TODO(akshitpatel) : [PH2][P4] : This is creating a copy of +// // the debug data. Verify if this is causing a performance +// // issue. +// Race(AssertResultType( +// self->goaway_manager_.RequestGoaway( +// http2_status.GetConnectionErrorCode(), +// /*debug_data=*/ +// Slice::FromCopiedString( +// http2_status.GetAbslConnectionError().message()), +// kLastIncomingStreamIdClient, /*immediate=*/true)), +// // Failsafe to close the transport if goaway is not +// // sent within kGoawaySendTimeoutSeconds seconds. +// Sleep(Duration::Seconds(kGoawaySendTimeoutSeconds))), +// [self](auto) mutable { +// self->CloseTransport(); +// return Empty{}; +// }); +// ; +// }); +// } + +// bool Http2ServerTransport::CanCloseTransportLocked() const { +// // If there are no more streams and next stream id is greater than the +// // max allowed stream id, then no more streams can be created and it is +// // safe to close the transport. +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::CanCloseTransportLocked " +// "GetActiveStreamCountLocked=" +// << GetActiveStreamCountLocked() +// << " PeekNextStreamId=" << PeekNextStreamId() +// << " GetMaxAllowedStreamId=" +// << GetMaxAllowedStreamId(); +// return GetActiveStreamCountLocked() == 0 && +// PeekNextStreamId() > GetMaxAllowedStreamId(); +// } + +// void Http2ServerTransport::CloseTransport() { +// GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::CloseTransport"; + +// transport_closed_latch_.Set(); +// settings_->HandleTransportShutdown(event_engine_.get()); + +// // This is the only place where the general_party_ is reset. +// general_party_.reset(); +// } + +////////////////////////////////////////////////////////////////////////////// +// Misc Transport Stuff + +void Http2ServerTransport::ReportDisconnection( + const absl::Status& status, StateWatcher::DisconnectInfo disconnect_info, + const char* reason) { + MutexLock lock(&transport_mutex_); + ReportDisconnectionLocked(status, disconnect_info, reason); +} +void Http2ServerTransport::ReportDisconnectionLocked( + const absl::Status& status, StateWatcher::DisconnectInfo disconnect_info, + const char* reason) { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::ReportDisconnectionLocked status=" + << status.ToString() << "; reason=" << reason; + state_tracker_.SetState(GRPC_CHANNEL_TRANSIENT_FAILURE, status, reason); + NotifyStateWatcherOnDisconnectLocked(status, disconnect_info); +} + +// bool Http2ServerTransport::SetOnDone(CallHandler call_handler, +// RefCountedPtr stream) { +// return call_handler.OnDone([self = RefAsSubclass(), +// stream = +// std::move(stream)](bool cancelled) mutable +// { +// GRPC_HTTP2_SERVER_DLOG << "PH2: Client call " << self.get() +// << " id=" << stream->GetStreamId() +// << " done: cancelled=" << cancelled; +// absl::StatusOr enqueue_result; +// GRPC_HTTP2_SERVER_DLOG << "PH2: Client call " << self.get() +// << " id=" << stream->GetStreamId() +// << " done: stream=" << stream.get() +// << " cancelled=" << cancelled; + +// // If the stream is already closed for writes, then we don't need to +// // enqueue the reset stream or the half closed frame. +// if (stream->IsClosedForWrites()) { +// GRPC_HTTP2_SERVER_DLOG << "PH2: Client call " << self.get() +// << " id=" << stream->GetStreamId() +// << " done: stream already closed for writes"; +// return; +// } + +// if (cancelled) { +// // In most of the cases, EnqueueResetStream would be a no-op as +// // BeginCloseStream would have already enqueued the reset stream. +// // Currently only Aborts from application will actually enqueue +// // the reset stream here. +// enqueue_result = stream->EnqueueResetStream( +// static_cast(Http2ErrorCode::kCancel)); +// GRPC_HTTP2_SERVER_DLOG << "Enqueued ResetStream with error code=" +// << +// static_cast(Http2ErrorCode::kCancel) +// << " status=" << enqueue_result.status(); +// } else { +// enqueue_result = stream->EnqueueHalfClosed(); +// GRPC_HTTP2_SERVER_DLOG << "Enqueued HalfClosed with result=" +// << enqueue_result.status(); +// } + +// if (GPR_LIKELY(enqueue_result.ok())) { +// GRPC_HTTP2_SERVER_DLOG +// << "Http2ServerTransport::SetOnDone " +// "MaybeAddStreamToWritableStreamList for stream= " +// << stream->GetStreamId() << " enqueue_result={became_writable=" +// << enqueue_result.value().became_writable << ", priority=" +// << static_cast(enqueue_result.value().priority) << "}"; +// GRPC_UNUSED absl::Status status = +// self->MaybeAddStreamToWritableStreamList(std::move(stream), +// enqueue_result.value()); +// } +// }); +// } + +void Http2ServerTransport::ReadChannelArgs(const ChannelArgs& channel_args, + TransportChannelArgs& args) { + http2::ReadChannelArgs(channel_args, args, settings_->mutable_local(), + flow_control_, + /*is_client=*/kIsClient); + + // Assign the channel args to the member variables. + keepalive_time_ = args.keepalive_time; + incoming_headers_.set_soft_limit(args.max_header_list_size_soft_limit); + keepalive_permit_without_calls_ = args.keepalive_permit_without_calls; + enable_preferred_rx_crypto_frame_advertisement_ = + args.enable_preferred_rx_crypto_frame_advertisement; + test_only_ack_pings_ = args.test_only_ack_pings; + + if (args.initial_sequence_number > 0) { + next_stream_id_ = args.initial_sequence_number; + } + + settings_->SetSettingsTimeout(args.settings_timeout); + if (args.max_usable_hpack_table_size >= 0) { + encoder_.SetMaxUsableSize(args.max_usable_hpack_table_size); + } +} + +////////////////////////////////////////////////////////////////////////////// +// Inner Classes and Structs + +std::unique_ptr +Http2ServerTransport::PingSystemInterfaceImpl::Make( + Http2ServerTransport* transport) { + return std::make_unique( + PingSystemInterfaceImpl(transport)); +} + +absl::Status Http2ServerTransport::PingSystemInterfaceImpl::TriggerWrite() { + return transport_->TriggerWriteCycle(); +} + +Promise +Http2ServerTransport::PingSystemInterfaceImpl::PingTimeout() { + GRPC_HTTP2_SERVER_DLOG << "Ping timeout at time: " << Timestamp::Now(); + + // TODO(akshitpatel) : [PH2][P2] : The error code here has been chosen + // based on CHTTP2's usage of GRPC_STATUS_UNAVAILABLE (which corresponds + // to kRefusedStream). However looking at RFC9113, definition of + // kRefusedStream doesn't seem to fit this case. We should revisit this + // and update the error code. + return Immediate(transport_->HandleError( + std::nullopt, + Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream, + GRPC_CHTTP2_PING_TIMEOUT_STR))); +} + +std::unique_ptr +Http2ServerTransport::KeepAliveInterfaceImpl::Make( + Http2ServerTransport* transport) { + return std::make_unique( + KeepAliveInterfaceImpl(transport)); +} + +Promise +Http2ServerTransport::KeepAliveInterfaceImpl::SendPingAndWaitForAck() { + return TrySeq( + [transport = transport_] { return transport->TriggerWriteCycle(); }, + [transport = transport_] { return transport->WaitForPingAck(); }); +} + +Promise +Http2ServerTransport::KeepAliveInterfaceImpl::OnKeepAliveTimeout() { + GRPC_HTTP2_SERVER_DLOG << "Keepalive timeout triggered"; + // TODO(akshitpatel) : [PH2][P2] : The error code here has been chosen + // based on CHTTP2's usage of GRPC_STATUS_UNAVAILABLE (which corresponds + // to kRefusedStream). However looking at RFC9113, definition of + // kRefusedStream doesn't seem to fit this case. We should revisit this + // and update the error code. + return Immediate(transport_->HandleError( + std::nullopt, + Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream, + GRPC_CHTTP2_KEEPALIVE_TIMEOUT_STR))); +} + +bool Http2ServerTransport::KeepAliveInterfaceImpl::NeedToSendKeepAlivePing() { + bool need_to_send_ping = false; + { + MutexLock lock(&transport_->transport_mutex_); + need_to_send_ping = (transport_->keepalive_permit_without_calls_ || + transport_->GetActiveStreamCountLocked() > 0); + } + return need_to_send_ping; +} + +std::unique_ptr +Http2ServerTransport::GoawayInterfaceImpl::Make( + Http2ServerTransport* transport) { + return std::make_unique(GoawayInterfaceImpl(transport)); +} + +uint32_t Http2ServerTransport::GoawayInterfaceImpl::GetLastAcceptedStreamId() { + // TODO(akshitpatel) : [PH2][P1] : This function is not needed for a client. + // Implement this for the server. + return 0; +} + +////////////////////////////////////////////////////////////////////////////// +// Constructor, Destructor etc. + +Http2ServerTransport::Http2ServerTransport( + PromiseEndpoint endpoint, const ChannelArgs& channel_args, + std::shared_ptr event_engine, + absl::AnyInvocable)> on_receive_settings) + : channelz::DataSource(http2::CreateChannelzSocketNode( + endpoint.GetEventEngineEndpoint(), channel_args)), + outgoing_frames_(10), // TODO(akshitpatel) : [PH2][P0][Write] : Remove + event_engine_(std::move(event_engine)), + endpoint_(std::move(endpoint)), + settings_(MakeRefCounted( + std::move(on_receive_settings))), + should_reset_ping_clock_(false), + incoming_headers_(IncomingMetadataTracker::GetPeerString(endpoint_)), + transport_write_context_(kIsClient), + ping_manager_(std::nullopt), + keepalive_manager_(std::nullopt), + goaway_manager_(GoawayInterfaceImpl::Make(this)), + security_frame_handler_(MakeRefCounted()), + memory_owner_(channel_args.GetObject() + ->memory_quota() + ->CreateMemoryOwner()), + flow_control_( + "PH2_Server", + channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true), + &memory_owner_), + ztrace_collector_(std::make_shared()) { GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Constructor Begin"; + SourceConstructed(); // Initialize the general party and write party. - auto general_party_arena = SimpleArenaAllocator(0)->MakeArena(); - general_party_arena->SetContext(event_engine.get()); - general_party_ = Party::Make(std::move(general_party_arena)); + RefCountedPtr party_arena = SimpleArenaAllocator(0)->MakeArena(); + party_arena->SetContext(event_engine_.get()); + general_party_ = Party::Make(std::move(party_arena)); + + InitLocalSettings(settings_->mutable_local(), /*is_client=*/kIsClient); + TransportChannelArgs args; + ReadChannelArgs(channel_args, args); + + ping_manager_.emplace(channel_args, args.ping_timeout, + PingSystemInterfaceImpl::Make(this), event_engine_); + + // The keepalive loop is only spawned if the keepalive time is not infinity. + keepalive_manager_.emplace( + KeepAliveInterfaceImpl::Make(this), + ((args.keepalive_timeout < args.ping_timeout) ? args.keepalive_timeout + : Duration::Infinity()), + args.keepalive_time); + + GRPC_DCHECK(ping_manager_.has_value()); + GRPC_DCHECK(keepalive_manager_.has_value()); + SourceConstructed(); - general_party_->Spawn("ReadLoop", ReadLoop(), OnReadLoopEnded()); - general_party_->Spawn("WriteLoop", WriteLoop(), OnWriteLoopEnded()); GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Constructor End"; } Http2ServerTransport::~Http2ServerTransport() { - // TODO(tjagtap) : [PH2][P2] : Implement the needed cleanup GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Destructor Begin"; - general_party_.reset(); + // TODO(akshitpatel) : [PH2][P0][Close] : Remove call to + // HandleTransportShutdown() from here and plumb CloseTransport() correctly. + settings_->HandleTransportShutdown(event_engine_.get()); GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Destructor End"; } +////////////////////////////////////////////////////////////////////////////// +// Transport Functions + +void Http2ServerTransport::SetCallDestination( + RefCountedPtr unstarted_call_handler) { + // This is called once in the lifetime of the transport. + GRPC_CHECK(call_destination_ == nullptr); + GRPC_CHECK(unstarted_call_handler != nullptr); + call_destination_ = unstarted_call_handler; +} + +void Http2ServerTransport::PerformOp(GRPC_UNUSED grpc_transport_op*) { + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport PerformOp Begin"; + // TODO(tjagtap) : [PH2][P2] : Implement this function. + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport PerformOp End"; +} + +void Http2ServerTransport::Orphan() { + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Orphan Begin"; + SourceDestructing(); + // TODO(tjagtap) : [PH2][P2] : Implement the needed cleanup + general_party_.reset(); + Unref(); + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport Orphan End"; +} + +void Http2ServerTransport::SpawnTransportLoops() { + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::SpawnTransportLoops Begin"; + // MaybeSpawnKeepaliveLoop(); + + // SpawnGuardedTransportParty( + // "FlowControlPeriodicUpdateLoop", + // UntilTransportClosed(FlowControlPeriodicUpdateLoop())); + + if (!TriggerWriteCycleOrHandleError()) { + return; + } + // For Client, write happens before read. So MultiplexerLoop is spawned first. + // ReadLoop is spawned after the first write. + // For Server, read happens before write. So ReadLoop is spawned first. + // MultiplexerLoop is spawned after the first read. + SpawnGuardedTransportParty("ReadLoop", UntilTransportClosed(ReadLoop())); + + // TODO(tjagtap) : [PH2][P0] : Spawn MultiplexerLoop after 1st read completes. + // TODO(tjagtap) : [PH2][P0] : Remove this when MultiplexerLoop is implemented + SpawnGuardedTransportParty("WriteLoop", WriteLoop()); + + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::SpawnTransportLoops End"; +} + +void Http2ServerTransport::InitializeAndSpawnTransportLoops() { + SpawnGuardedTransportParty( + "SpawnTransportLoops", [self = RefAsSubclass()] { + return Map( + self->EndpointReadSlice(GRPC_CHTTP2_CLIENT_CONNECT_STRLEN), + [self](absl::StatusOr status) -> absl::Status { + Http2Status result = ValidateIncomingConnectionPreface(status); + if (!result.IsOk()) { + return self->HandleError(std::nullopt, std::move(result)); + } + self->SpawnTransportLoops(); + return absl::OkStatus(); + }); + }); +} + } // namespace http2 } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.h b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.h index d24fbff60aa..c5b3d869171 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_server_transport.h @@ -19,44 +19,98 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SERVER_TRANSPORT_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SERVER_TRANSPORT_H +#include +#include +#include + +#include #include +#include +#include #include +#include +#include #include "src/core/call/call_destination.h" #include "src/core/call/call_spine.h" +#include "src/core/call/metadata.h" +#include "src/core/channelz/channelz.h" +#include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/frame.h" +#include "src/core/ext/transport/chttp2/transport/goaway.h" #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h" #include "src/core/ext/transport/chttp2/transport/hpack_parser.h" #include "src/core/ext/transport/chttp2/transport/http2_settings.h" #include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h" +#include "src/core/ext/transport/chttp2/transport/http2_settings_promises.h" +#include "src/core/ext/transport/chttp2/transport/http2_status.h" +#include "src/core/ext/transport/chttp2/transport/http2_transport.h" +#include "src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h" +#include "src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h" +#include "src/core/ext/transport/chttp2/transport/keepalive.h" +#include "src/core/ext/transport/chttp2/transport/ping_promise.h" +#include "src/core/ext/transport/chttp2/transport/security_frame.h" +#include "src/core/ext/transport/chttp2/transport/stream.h" +#include "src/core/ext/transport/chttp2/transport/stream_data_queue.h" +#include "src/core/ext/transport/chttp2/transport/writable_streams.h" +#include "src/core/lib/channel/channel_args.h" +#include "src/core/lib/iomgr/iomgr_fwd.h" +#include "src/core/lib/promise/activity.h" +#include "src/core/lib/promise/context.h" +#include "src/core/lib/promise/latch.h" +#include "src/core/lib/promise/map.h" #include "src/core/lib/promise/mpsc.h" #include "src/core/lib/promise/party.h" +#include "src/core/lib/promise/poll.h" +#include "src/core/lib/promise/promise.h" +#include "src/core/lib/promise/race.h" +#include "src/core/lib/resource_quota/memory_quota.h" +#include "src/core/lib/slice/slice_buffer.h" +#include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/promise_endpoint.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/debug_location.h" #include "src/core/util/grpc_check.h" +#include "src/core/util/orphanable.h" #include "src/core/util/ref_counted.h" #include "src/core/util/ref_counted_ptr.h" #include "src/core/util/sync.h" +#include "src/core/util/time.h" +#include "absl/base/thread_annotations.h" #include "absl/container/flat_hash_map.h" +#include "absl/functional/any_invocable.h" +#include "absl/log/log.h" +#include "absl/meta/type_traits.h" +#include "absl/status/status.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" namespace grpc_core { namespace http2 { -// Experimental : This is just the initial skeleton of class -// and it is functions. The code will be written iteratively. +// Experimental : The code will be written iteratively. // Do not use or edit any of these functions unless you are // familiar with the PH2 project (Moving chttp2 to promises.) -// TODO(tjagtap) : [PH2][P3] : Delete this comment when http2 -// rollout begins -class Http2ServerTransport final : public ServerTransport { +// TODO(tjagtap) : [PH2][P5] : Update the experimental status of the code when +// http2 rollout is completed. +class Http2ServerTransport final : public ServerTransport, + public channelz::DataSource { // TODO(tjagtap) : [PH2][P3] Move the definitions to the header for better // inlining. For now definitions are in the cc file to // reduce cognitive load in the header. public: + ////////////////////////////////////////////////////////////////////////////// + // Constructor, Destructor etc. Http2ServerTransport( - PromiseEndpoint endpoint, GRPC_UNUSED const ChannelArgs& channel_args, + PromiseEndpoint endpoint, const ChannelArgs& channel_args, std::shared_ptr - event_engine); + event_engine, + absl::AnyInvocable)> on_receive_settings); + + Http2ServerTransport(const Http2ServerTransport&) = delete; + Http2ServerTransport& operator=(const Http2ServerTransport&) = delete; + Http2ServerTransport(Http2ServerTransport&&) = delete; + Http2ServerTransport& operator=(Http2ServerTransport&&) = delete; ~Http2ServerTransport() override; FilterStackTransport* filter_stack_transport() override { return nullptr; } @@ -64,82 +118,387 @@ class Http2ServerTransport final : public ServerTransport { ServerTransport* server_transport() override { return this; } absl::string_view GetTransportName() const override { return "http2"; } - // TODO(tjagtap) : [PH2][EXT] : These can be removed when event engine rollout - // is complete. + ////////////////////////////////////////////////////////////////////////////// + // Deprecated Stuff + + // TODO(tjagtap) : [PH2][EXT] : Remove after event engine rollout void SetPollset(grpc_stream*, grpc_pollset*) override {} void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {} - void StartWatch(RefCountedPtr) override { - // TODO(roth): Implement as part of migrating server side to new - // watcher API. - } - void StopWatch(RefCountedPtr) override { - // TODO(roth): Implement as part of migrating server side to new - // watcher API. - } + ////////////////////////////////////////////////////////////////////////////// + // Transport Functions void SetCallDestination( - RefCountedPtr call_destination) override; + RefCountedPtr unstarted_call_handler) override; void PerformOp(grpc_transport_op*) override; void Orphan() override; - void AbortWithError(); - RefCountedPtr GetSocketNode() const override { + bool AreTransportFlowControlTokensAvailable() { + return flow_control_.remote_window() > 0; + } + + void SpawnTransportLoops(); + void InitializeAndSpawnTransportLoops(); + + ////////////////////////////////////////////////////////////////////////////// + // Channelz and ZTrace + + std::unique_ptr GetZTrace(absl::string_view name) override { + if (name == "transport_frames") return ztrace_collector_->MakeZTrace(); return nullptr; } + RefCountedPtr GetSocketNode() const override; + + void AddData(channelz::DataSink sink) override; + void SpawnAddChannelzData(RefCountedPtr party, + channelz::DataSink sink); + + ////////////////////////////////////////////////////////////////////////////// + // Watchers + + void StartWatch(RefCountedPtr watcher) override; + void StopWatch(RefCountedPtr watcher) override; + + ////////////////////////////////////////////////////////////////////////////// + // Test Only Functions + + template + void TestOnlySpawnPromise(absl::string_view name, Factory&& factory) { + SpawnInfallible(general_party_, name, std::forward(factory)); + } + + absl::Status TestOnlyTriggerWriteCycle() { return TriggerWriteCycle(); } + + auto TestOnlySendPing(absl::AnyInvocable on_initiate, + bool important = false) { + return ping_manager_->RequestPing(std::move(on_initiate), important); + } + + int64_t TestOnlyTransportFlowControlWindow(); + int64_t TestOnlyGetStreamFlowControlWindow(const uint32_t stream_id); + private: - // Reading from the endpoint. + ////////////////////////////////////////////////////////////////////////////// + // Endpoint Helpers + + // Callers MUST ensure that the transport is not destroyed till the promise is + // resolved or cancelled. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto EndpointReadSlice( + const size_t num_bytes) { + return Map(endpoint_.ReadSlice(num_bytes), + [this, num_bytes](absl::StatusOr status) { + OnEndpointRead(status.ok(), num_bytes); + return status; + }); + } - // Returns a promise to keep reading in a Loop till a fail/close is received. - auto ReadLoop(); + // Callers MUST ensure that the transport is not destroyed till the promise is + // resolved or cancelled. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto EndpointRead( + const size_t num_bytes) { + return Map(endpoint_.Read(num_bytes), + [this, num_bytes](absl::StatusOr status) { + OnEndpointRead(status.ok(), num_bytes); + return status; + }); + } - // Returns a promise that will read and process one HTTP2 frame. - auto ReadAndProcessOneFrame(); + void OnEndpointRead(const bool is_ok, const size_t num_bytes) { + if (is_ok) { + keepalive_manager_->GotData(); + ztrace_collector_->Append(PromiseEndpointReadTrace{num_bytes}); + } + } - // Returns a promise that will process one HTTP2 frame. - auto ProcessOneFrame(Http2Frame frame); + auto EndpointWrite(SliceBuffer&& output_buf); + + // Serialize and write the frames in the write cycle to the endpoint. + auto SerializeAndWrite(); + + ////////////////////////////////////////////////////////////////////////////// + // Watchers + + void StartConnectivityWatch( + grpc_connectivity_state state, + OrphanablePtr watcher); + + void StopConnectivityWatch(ConnectivityStateWatcherInterface* watcher); + + void NotifyStateWatcherOnDisconnectLocked( + absl::Status status, StateWatcher::DisconnectInfo disconnect_info) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(&transport_mutex_); + + ////////////////////////////////////////////////////////////////////////////// + // Transport Read Path + + // Synchronous functions for processing each type of frame + Http2Status ProcessIncomingFrame(Http2DataFrame&& frame); + Http2Status ProcessIncomingFrame(Http2HeaderFrame&& frame); + Http2Status ProcessIncomingFrame(Http2RstStreamFrame&& frame); + Http2Status ProcessIncomingFrame(Http2SettingsFrame&& frame); + Http2Status ProcessIncomingFrame(Http2PingFrame&& frame); + Http2Status ProcessIncomingFrame(Http2GoawayFrame&& frame); + Http2Status ProcessIncomingFrame(Http2WindowUpdateFrame&& frame); + Http2Status ProcessIncomingFrame(Http2ContinuationFrame&& frame); + Http2Status ProcessIncomingFrame(Http2SecurityFrame&& frame); + Http2Status ProcessIncomingFrame(Http2UnknownFrame&& frame); + Http2Status ProcessIncomingFrame(Http2EmptyFrame&& frame); + + Http2Status ProcessMetadata(RefCountedPtr stream); + + Http2Status ParseAndDiscardHeaders(SliceBuffer&& buffer, bool is_end_headers, + Stream* stream, + Http2Status&& original_status, + DebugLocation whence = {}); + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Http2Status + ProcessOneIncomingFrame(Http2Frame&& frame) { + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::ProcessOneIncomingFrame"; + return std::visit( + [this](auto&& frame) { + return ProcessIncomingFrame(std::forward(frame)); + }, + std::forward(frame)); + } - // Returns a promise that will do the cleanup after the ReadLoop ends. - auto OnReadLoopEnded(); + auto ReadAndProcessOneFrame(); - // Writing to the endpoint. + // Returns a promise to keep reading in a Loop till a fail/close is received. + auto ReadLoop(); - // Read from the MPSC queue and write it. + ////////////////////////////////////////////////////////////////////////////// + // Transport Write Path + + // Write time sensitive control frames to the endpoint. Frames sent from here + // will be GOAWAY, SETTINGS, PING and PING acks, WINDOW_UPDATE and + // Custom gRPC security frame. + // These frames are written to the endpoint in a single endpoint write. If any + // module needs to take action after the write (for cases like spawning + // timeout promises), they MUST plug the call in the + // NotifyControlFramesWriteDone. + + // Prepares all the HTTP2 control frames that are to be sent out in this write + // cycle. The modules can choose to either trigger an endpoint write for the + // frames or defer the write with the stream specific frames. In most cases, + // the frames are deferred and a single write is triggered for all the + // frames. + // absl::Status PrepareControlFrames(); + + // If there are any urgent frames this would trigger an additional endpoint + // write. CAUTION: This will add significant overhead if used for non-urgent + // frames. + // auto MaybeWriteUrgentFrames(); + + // Notify the modules that an endpoint write is done. This corresponds to the + // generic endpoint write that happens in the MultiplexerLoop. + // void NotifyFramesWriteDone(); + + // Notify the modules that an urgent endpoint write is done. If some module + // add frames to this buffer in PrepareControlFrames, they can use this to + // do post processing after the write is done. + // void NotifyUrgentFramesWriteDone(); + + // absl::Status DequeueStreamFrames(RefCountedPtr stream, + // WriteCycle& write_cycle); + + // Returns a promise to keep draining control frames and data frames from all + // the writable streams and write to the endpoint. + // auto MultiplexerLoop(); + + // Returns a promise to fetch data from the callhandler and pass it further + // down towards the endpoint. + // auto CallOutboundLoop(RefCountedPtr stream); + + // TODO(akshitpatel) : [PH2][P0] : Delete when implementing write loop. auto WriteFromQueue(); - // Returns a promise to keep writing in a Loop till a fail/close is received. + // TODO(akshitpatel) : [PH2][P0] : Delete when implementing write loop. auto WriteLoop(); - // Returns a promise that will do the cleanup after the WriteLoop ends. - auto OnWriteLoopEnded(); + // Force triggers a transport write cycle + absl::Status TriggerWriteCycle(DebugLocation whence = {}) { + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::TriggerWriteCycle invoked from " + << whence.file() << ":" << whence.line(); + return writable_stream_list_.ForceReadyForWrite(); + } - RefCountedPtr general_party_; + // Triggers a write cycle. If successful, returns true. + // If failed, calls HandleError and returns false. + bool TriggerWriteCycleOrHandleError(DebugLocation whence = {}) { + absl::Status status = TriggerWriteCycle(whence); + if (GPR_LIKELY(status.ok())) return true; + GRPC_HTTP2_SERVER_DLOG + << "Http2ServerTransport::TriggerWriteCycleOrHandleError failed with " + "status: " + << status << " at " << whence.file() << ":" << whence.line(); + GRPC_UNUSED absl::Status unused_status = + HandleError(std::nullopt, ToHttpOkOrConnError(status), whence); + return false; + } - PromiseEndpoint endpoint_; - Http2SettingsManager settings_; + ////////////////////////////////////////////////////////////////////////////// + // Spawn Helpers and Promise Helpers + + template ()()), + Poll>, + bool> = true> + auto UntilTransportClosed(Promise&& promise) { + return Race(Map(transport_closed_latch_.Wait(), + [self = RefAsSubclass()](Empty) { + GRPC_HTTP2_SERVER_DLOG << "Transport closed"; + return absl::CancelledError("Transport closed"); + }), + std::forward(promise)); + } - Http2FrameHeader current_frame_header_; + template ()()), + Poll>, + bool> = true> + auto UntilTransportClosed(Promise&& promise) { + return Race(Map(transport_closed_latch_.Wait(), + [self = RefAsSubclass()](Empty) { + GRPC_HTTP2_SERVER_DLOG << "Transport closed"; + return Empty{}; + }), + std::forward(promise)); + } - struct Stream : public RefCounted { - explicit Stream(CallInitiator call) : call(std::move(call)) {} - // Transport holds one CallHandler object for each Stream. - CallInitiator call; - // TODO(tjagtap) : [PH2][P2] : Add more members as necessary - // TODO(tjagtap) : [PH2][P2] : May be add state of Stream - Idle , Open etc - // https://datatracker.ietf.org/doc/html/rfc9113#name-stream-identifiers - }; - RefCountedPtr call_destination_; + // Spawns an infallible promise on the given party. + template + void SpawnInfallible(RefCountedPtr party, absl::string_view name, + Factory&& factory) { + party->Spawn(name, std::forward(factory), [](Empty) {}); + } - MpscReceiver outgoing_frames_; + // Spawns an infallible promise on the transport party. + template + void SpawnInfallibleTransportParty(absl::string_view name, + Factory&& factory) { + SpawnInfallible(general_party_, name, std::forward(factory)); + } - Mutex transport_mutex_; - // TODO(tjagtap) : [PH2][P2] : Add to map in SetCallDestination and clean this - // mapping up in the on_done of the CallInitiator or CallHandler - absl::flat_hash_map> stream_list_ - ABSL_GUARDED_BY(transport_mutex_); + // Spawns a promise on the transport party. If the promise returns a non-ok + // status, it is handled by closing the transport with the corresponding + // status. + template + void SpawnGuardedTransportParty(absl::string_view name, Factory&& factory) { + general_party_->Spawn( + name, std::forward(factory), + [self = RefAsSubclass()](absl::Status status) { + if (!status.ok()) { + GRPC_UNUSED absl::Status error = self->HandleError( + /*stream_id=*/std::nullopt, ToHttpOkOrConnError(status)); + } + }); + } + + template + void SpawnWithOnDoneTransportParty(absl::string_view name, Factory&& factory, + OnDone&& on_done) { + general_party_->Spawn(name, std::forward(factory), + std::forward(on_done)); + } + + ////////////////////////////////////////////////////////////////////////////// + // Settings + + void EnforceLatestIncomingSettings(); + auto WaitForSettingsTimeoutOnDone(); + void MaybeSpawnWaitForSettingsTimeout(); + + ////////////////////////////////////////////////////////////////////////////// + // Flow Control and BDP + + // Processes the flow control action and take necessary steps. + void ActOnFlowControlAction(const chttp2::FlowControlAction& action, + Stream* stream); + + void MaybeGetWindowUpdateFrames(FrameSender& frame_sender); + + auto FlowControlPeriodicUpdateLoop(); + + // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. + void AddPeriodicUpdatePromiseWaker() { + periodic_updates_waker_ = GetContext()->MakeNonOwningWaker(); + } + + // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. + void WakeupPeriodicUpdatePromise() { periodic_updates_waker_.Wakeup(); } + + ////////////////////////////////////////////////////////////////////////////// + // Stream List Operations + + RefCountedPtr LookupStream(uint32_t stream_id); + + // void AddToStreamList(RefCountedPtr stream); + + // absl::Status MaybeAddStreamToWritableStreamList( + // const RefCountedPtr stream, + // const StreamDataQueue::StreamWritabilityUpdate + // result); + + // Returns the next stream id. If the next stream id is not available, it + // returns std::nullopt. MUST be called from the transport party. + // absl::StatusOr NextStreamId(); + + // Returns the next stream id without incrementing it. MUST be called from the + // transport party. + // uint32_t PeekNextStreamId() const { return next_stream_id_; } + + // Returns the last stream id sent by the transport. If no streams were sent, + // returns 0. MUST be called from the transport party. + // uint32_t GetLastStreamId() const { + // const uint32_t next_stream_id = PeekNextStreamId(); + // return (next_stream_id > 1) ? (next_stream_id - 2) : 0; + // } + + // Returns the number of active streams. A stream is removed from the `active` + // list once both client and server agree to close the stream. The count of + // stream_list_(even though stream list represents streams open for reads) + // works here because of the following cases where the stream is closed: + // 1. Reading a RST_STREAM frame: In this case, the stream is immediately + // closed for reads and writes and removed from the stream_list_ + // (effectively tracking the number of active streams). + // 2. Reading a Trailing Metadata frame: In this case, the stream MAY be + // closed for reads and writes immediately which follows the above case. In + // other cases, the transport either reads RST_STREAM frame from the server + // (and follows case 1) or sends a half close frame and closes the stream + // for reads and writes (in the multiplexer loop). + // 3. Hitting error condition in the transport: In this case, RST_STREAM is + // is enqueued and the stream is closed for reads immediately. This means + // we effectively reduce the number of active streams inline (because we + // remove the stream from the stream_list_). This is fine because the + // priority logic in list of writable streams ensures that the RST_STREAM + // frame is given priority over any new streams being created by the + // client. + // 4. Application abort: In this case, multiplexer loop will write RST_STREAM + // frame to the endpoint and close the stream from reads and writes. This + // then follows the same reasoning as case 1. + inline uint32_t GetActiveStreamCountLocked() const + ABSL_EXCLUSIVE_LOCKS_REQUIRED(transport_mutex_) { + // TODO(tjagtap) : [PH2][P1] : Check if impl needs to change for server. + // TODO(tjagtap) : [PH2][P1] : Check if comment needs to change for server. + return stream_list_.size(); + } + + ////////////////////////////////////////////////////////////////////////////// + // Stream Operations + + // absl::Status InitializeStream(Stream& stream); + + // Runs on the call party. + // std::optional> MakeStream(CallHandler call_handler); + + // void BeginCloseStream(RefCountedPtr stream, + // std::optional reset_stream_error_code, + // ServerMetadataHandle&& metadata, + // DebugLocation whence = {}); // This function MUST be idempotent. void CloseStream(uint32_t stream_id, absl::Status status, @@ -150,13 +509,49 @@ class Http2ServerTransport final : public ServerTransport { // TODO(akshitpatel) : [PH2][P2] : Implement this. } - // This function is supposed to be idempotent. - void CloseTransport(const Http2Status& status, DebugLocation whence = {}) { - LOG(INFO) << "Http2ClientTransport::CloseTransport status=" << status - << " location=" << whence.file() << ":" << whence.line(); - // TODO(akshitpatel) : [PH2][P2] : Implement this. + // This function MUST be idempotent. + // void CloseStream(Stream& stream, CloseStreamArgs args, + // DebugLocation whence = {}); + + ////////////////////////////////////////////////////////////////////////////// + // Ping Keepalive and Goaway + + // void MaybeSpawnPingTimeout(std::optional opaque_data); + // void MaybeSpawnDelayedPing(std::optional delayed_ping_wait); + + auto SendPing(absl::AnyInvocable on_initiate, bool important) { + return ping_manager_->RequestPing(std::move(on_initiate), important); } + auto WaitForPingAck() { return ping_manager_->WaitForPingAck(); } + + // Duration NextAllowedPingInterval() { + // MutexLock lock(&transport_mutex_); + // return (!keepalive_permit_without_calls_ && + // GetActiveStreamCountLocked() == 0) + // ? Duration::Hours(2) + // : Duration::Seconds(1); + // } + + // absl::Status AckPing(uint64_t opaque_data); + + // void MaybeSpawnKeepaliveLoop(); + + // uint32_t GetMaxAllowedStreamId() const; + // void SetMaxAllowedStreamId(uint32_t max_allowed_stream_id); + + ////////////////////////////////////////////////////////////////////////////// + // Error Path and Close Path + + // void MaybeSpawnCloseTransport(Http2Status http2_status, + // DebugLocation whence = {}); + + // bool CanCloseTransportLocked() const + // ABSL_EXCLUSIVE_LOCKS_REQUIRED(transport_mutex_); + + // This function MUST run on the transport party. + void CloseTransport(); + // Handles the error status and returns the corresponding absl status. Absl // Status is returned so that the error can be gracefully handled // by promise primitives. @@ -165,36 +560,189 @@ class Http2ServerTransport final : public ServerTransport { // should not be cancelled in case of stream errors. // If the error is a connection error, it closes the transport and returns the // corresponding (failed) absl status. - absl::Status HandleError(Http2Status status, DebugLocation whence = {}) { - auto error_type = status.GetType(); - GRPC_DCHECK(error_type != Http2Status::Http2ErrorType::kOk); - - if (error_type == Http2Status::Http2ErrorType::kStreamError) { - CloseStream(current_frame_header_.stream_id, status.GetAbslStreamError(), - whence); - return absl::OkStatus(); - } else if (error_type == Http2Status::Http2ErrorType::kConnectionError) { - CloseTransport(status, whence); - return status.GetAbslConnectionError(); - } + absl::Status HandleError(const std::optional stream_id, + Http2Status status, DebugLocation whence = {}) { + // TODO(akshitpatel) : [PH2][P0] : Implement this. And remove the log. + GRPC_HTTP2_SERVER_DLOG << "Http2ServerTransport::HandleError for stream id=" + << (stream_id.has_value() ? absl::StrCat(*stream_id) + : "nullopt") + << " status=" << status.DebugString() + << " location=" << whence.file() << ":" + << whence.line(); + return absl::OkStatus(); + } - GPR_UNREACHABLE_CODE(return absl::InternalError("Invalid error type")); + ////////////////////////////////////////////////////////////////////////////// + // Misc Transport Stuff + + void ReportDisconnection(const absl::Status& status, + StateWatcher::DisconnectInfo disconnect_info, + const char* reason); + + void ReportDisconnectionLocked(const absl::Status& status, + StateWatcher::DisconnectInfo disconnect_info, + const char* reason) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(&transport_mutex_); + + // bool SetOnDone(CallHandler call_handler, RefCountedPtr stream); + + void ReadChannelArgs(const ChannelArgs& channel_args, + TransportChannelArgs& args); + + auto SecurityFrameLoop() { + GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SecurityFrameLoop Factory"; + return AssertResultType(Loop([this]() { + return Map(security_frame_handler_->WaitForSecurityFrameSending(), + [this](Empty) -> LoopCtl { + if (security_frame_handler_->TriggerWriteSecurityFrame() + .terminate) { + return Empty{}; + } + + if (!TriggerWriteCycleOrHandleError()) { + return Empty{}; + } + return Continue(); + }); + })); } - // TODO(tjagtap) : [PH2][P2] : Either use this in code or delete it. - // uint32_t next_stream_id_ ABSL_GUARDED_BY(transport_mutex_) = 1; - // TODO(tjagtap) : [PH2][P2] : Either use this in code or delete it. This was - // copied from Chaotic Good. - // uint32_t last_seen_new_stream_id_ = 0; + ////////////////////////////////////////////////////////////////////////////// + // Inner Classes and Structs + + class PingSystemInterfaceImpl : public PingInterface { + public: + static std::unique_ptr Make(Http2ServerTransport* transport); + absl::Status TriggerWrite() override; + Promise PingTimeout() override; + + private: + // Holding a raw pointer to transport works because all the promises + // invoking the methods of this class are invoked while holding a ref to the + // transport. + Http2ServerTransport* transport_; + explicit PingSystemInterfaceImpl(Http2ServerTransport* transport) + : transport_(transport) {} + }; + + class KeepAliveInterfaceImpl : public KeepAliveInterface { + public: + static std::unique_ptr Make( + Http2ServerTransport* transport); + + private: + explicit KeepAliveInterfaceImpl(Http2ServerTransport* transport) + : transport_(transport) {} + Promise SendPingAndWaitForAck() override; + Promise OnKeepAliveTimeout() override; + bool NeedToSendKeepAlivePing() override; + // Holding a raw pointer to transport works because all the promises + // invoking the methods of this class are invoked while holding a ref to the + // transport. + Http2ServerTransport* transport_; + }; + + class GoawayInterfaceImpl : public GoawayInterface { + public: + static std::unique_ptr Make( + Http2ServerTransport* transport); + + Promise SendPingAndWaitForAck() override { + return transport_->ping_manager_->RequestPing(/*on_initiate=*/[] {}, + /*important=*/true); + } + + absl::Status TriggerWriteCycle() override { + return transport_->TriggerWriteCycle(); + } + uint32_t GetLastAcceptedStreamId() override; + + private: + explicit GoawayInterfaceImpl(Http2ServerTransport* transport) + : transport_(transport) {} + // Holding a raw pointer to transport works because all the promises + // invoking the methods of this class are invoked while holding a ref to the + // transport. + Http2ServerTransport* transport_; + }; + + ////////////////////////////////////////////////////////////////////////////// + // All Data Members + + RefCountedPtr call_destination_; + + // TODO(akshitpatel) : [PH2][P0] : Remove this when write path is ready. + MpscReceiver outgoing_frames_; + + // TODO(tjagtap) : [PH2][P0] : These are copied as is from the client + // transport. Take a look if modifications are needed. + + RefCountedPtr general_party_; // Refer Gemini.md for party slot usage + std::shared_ptr event_engine_; + + PromiseEndpoint endpoint_; + RefCountedPtr settings_; + + Http2FrameHeader current_frame_header_; + + Mutex transport_mutex_; + + absl::flat_hash_map> stream_list_ + ABSL_GUARDED_BY(transport_mutex_); + + GRPC_UNUSED uint32_t next_stream_id_; + HPackCompressor encoder_; + HPackParser parser_; + bool is_transport_closed_ ABSL_GUARDED_BY(transport_mutex_) = false; + Latch transport_closed_latch_; + + ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(transport_mutex_){ + "http2_server", GRPC_CHANNEL_READY}; + + RefCountedPtr watcher_ ABSL_GUARDED_BY(transport_mutex_); + + bool should_reset_ping_clock_; + IncomingMetadataTracker incoming_headers_; + + // Transport wide write context. This is used to track the state of the + // transport during write cycles. + TransportWriteContext transport_write_context_; + + // Tracks the max allowed stream id. Currently this is only set on receiving a + // graceful GOAWAY frame. + GRPC_UNUSED uint32_t max_allowed_stream_id_ = RFC9113::kMaxStreamId31Bit; + + // Duration between two consecutive keepalive pings. + Duration keepalive_time_; + GRPC_UNUSED bool test_only_ack_pings_; + std::optional ping_manager_; + std::optional keepalive_manager_; + + // Flags + bool keepalive_permit_without_calls_; + + GoawayManager goaway_manager_; + + WritableStreams> writable_stream_list_; + + /// Based on channel args, preferred_rx_crypto_frame_sizes are advertised to + /// the peer + bool enable_preferred_rx_crypto_frame_advertisement_; + RefCountedPtr security_frame_handler_; + MemoryOwner memory_owner_; + chttp2::TransportFlowControl flow_control_; + std::shared_ptr ztrace_collector_; + + // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done. + Waker periodic_updates_waker_; - // TODO(tjagtap) : [PH2][P2] : Implement if needed. - // uint32_t MakeStream(CallHandler call_handler); - // TODO(tjagtap) : [PH2][P2] : Implement if needed. - // RefCountedPtr LookupStream(uint32_t - // stream_id); + Http2ReadContext reader_state_; }; -GRPC_CHECK_CLASS_SIZE(Http2ServerTransport, 240); +// TODO(tjagtap) : [PH2][P1] : Handle the case where a Server receives two +// header frames. Which means that the client sent trailing metadata. While we +// dont expect a gRPC C++ peer to send trailing metadata, not handling it might +// break interop tests and genuine interop cases. } // namespace http2 } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.cc index abc8797a324..894ee18c1ca 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.cc @@ -100,6 +100,7 @@ Http2ErrorCode Http2Settings::Apply(uint16_t key, uint32_t value) { enable_push_ = value != 0; break; case kMaxConcurrentStreamsWireId: + initial_max_concurrent_streams_ = value; max_concurrent_streams_ = value; break; case kInitialWindowSizeWireId: diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h index 48c3f98dac1..f1651c6f676 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h @@ -67,7 +67,13 @@ class Http2Settings { bool allow_security_frame() const { return allow_security_frame_; } void SetHeaderTableSize(uint32_t x) { header_table_size_ = x; } - void SetMaxConcurrentStreams(uint32_t x) { max_concurrent_streams_ = x; } + void SetMaxConcurrentStreams(uint32_t x) { + initial_max_concurrent_streams_ = x; + max_concurrent_streams_ = x; + } + void UpdateMaxConcurrentStreams(uint32_t x) { + max_concurrent_streams_ = std::min(x, initial_max_concurrent_streams_); + } void SetInitialWindowSize(uint32_t x) { initial_window_size_ = std::min(x, max_initial_window_size()); } @@ -161,6 +167,7 @@ class Http2Settings { // to 0 for client. // SERVER : This setting can change for the server. This is usually changed to // handle memory pressure. + uint32_t initial_max_concurrent_streams_ = 4294967295u; uint32_t max_concurrent_streams_ = 4294967295u; // RFC9113 states the default for SETTINGS_INITIAL_WINDOW_SIZE diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings_promises.h b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings_promises.h index 31d29b8da15..9186d94669d 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_settings_promises.h @@ -35,6 +35,7 @@ #include "src/core/ext/transport/chttp2/transport/http2_settings.h" #include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h" #include "src/core/ext/transport/chttp2/transport/http2_status.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/promise/activity.h" @@ -208,12 +209,14 @@ class SettingsPromiseManager final : public RefCounted { // written to apply the settings. If the first settings frame is received from // the peer that that needs some special handling too. http2::Http2ErrorCode MaybeReportAndApplyBufferedPeerSettings( - grpc_event_engine::experimental::EventEngine* event_engine) { + grpc_event_engine::experimental::EventEngine* event_engine, + bool& should_spawn_security_frame_loop) { http2::Http2ErrorCode status = settings_.ApplyIncomingSettings( std::exchange(pending_peer_settings_, {})); if (state_ == SettingsState::kFirstPeerSettingsReceived) { MaybeReportInitialSettings(event_engine); state_ = SettingsState::kReady; + should_spawn_security_frame_loop = IsSecurityFrameExpected(); } return status; } @@ -227,15 +230,15 @@ class SettingsPromiseManager final : public RefCounted { // acknowledgment. This MUST be called only after the // MaybeReportAndApplyBufferedPeerSettings function. void MaybeGetSettingsAndSettingsAckFrames( - chttp2::TransportFlowControl& flow_control, SliceBuffer& output_buf) { + chttp2::TransportFlowControl& flow_control, + http2::FrameSender& frame_sender) { GRPC_SETTINGS_TIMEOUT_DLOG << "MaybeGetSettingsAndSettingsAckFrames"; if (did_previous_settings_promise_resolve_) { std::optional settings_frame = settings_.MaybeSendUpdate(); if (settings_frame.has_value()) { GRPC_SETTINGS_TIMEOUT_DLOG << "MaybeGetSettingsAndSettingsAckFrames Frame Settings "; - Serialize(absl::Span(&settings_frame.value(), 1), - output_buf); + frame_sender.AddRegularFrame(std::move(*settings_frame)); flow_control.FlushedSettings(); WillSendSettings(); } @@ -243,11 +246,11 @@ class SettingsPromiseManager final : public RefCounted { if (num_acks_to_send_ > 0) { GRPC_SETTINGS_TIMEOUT_DLOG << "Sending " << num_acks_to_send_ << " settings ACK frames"; - std::vector ack_frames(num_acks_to_send_); + frame_sender.ReserveRegularFrames(num_acks_to_send_); for (uint32_t i = 0; i < num_acks_to_send_; ++i) { - ack_frames[i] = Http2SettingsFrame{true, {}}; + frame_sender.AddRegularFrame(Http2SettingsFrame{true, {}}); } - Serialize(absl::MakeSpan(ack_frames), output_buf); + num_acks_to_send_ = 0; } } @@ -259,6 +262,9 @@ class SettingsPromiseManager final : public RefCounted { const Http2Settings& acked() const { return settings_.acked(); } const Http2Settings& peer() const { return settings_.peer(); } + ////////////////////////////////////////////////////////////////////////////// + // ChannelZ and Security Frame Stuff + channelz::PropertyGrid ChannelzProperties() const { return settings_.ChannelzProperties(); } @@ -268,8 +274,7 @@ class SettingsPromiseManager final : public RefCounted { << "Security frame must not be received before SETTINGS frame"; // TODO(tjagtap) : [PH2][P3] : Evaluate when to accept the frame and when to // reject it. Compare it with the requirement and with CHTTP2. - return (settings_.acked().allow_security_frame() || - settings_.local().allow_security_frame()) && + return (settings_.local().allow_security_frame()) && settings_.peer().allow_security_frame(); }; @@ -291,7 +296,11 @@ class SettingsPromiseManager final : public RefCounted { peer_max_concurrent_streams = settings_.peer().max_concurrent_streams()]() mutable { ExecCtx exec_ctx; - std::move(on_receive_settings)(peer_max_concurrent_streams); + on_receive_settings(peer_max_concurrent_streams); + // Ensure the captured callback is destroyed while ExecCtx is still + // alive. Its destructor may trigger work that needs to schedule + // closures on the ExecCtx. + on_receive_settings = nullptr; }); GRPC_DCHECK(on_receive_first_settings_ == nullptr); } @@ -307,8 +316,11 @@ class SettingsPromiseManager final : public RefCounted { event_engine->Run([on_receive_settings = std::move(on_receive_first_settings_)]() mutable { ExecCtx exec_ctx; - std::move(on_receive_settings)( - absl::UnavailableError("transport closed")); + on_receive_settings(absl::UnavailableError("transport closed")); + // Ensure the captured callback is destroyed while ExecCtx is still + // alive. Its destructor may trigger work that needs to schedule + // closures on the ExecCtx. + on_receive_settings = nullptr; }); GRPC_DCHECK(on_receive_first_settings_ == nullptr); } @@ -385,8 +397,8 @@ class SettingsPromiseManager final : public RefCounted { // better debuggability. Timestamp sent_time_ = Timestamp::InfFuture(); Waker ack_timeout_waker_; - bool did_register_ack_timeout_waker_ = false; int number_of_acks_unprocessed_ = 0; + bool did_register_ack_timeout_waker_ = false; bool should_wait_for_settings_ack_ = false; // For CHTTP2, MaybeSendUpdate() checks `update_state_` to ensure only one diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.cc index aeb8389ee2c..bd5999dfd56 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.cc @@ -18,6 +18,7 @@ #include "src/core/ext/transport/chttp2/transport/http2_transport.h" +#include #include #include @@ -37,11 +38,11 @@ #include "src/core/ext/transport/chttp2/transport/header_assembler.h" #include "src/core/ext/transport/chttp2/transport/hpack_parser.h" #include "src/core/ext/transport/chttp2/transport/http2_settings.h" -#include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h" #include "src/core/ext/transport/chttp2/transport/http2_settings_promises.h" #include "src/core/ext/transport/chttp2/transport/http2_status.h" #include "src/core/ext/transport/chttp2/transport/internal_channel_arg_names.h" #include "src/core/ext/transport/chttp2/transport/stream.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/event_engine/tcp_socket_utils.h" #include "src/core/lib/slice/slice_buffer.h" @@ -49,7 +50,8 @@ #include "src/core/util/ref_counted_ptr.h" #include "src/core/util/time.h" #include "absl/log/log.h" -#include "absl/types/span.h" +#include "absl/status/status.h" +#include "absl/strings/str_cat.h" namespace grpc_core { namespace http2 { @@ -86,13 +88,33 @@ constexpr Duration kServerKeepaliveTime = Duration::Hours(2); // Do not use or edit any of these functions unless you are // familiar with the PH2 project (Moving chttp2 to promises.) +/////////////////////////////////////////////////////////////////////////////// +// Read and Write helpers + +// This is only called by the HTTP2 Server Transport to validate the incoming +// connection preface. Since a server does not send a connection preface, this +// validation is not needed for the client transport. +Http2Status ValidateIncomingConnectionPreface( + const absl::StatusOr& status) { + if (!status.ok()) { + return ToHttpOkOrConnError(status.status()); + } else if (status.value() != + Slice::FromStaticString(GRPC_CHTTP2_CLIENT_CONNECT_STRING)) { + return Http2Status::Http2ConnectionError( + Http2ErrorCode::kProtocolError, + std::string(RFC9113::kFirstSettingsFrameServer)); + } + return Http2Status::Ok(); +} + /////////////////////////////////////////////////////////////////////////////// // Settings helpers void InitLocalSettings(Http2Settings& settings, const bool is_client) { if (is_client) { // gRPC has never supported PUSH_PROMISE and we have no plan to do so in the - // future. + // future. We are not setting this to false for Server to be consistent + // with the legacy CHTTP2 transport. settings.SetEnablePush(false); // This is to make it double-sure that server cannot initiate a stream. settings.SetMaxConcurrentStreams(0); @@ -103,6 +125,21 @@ void InitLocalSettings(Http2Settings& settings, const bool is_client) { //////////////////////////////////////////////////////////////////////////////// // Channel Args helpers + +std::string TransportChannelArgs::DebugString() const { + return absl::StrCat( + "keepalive_time: ", keepalive_time, + " keepalive_timeout: ", keepalive_timeout, + " ping_timeout: ", ping_timeout, " settings_timeout: ", settings_timeout, + " keepalive_permit_without_calls: ", keepalive_permit_without_calls, + " enable_preferred_rx_crypto_frame_advertisement: ", + enable_preferred_rx_crypto_frame_advertisement, + " max_header_list_size_soft_limit: ", max_header_list_size_soft_limit, + " max_usable_hpack_table_size: ", max_usable_hpack_table_size, + " initial_sequence_number: ", initial_sequence_number, + " test_only_ack_pings: ", test_only_ack_pings); +} + void ReadChannelArgs(const ChannelArgs& channel_args, TransportChannelArgs& args, Http2Settings& local_settings, chttp2::TransportFlowControl& flow_control, @@ -276,7 +313,7 @@ void ProcessOutgoingDataFrameFlowControl( ValueOrHttp2Status ProcessIncomingDataFrameFlowControl(Http2FrameHeader& frame_header, chttp2::TransportFlowControl& flow_control, - RefCountedPtr stream) { + Stream* stream) { GRPC_DCHECK_EQ(frame_header.type, 0u); if (frame_header.length > 0) { if (stream == nullptr) { @@ -301,7 +338,7 @@ ProcessIncomingDataFrameFlowControl(Http2FrameHeader& frame_header, return action; } else { chttp2::StreamFlowControl::IncomingUpdateContext stream_fc( - &stream->flow_control); + &stream->GetStreamFlowControl()); absl::Status fc_status = stream_fc.RecvData(frame_header.length); chttp2::FlowControlAction action = stream_fc.MakeAction(); GRPC_HTTP2_COMMON_DLOG @@ -325,14 +362,14 @@ ProcessIncomingDataFrameFlowControl(Http2FrameHeader& frame_header, bool ProcessIncomingWindowUpdateFrameFlowControl( const Http2WindowUpdateFrame& frame, - chttp2::TransportFlowControl& flow_control, RefCountedPtr stream) { + chttp2::TransportFlowControl& flow_control, Stream* stream) { if (frame.stream_id != 0) { if (stream != nullptr) { GRPC_HTTP2_COMMON_DLOG << "ProcessIncomingWindowUpdateFrameFlowControl stream " << frame.stream_id << " increment " << frame.increment; chttp2::StreamFlowControl::OutgoingUpdateContext fc_update( - &stream->flow_control); + &stream->GetStreamFlowControl()); fc_update.RecvUpdate(frame.increment); } else { // If stream id is non zero, and stream is nullptr, maybe the stream was @@ -362,25 +399,36 @@ bool ProcessIncomingWindowUpdateFrameFlowControl( return false; } -void MaybeAddStreamWindowUpdateFrame(RefCountedPtr stream, - std::vector& frames) { +void MaybeAddTransportWindowUpdateFrame( + chttp2::TransportFlowControl& flow_control, FrameSender& frame_sender) { + uint32_t window_size = + flow_control.DesiredAnnounceSize(/*writing_anyway=*/true); + if (window_size > 0) { + GRPC_HTTP2_COMMON_DLOG + << "MaybeGetWindowUpdateFrames Transport Window Update : " + << window_size; + frame_sender.AddRegularFrame( + Http2WindowUpdateFrame{/*stream_id=*/0, window_size}); + flow_control.SentUpdate(window_size); + } +} + +void MaybeAddStreamWindowUpdateFrame(Stream& stream, + FrameSender& frame_sender) { GRPC_HTTP2_COMMON_DLOG << "MaybeAddStreamWindowUpdateFrame stream=" - << ((stream == nullptr) - ? "null" - : absl::StrCat( - stream->GetStreamId(), - " CanSendWindowUpdateFrames=", - stream->CanSendWindowUpdateFrames())); - if (stream != nullptr && stream->CanSendWindowUpdateFrames()) { - const uint32_t increment = stream->flow_control.MaybeSendUpdate(); + << stream.GetStreamId() + << " CanSendWindowUpdateFrames=" + << stream.CanSendWindowUpdateFrames(); + if (stream.CanSendWindowUpdateFrames()) { + const uint32_t increment = stream.GetStreamFlowControl().MaybeSendUpdate(); GRPC_HTTP2_COMMON_DLOG << "MaybeAddStreamWindowUpdateFrame MaybeSendUpdate { " - << stream->GetStreamId() << ", " << increment << " }" + << stream.GetStreamId() << ", " << increment << " }" << (increment == 0 ? ". The frame will NOT be sent for increment 0" : ""); if (increment > 0) { - frames.emplace_back( - Http2WindowUpdateFrame{stream->GetStreamId(), increment}); + frame_sender.AddRegularFrame( + Http2WindowUpdateFrame{stream.GetStreamId(), increment}); } } } @@ -390,7 +438,7 @@ void MaybeAddStreamWindowUpdateFrame(RefCountedPtr stream, Http2Status ParseAndDiscardHeaders(HPackParser& parser, SliceBuffer&& buffer, HeaderAssembler::ParseHeaderArgs args, - const RefCountedPtr stream, + Stream* stream, Http2Status&& original_status) { GRPC_HTTP2_COMMON_DLOG << "ParseAndDiscardHeaders buffer " "size: " @@ -402,9 +450,8 @@ Http2Status ParseAndDiscardHeaders(HPackParser& parser, SliceBuffer&& buffer, if (stream != nullptr) { // Parse all the data in the header assembler - Http2Status result = stream->header_assembler.ParseAndDiscardHeaders( - parser, args.is_initial_metadata, args.is_client, - args.max_header_list_size_soft_limit, + Http2Status result = stream->GetHeaderAssembler().ParseAndDiscardHeaders( + parser, args.is_initial_metadata, args.max_header_list_size_soft_limit, args.max_header_list_size_hard_limit); if (!result.IsOk()) { GRPC_DCHECK(result.GetType() == diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.h b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.h index 3d5ba328826..2708406ca02 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_transport.h @@ -27,14 +27,12 @@ #include "src/core/ext/transport/chttp2/transport/frame.h" #include "src/core/ext/transport/chttp2/transport/hpack_parser.h" #include "src/core/ext/transport/chttp2/transport/http2_settings.h" -#include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h" -#include "src/core/ext/transport/chttp2/transport/http2_settings_promises.h" #include "src/core/ext/transport/chttp2/transport/http2_status.h" #include "src/core/ext/transport/chttp2/transport/stream.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/promise/activity.h" -#include "src/core/lib/promise/context.h" #include "src/core/lib/promise/poll.h" -#include "src/core/lib/transport/promise_endpoint.h" +#include "src/core/lib/slice/slice.h" #include "src/core/util/ref_counted_ptr.h" #include "absl/log/log.h" #include "absl/status/status.h" @@ -52,14 +50,15 @@ namespace http2 { #define GRPC_HTTP2_CLIENT_DLOG \ DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport)) +#define GRPC_HTTP2_SERVER_DLOG \ + DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport)) + #define GRPC_HTTP2_CLIENT_ERROR_DLOG \ LOG_IF(ERROR, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport)) #define GRPC_HTTP2_COMMON_DLOG \ DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport)) -constexpr uint32_t kMaxWriteSize = /*10 MB*/ 10u * 1024u * 1024u; - constexpr uint32_t kGoawaySendTimeoutSeconds = 5u; struct CloseStreamArgs { @@ -67,11 +66,21 @@ struct CloseStreamArgs { bool close_writes; }; +// TODO(akshitpatel) [PH2][P3] : Write a way to measure the total size of a +// transport object. Reference : +// https://github.com/grpc/grpc/pull/41294/files#diff-c685cc4847f228327938326e2a45083a2d0845bacff0ac004bd802027a670c4e + /////////////////////////////////////////////////////////////////////////////// // Read and Write helpers class Http2ReadContext { public: + Http2ReadContext() = default; + Http2ReadContext(const Http2ReadContext&) = delete; + Http2ReadContext& operator=(const Http2ReadContext&) = delete; + Http2ReadContext(Http2ReadContext&&) = delete; + Http2ReadContext& operator=(Http2ReadContext&&) = delete; + // Signals that the read loop should pause. If it's already paused, this is a // no-op. void SetPauseReadLoop() { @@ -107,30 +116,8 @@ class Http2ReadContext { Waker read_loop_waker_; }; -inline PromiseEndpoint::WriteArgs GetWriteArgs( - const Http2Settings& peer_settings) { - PromiseEndpoint::WriteArgs args; - int max_frame_size = peer_settings.preferred_receive_crypto_message_size(); - // Note: max frame size is 0 if the remote peer does not support adjusting the - // sending frame size. - if (max_frame_size == 0) { - max_frame_size = INT_MAX; - } - // `WriteArgs.max_frame_size` is a suggestion to the endpoint implementation - // to group data to be written into frames of the specified max_frame_size. It - // is different from HTTP2 SETTINGS_MAX_FRAME_SIZE. That setting limits HTTP2 - // frame payload size. - args.set_max_frame_size(max_frame_size); - - // TODO(akshitpatel) [PH2][P1] : Currently only the WriteArgs related to - // preferred_receive_crypto_message_size have been plumbed. The other write - // args may need to be plumbed for PH2. - // CHTTP2 : Reference : - // File : src/core/ext/transport/chttp2/transport/chttp2_transport.cc - // Function : write_action - - return args; -} +Http2Status ValidateIncomingConnectionPreface( + const absl::StatusOr& status); /////////////////////////////////////////////////////////////////////////////// // Settings helpers @@ -153,20 +140,7 @@ struct TransportChannelArgs { int max_usable_hpack_table_size; int initial_sequence_number; - std::string DebugString() const { - return absl::StrCat( - "keepalive_time: ", keepalive_time, - " keepalive_timeout: ", keepalive_timeout, - " ping_timeout: ", ping_timeout, - " settings_timeout: ", settings_timeout, - " keepalive_permit_without_calls: ", keepalive_permit_without_calls, - " enable_preferred_rx_crypto_frame_advertisement: ", - enable_preferred_rx_crypto_frame_advertisement, - " max_header_list_size_soft_limit: ", max_header_list_size_soft_limit, - " max_usable_hpack_table_size: ", max_usable_hpack_table_size, - " initial_sequence_number: ", initial_sequence_number, - " test_only_ack_pings: ", test_only_ack_pings); - } + std::string DebugString() const; }; void ReadChannelArgs(const ChannelArgs& channel_args, @@ -197,15 +171,17 @@ void ProcessOutgoingDataFrameFlowControl( ValueOrHttp2Status ProcessIncomingDataFrameFlowControl(Http2FrameHeader& frame, chttp2::TransportFlowControl& flow_control, - RefCountedPtr stream); + Stream* stream); // Returns true if a write should be triggered bool ProcessIncomingWindowUpdateFrameFlowControl( const Http2WindowUpdateFrame& frame, - chttp2::TransportFlowControl& flow_control, RefCountedPtr stream); + chttp2::TransportFlowControl& flow_control, Stream* stream); + +void MaybeAddTransportWindowUpdateFrame( + chttp2::TransportFlowControl& flow_control, FrameSender& frame_sender); -void MaybeAddStreamWindowUpdateFrame(RefCountedPtr stream, - std::vector& frames); +void MaybeAddStreamWindowUpdateFrame(Stream& stream, FrameSender& frame_sender); /////////////////////////////////////////////////////////////////////////////// // Header and Continuation frame processing helpers @@ -242,7 +218,7 @@ void MaybeAddStreamWindowUpdateFrame(RefCountedPtr stream, // it returns the original status. Http2Status ParseAndDiscardHeaders(HPackParser& parser, SliceBuffer&& buffer, HeaderAssembler::ParseHeaderArgs args, - RefCountedPtr stream, + Stream* stream, Http2Status&& original_status); } // namespace http2 diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h index 6a0377b9886..ed3c0d78b59 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h @@ -295,9 +295,9 @@ struct PromiseEndpointReadTrace { }; struct PromiseEndpointWriteTrace { - uint64_t bytes; + uint64_t count; channelz::PropertyList ChannelzProperties() const { - return channelz::PropertyList().Set("written_bytes", bytes); + return channelz::PropertyList().Set("frames_count", count); } }; diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h b/deps/grpc/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h index 02387d38c99..7aed9c89dcc 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h @@ -21,10 +21,15 @@ #include #include +#include #include "src/core/call/metadata_info.h" #include "src/core/ext/transport/chttp2/transport/frame.h" +#include "src/core/lib/event_engine/tcp_socket_utils.h" +#include "src/core/lib/slice/slice.h" +#include "src/core/lib/transport/promise_endpoint.h" #include "src/core/util/grpc_check.h" +#include "absl/status/statusor.h" #include "absl/strings/str_cat.h" namespace grpc_core { @@ -41,7 +46,8 @@ class IncomingMetadataTracker { // a time. This class is distinct from HeaderAssembler, which buffers header // payloads on a per-stream basis. public: - IncomingMetadataTracker() = default; + explicit IncomingMetadataTracker(Slice peer_string) + : peer_string_(std::move(peer_string)) {} ~IncomingMetadataTracker() = default; IncomingMetadataTracker(IncomingMetadataTracker&& rvalue) = delete; @@ -49,6 +55,18 @@ class IncomingMetadataTracker { IncomingMetadataTracker(const IncomingMetadataTracker&) = delete; IncomingMetadataTracker& operator=(const IncomingMetadataTracker&) = delete; + static Slice GetPeerString(const PromiseEndpoint& endpoint) { + absl::StatusOr uri = + grpc_event_engine::experimental::ResolvedAddressToURI( + endpoint.GetPeerAddress()); + if (uri.ok()) { + return Slice::FromCopiedString(*uri); + } + return Slice::FromCopiedString("unknown"); + } + + Slice peer_string() const { return peer_string_.Ref(); } + void set_soft_limit(uint32_t limit) { max_header_list_size_soft_limit_ = limit; } @@ -88,7 +106,12 @@ class IncomingMetadataTracker { // Returns stream id of stream for which headers are being received. uint32_t GetStreamId() const { return incoming_header_stream_id_; } - bool ClientReceivedDuplicateMetadata( + // A gRPC server is permitted to send both initial metadata and trailing + // metadata where initial metadata is optional. + // A gRPC C++ client is permitted to send only initial metadata. + // However, other gRPC Client implementations may send trailing metadata too. + // So we allow only a maximum of 2 metadata per streams. + bool DidReceiveDuplicateMetadata( const bool did_receive_initial_metadata, const bool did_receive_trailing_metadata) const { const bool is_duplicate_initial_metadata = @@ -98,13 +121,6 @@ class IncomingMetadataTracker { return is_duplicate_initial_metadata || is_duplicate_trailing_metadata; } - bool ServerReceivedDuplicateMetadata( - const bool did_receive_initial_metadata) const { - // TODO(tjagtap) : [PH2][P2] : Verify this when implementing Server. - // Also write a small unit test for it. - return !incoming_header_end_stream_ && did_receive_initial_metadata; - } - std::string DebugString() const { return absl::StrCat( "{ incoming_header_in_progress : ", @@ -115,6 +131,10 @@ class IncomingMetadataTracker { } private: + // Initialized only once at the time of transport creation. + // Should remain constant for the lifetime of the transport. + const Slice peer_string_; + bool incoming_header_in_progress_ = false; bool incoming_header_end_stream_ = false; uint32_t incoming_header_stream_id_ = 0; diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/internal.h b/deps/grpc/src/core/ext/transport/chttp2/transport/internal.h index ae8f6427443..205e3752f46 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/internal.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/internal.h @@ -34,6 +34,7 @@ #include #include +#include "src/core/call/metadata.h" #include "src/core/call/metadata_batch.h" #include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" @@ -314,6 +315,7 @@ struct grpc_chttp2_transport final : public grpc_core::FilterStackTransport, transport_framing_endpoint_extension = nullptr; grpc_core::MemoryOwner memory_owner; + grpc_core::StreamQuotaRefPtr stream_quota; const grpc_core::MemoryAllocator::Reservation self_reservation; grpc_core::ReclamationSweep active_reclamation; grpc_core::InstrumentStorageRefPtr @@ -891,8 +893,10 @@ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t); void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t, grpc_chttp2_stream* s); -void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s, - grpc_error_handle due_to_error, bool tarpit); +void grpc_chttp2_cancel_stream( + grpc_chttp2_transport* t, grpc_chttp2_stream* s, + grpc_error_handle due_to_error, bool tarpit, + grpc_core::ServerMetadataHandle send_trailing_metadata = nullptr); void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t, grpc_chttp2_stream* s); diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.cc index 787fbdcdea7..61c19cdec7d 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.cc @@ -23,6 +23,7 @@ #include "src/core/lib/promise/if.h" #include "src/core/lib/promise/loop.h" #include "src/core/lib/promise/party.h" +#include "src/core/lib/promise/promise.h" #include "src/core/lib/promise/race.h" #include "src/core/lib/promise/sleep.h" #include "src/core/lib/promise/try_seq.h" @@ -33,12 +34,10 @@ namespace grpc_core { namespace http2 { KeepaliveManager::KeepaliveManager( std::unique_ptr keep_alive_interface, - Duration keepalive_timeout, const Duration keepalive_time, Party* party) + Duration keepalive_timeout, const Duration keepalive_time) : keep_alive_interface_(std::move(keep_alive_interface)), keepalive_timeout_(keepalive_timeout), - keepalive_time_(keepalive_time) { - MaybeSpawnKeepaliveLoop(party); -} + keepalive_time_(keepalive_time) {} auto KeepaliveManager::WaitForKeepAliveTimeout() { return AssertResultType( @@ -90,23 +89,18 @@ auto KeepaliveManager::MaybeSendKeepAlivePing() { })); } -void KeepaliveManager::MaybeSpawnKeepaliveLoop(Party* party) { - if (!IsKeepAliveNeeded()) { - GRPC_HTTP2_KEEPALIVE_LOG << "Not spawning keepalive loop."; - return; - } - keep_alive_spawned_ = true; +bool KeepaliveManager::IsKeepAliveLoopNeeded() { + return IsKeepAliveNeeded() && !keep_alive_spawned_; +} - party->Spawn("KeepAliveLoop", Loop([this]() { - return TrySeq( - Sleep(keepalive_time_), - [this]() { return MaybeSendKeepAlivePing(); }, - []() -> LoopCtl { return Continue(); }); - }), - [](auto status) { - GRPC_HTTP2_KEEPALIVE_LOG << "KeepAlive end with status: " - << status; - }); +Promise KeepaliveManager::KeepaliveLoop() { + GRPC_HTTP2_KEEPALIVE_LOG << "KeepaliveManager::KeepaliveLoop Spawning."; + keep_alive_spawned_ = true; + return Loop([this]() { + return TrySeq( + Sleep(keepalive_time_), [this]() { return MaybeSendKeepAlivePing(); }, + []() -> LoopCtl { return Continue(); }); + }); } } // namespace http2 } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.h b/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.h index 6cf0140ff2c..12e584800f0 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/keepalive.h @@ -18,8 +18,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_KEEPALIVE_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_KEEPALIVE_H +#include "src/core/lib/promise/loop.h" #include "src/core/lib/promise/party.h" #include "src/core/lib/promise/promise.h" +#include "src/core/lib/promise/sleep.h" #include "src/core/util/grpc_check.h" #include "absl/status/status.h" @@ -45,8 +47,7 @@ class KeepAliveInterface { class KeepaliveManager { public: KeepaliveManager(std::unique_ptr keep_alive_interface, - Duration keepalive_timeout, Duration keepalive_time, - Party* party); + Duration keepalive_timeout, Duration keepalive_time); // Needs to be called when any data is read from the endpoint. void GotData() { @@ -66,11 +67,13 @@ class KeepaliveManager { keepalive_timeout_ = keepalive_timeout; } - private: - // Spawns the keepalive loop on the given party. This MUST be called at most - // once during the lifetime of the keepalive manager. - void MaybeSpawnKeepaliveLoop(Party* party); + bool IsKeepAliveLoopNeeded(); + + // Returns a promise that processes keepalive pings. This MUST be called at + // most once during the lifetime of the keepalive manager. + Promise KeepaliveLoop(); + private: // Returns a promise that sleeps for the keepalive_timeout_ and triggers the // keepalive timeout unless data is read within the keepalive timeout. auto WaitForKeepAliveTimeout(); diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/parsing.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/parsing.cc index 279be89a1b6..6c1bab488d7 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/parsing.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/parsing.cc @@ -754,6 +754,17 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t, GRPC_CHTTP2_IF_TRACING(ERROR) << "grpc_chttp2_stream not accepted"; return init_header_skip_frame_parser(t, priority_type, is_eoh); } + + uint32_t current_open_streams = t->stream_map.size() + t->extra_streams; + if (t->max_concurrent_streams_overload_protection) { + current_open_streams = + t->streams_allocated.load(std::memory_order_relaxed); + } + + t->settings.mutable_local().UpdateMaxConcurrentStreams( + t->stream_quota->GetConnectionMaxConcurrentRequests( + current_open_streams)); + if (GRPC_TRACE_FLAG_ENABLED(http) || GRPC_TRACE_FLAG_ENABLED(chttp2_new_stream)) { LOG(INFO) << "[t:" << t << " fd:" << grpc_endpoint_get_fd(t->ep.get()) diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.cc index 1244a23f67c..0fc3a3f128a 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.cc @@ -17,31 +17,33 @@ // #include "src/core/ext/transport/chttp2/transport/ping_promise.h" +#include #include +#include #include +#include +#include "src/core/ext/transport/chttp2/transport/frame.h" +#include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/promise/latch.h" #include "src/core/lib/promise/map.h" -#include "src/core/lib/promise/party.h" -#include "src/core/lib/promise/race.h" -#include "src/core/lib/promise/sleep.h" -#include "src/core/lib/promise/try_seq.h" +#include "src/core/lib/promise/poll.h" +#include "src/core/lib/promise/promise.h" +#include "src/core/lib/slice/slice_buffer.h" #include "src/core/util/grpc_check.h" #include "src/core/util/match.h" #include "src/core/util/time.h" +#include "absl/functional/any_invocable.h" +#include "absl/status/status.h" +#include "absl/types/span.h" namespace grpc_core { namespace http2 { using Callback = absl::AnyInvocable; using grpc_event_engine::experimental::EventEngine; -#define GRPC_HTTP2_PING_LOG \ - LOG_IF(INFO, (GRPC_TRACE_FLAG_ENABLED(http) || \ - GRPC_TRACE_FLAG_ENABLED(bdp_estimator) || \ - GRPC_TRACE_FLAG_ENABLED(http_keepalive) || \ - GRPC_TRACE_FLAG_ENABLED(http2_ping))) - Promise PingManager::PingPromiseCallbacks::RequestPing( Callback on_initiate, bool important) { important_ping_requested_ = (important_ping_requested_ || important); @@ -68,28 +70,10 @@ PingManager::PingManager(const ChannelArgs& channel_args, Duration ping_timeout, ping_interface_(std::move(ping_interface)), ping_timeout_(ping_timeout) {} -void PingManager::TriggerDelayedPing(const Duration wait) { - // Spawn at most once. - if (delayed_ping_spawned_) { - return; - } - delayed_ping_spawned_ = true; - GetContext()->Spawn( - "DelayedPing", - // TODO(akshitpatel) : [PH2][P2] : Verify if we need a RefCountedPtr for - // ping_manager. - [this, wait]() mutable { - GRPC_HTTP2_PING_LOG << "Scheduling delayed ping after wait=" << wait; - return AssertResultType(TrySeq( - Sleep(wait), - [this]() mutable { return ping_interface_->TriggerWrite(); })); - }, - [this](auto) { delayed_ping_spawned_ = false; }); -} - -bool PingManager::NeedToPing(const Duration next_allowed_ping_interval) { +PingManager::TriggerPingArgs PingManager::NeedToPing( + const Duration next_allowed_ping_interval) { if (!ping_callbacks_.PingRequested()) { - return false; + return TriggerPingArgs(std::nullopt, /*need_to_ping=*/false); } return Match( @@ -100,13 +84,13 @@ bool PingManager::NeedToPing(const Duration next_allowed_ping_interval) { GRPC_HTTP2_PING_LOG << "CLIENT" << "[" << "PH2" << "]: Ping sent" << ping_rate_policy_.GetDebugString(); - return true; + return TriggerPingArgs(std::nullopt, /*need_to_ping=*/true); }, [this](Chttp2PingRatePolicy::TooManyRecentPings) { GRPC_HTTP2_PING_LOG << "CLIENT" << "[" << "PH2" << "]: Ping delayed too many recent pings: " << ping_rate_policy_.GetDebugString(); - return false; + return TriggerPingArgs(std::nullopt, /*need_to_ping=*/false); }, [this](Chttp2PingRatePolicy::TooSoon too_soon) mutable { GRPC_HTTP2_PING_LOG @@ -115,73 +99,49 @@ bool PingManager::NeedToPing(const Duration next_allowed_ping_interval) { << too_soon.last_ping << ", minimum wait:" << too_soon.next_allowed_ping_interval << ", need to wait:" << too_soon.wait; - TriggerDelayedPing(too_soon.wait); - return false; + std::optional delayed_ping_wait; + if (!std::exchange(delayed_ping_spawned_, true)) { + delayed_ping_wait = too_soon.wait; + } + return TriggerPingArgs(delayed_ping_wait, /*need_to_ping=*/false); }); } -void PingManager::SpawnTimeout(const Duration ping_timeout, - const uint64_t opaque_data) { - GetContext()->Spawn( - "PingTimeout", - // TODO(akshitpatel) : [PH2][P2] : Verify if we need a RefCountedPtr for - // ping_manager. - [this, ping_timeout, opaque_data]() { - return AssertResultType(Race( - TrySeq(ping_callbacks_.PingTimeout(ping_timeout), - [this, opaque_data](bool trigger_ping_timeout) mutable { - return If( - trigger_ping_timeout, - [this, opaque_data]() { - GRPC_HTTP2_PING_LOG - << " Ping ack not received for id=" - << opaque_data << ". Ping timeout triggered."; - return ping_interface_->PingTimeout(); - }, - []() { return absl::OkStatus(); }); - }), - ping_callbacks_.WaitForPingAck())); - }, - [](auto) {}); -} - -void PingManager::MaybeGetSerializedPingFrames( - SliceBuffer& output_buffer, const Duration next_allowed_ping_interval) { +std::optional PingManager::MaybeGetSerializedPingFrames( + FrameSender& frame_sender, Duration next_allowed_ping_interval) { GRPC_HTTP2_PING_LOG << "PingManager MaybeGetSerializedPingFrames " "pending_ping_acks_ size: " << pending_ping_acks_.size() << " next_allowed_ping_interval: " << next_allowed_ping_interval; GRPC_DCHECK(!opaque_data_.has_value()); - std::vector frames; - frames.reserve(pending_ping_acks_.size() + 1); // +1 for the ping frame. + frame_sender.ReserveRegularFrames(pending_ping_acks_.size() + 1); // Get the serialized ping acks if needed. for (uint64_t opaque_data : pending_ping_acks_) { - frames.emplace_back(GetHttp2PingFrame(/*ack=*/true, opaque_data)); + frame_sender.AddRegularFrame(GetHttp2PingFrame(/*ack=*/true, opaque_data)); } pending_ping_acks_.clear(); // Get the serialized ping frame if needed. - if (NeedToPing(next_allowed_ping_interval)) { + TriggerPingArgs trigger_ping_args = NeedToPing(next_allowed_ping_interval); + if (trigger_ping_args.need_to_ping) { const uint64_t opaque_data = ping_callbacks_.StartPing(); - frames.emplace_back(GetHttp2PingFrame(/*ack=*/false, opaque_data)); + frame_sender.AddRegularFrame(GetHttp2PingFrame(/*ack=*/false, opaque_data)); opaque_data_ = opaque_data; GRPC_HTTP2_PING_LOG << "Created ping frame for id= " << opaque_data; } - // Serialize the frames if any. - if (!frames.empty()) { - Serialize(absl::Span(frames), output_buffer); - } + return trigger_ping_args.delayed_ping_wait; } -void PingManager::NotifyPingSent() { +std::optional PingManager::NotifyPingSent() { if (opaque_data_.has_value()) { - SpawnTimeout(ping_timeout_, opaque_data_.value()); SentPing(); - opaque_data_.reset(); + return std::exchange(opaque_data_, std::nullopt); } + + return std::nullopt; } void PingManager::AddPendingPingAck(const uint64_t opaque_data) { diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.h b/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.h index e294de653fd..fa360d081f7 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/ping_promise.h @@ -18,24 +18,44 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_PROMISE_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_PROMISE_H +#include +#include #include +#include +#include +#include #include "src/core/ext/transport/chttp2/transport/frame.h" #include "src/core/ext/transport/chttp2/transport/ping_abuse_policy.h" #include "src/core/ext/transport/chttp2/transport/ping_callbacks.h" #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" +#include "src/core/lib/channel/channel_args.h" #include "src/core/lib/promise/if.h" #include "src/core/lib/promise/inter_activity_latch.h" #include "src/core/lib/promise/map.h" +#include "src/core/lib/promise/poll.h" #include "src/core/lib/promise/promise.h" +#include "src/core/lib/promise/race.h" +#include "src/core/lib/promise/sleep.h" +#include "src/core/lib/promise/try_seq.h" #include "src/core/lib/slice/slice_buffer.h" #include "src/core/util/grpc_check.h" #include "src/core/util/shared_bit_gen.h" #include "src/core/util/time.h" +#include "absl/functional/any_invocable.h" +#include "absl/log/log.h" +#include "absl/status/status.h" namespace grpc_core { namespace http2 { +#define GRPC_HTTP2_PING_LOG \ + LOG_IF(INFO, (GRPC_TRACE_FLAG_ENABLED(http) || \ + GRPC_TRACE_FLAG_ENABLED(bdp_estimator) || \ + GRPC_TRACE_FLAG_ENABLED(http_keepalive) || \ + GRPC_TRACE_FLAG_ENABLED(http2_ping))) + // Ping Promise Spawns Overview // | Promise Spawn | Max Duration | Promise | Max Spawns | @@ -60,7 +80,7 @@ namespace http2 { class PingInterface { public: // Returns a promise that triggers a write cycle on the transport. - virtual Promise TriggerWrite() = 0; + virtual absl::Status TriggerWrite() = 0; // Returns a promise that handles the ping timeout. virtual Promise PingTimeout() = 0; @@ -71,83 +91,17 @@ class PingInterface { // single thread. This guarantee is achieved by spawning all the promises // returned by this class on the same transport party. class PingManager { - public: - PingManager(const ChannelArgs& channel_args, Duration ping_timeout, - std::unique_ptr ping_interface, - std::shared_ptr - event_engine); - - // If there are any pending ping requests or ping acks, populates the output - // buffer with the serialized ping frames. - void MaybeGetSerializedPingFrames(SliceBuffer& output_buf, - Duration next_allowed_ping_interval); - - // Notify the ping system that a ping has been sent. This will spawn a ping - // timeout promise. - void NotifyPingSent(); - - // Ping Rate policy wrapper - void ReceivedDataFrame() { ping_rate_policy_.ReceivedDataFrame(); } - - // Ping abuse policy wrapper - bool NotifyPingAbusePolicy(const bool transport_idle) { - return ping_abuse_policy_.ReceivedOnePing(transport_idle); - } - - void ResetPingClock(bool is_client) { - if (!is_client) { - ping_abuse_policy_.ResetPingStrikes(); - } - ping_rate_policy_.ResetPingsBeforeDataRequired(); - } - - // Ping callbacks wrapper - - // Returns a promise that resolves once a new ping is initiated and ack is - // received for the same. The on_initiate callback is executed when the - // ping is initiated. - auto RequestPing(absl::AnyInvocable on_initiate, bool important) { - return ping_callbacks_.RequestPing(std::move(on_initiate), important); - } - - // Returns a promise that resolves once the next valid ping ack is received. - auto WaitForPingAck() { return ping_callbacks_.WaitForPingAck(); } - - // Cancels all the callbacks for the inflight pings. This function does not - // cancel the promises that are waiting on the ping ack. - // This should be called as part of closing the transport to free up any - // memory in use by the ping callbacks. - void CancelCallbacks() { ping_callbacks_.CancelCallbacks(); } - - uint64_t StartPing() { return ping_callbacks_.StartPing(); } - bool PingRequested() { return ping_callbacks_.PingRequested(); } - bool ImportantPingRequested() const { - return ping_callbacks_.ImportantPingRequested(); - } - bool AckPing(uint64_t id) { return ping_callbacks_.AckPing(id); } - size_t CountPingInflight() { return ping_callbacks_.CountPingInflight(); } - - Http2Frame GetHttp2PingFrame(uint64_t opaque_data) { - return Http2PingFrame{/*ack=*/false, opaque_data}; - } - - std::optional TestOnlyMaybeGetSerializedPingFrames( - SliceBuffer& output_buffer, Duration next_allowed_ping_interval) { - GRPC_DCHECK(!opaque_data_.has_value()); - if (NeedToPing(next_allowed_ping_interval)) { - uint64_t opaque_data = ping_callbacks_.StartPing(); - Http2Frame frame = GetHttp2PingFrame(/*ack*/ false, opaque_data); - Serialize(absl::Span(&frame, 1), output_buffer); - opaque_data_ = opaque_data; - return opaque_data; + private: + struct TriggerPingArgs { + TriggerPingArgs(std::optional delayed_ping_wait, + bool need_to_ping) + : delayed_ping_wait(delayed_ping_wait), need_to_ping(need_to_ping) { + GRPC_DCHECK(!(delayed_ping_wait.has_value() && need_to_ping)); } - return std::nullopt; - } - - void AddPendingPingAck(uint64_t opaque_data); - - private: + std::optional delayed_ping_wait; + bool need_to_ping; + }; class PingPromiseCallbacks { public: explicit PingPromiseCallbacks( @@ -225,11 +179,101 @@ class PingManager { // Duration to wait before triggering a ping timeout. Duration ping_timeout_; - void TriggerDelayedPing(Duration wait); - bool NeedToPing(Duration next_allowed_ping_interval); - void SpawnTimeout(Duration ping_timeout, uint64_t opaque_data); + TriggerPingArgs NeedToPing(Duration next_allowed_ping_interval); void SentPing() { ping_rate_policy_.SentPing(); } + + public: + PingManager(const ChannelArgs& channel_args, Duration ping_timeout, + std::unique_ptr ping_interface, + std::shared_ptr + event_engine); + + // If there are any pending ping requests or ping acks, populates the output + // buffer with the serialized ping frames. Returns the arguments for + // scheduling the delayed ping. + std::optional MaybeGetSerializedPingFrames( + FrameSender& frame_sender, Duration next_allowed_ping_interval); + + // Notify the ping system that a ping has been sent. Returns the opaque data + // of the ping frame if a new ping was sent. The caller is expected to + // spawn a ping timeout promise using TimeoutPromise() for this returned + // value. + std::optional NotifyPingSent(); + + // Ping Rate policy wrapper + void ReceivedDataFrame() { ping_rate_policy_.ReceivedDataFrame(); } + + // Ping abuse policy wrapper + bool NotifyPingAbusePolicy(const bool transport_idle) { + return ping_abuse_policy_.ReceivedOnePing(transport_idle); + } + + void ResetPingClock(bool is_client) { + if (!is_client) { + ping_abuse_policy_.ResetPingStrikes(); + } + ping_rate_policy_.ResetPingsBeforeDataRequired(); + } + + // Ping callbacks wrapper + + // Returns a promise that resolves once a new ping is initiated and ack is + // received for the same. The on_initiate callback is executed when the + // ping is initiated. + auto RequestPing(absl::AnyInvocable on_initiate, bool important) { + return ping_callbacks_.RequestPing(std::move(on_initiate), important); + } + + // Returns a promise that resolves once the next valid ping ack is received. + auto WaitForPingAck() { return ping_callbacks_.WaitForPingAck(); } + + // Cancels all the callbacks for the inflight pings. This function does not + // cancel the promises that are waiting on the ping ack. + // This should be called as part of closing the transport to free up any + // memory in use by the ping callbacks. + void CancelCallbacks() { ping_callbacks_.CancelCallbacks(); } + + uint64_t StartPing() { return ping_callbacks_.StartPing(); } + bool PingRequested() { return ping_callbacks_.PingRequested(); } + bool ImportantPingRequested() const { + return ping_callbacks_.ImportantPingRequested(); + } + bool AckPing(uint64_t id) { return ping_callbacks_.AckPing(id); } + size_t CountPingInflight() { return ping_callbacks_.CountPingInflight(); } + + Http2Frame GetHttp2PingFrame(uint64_t opaque_data) { + return Http2PingFrame{/*ack=*/false, opaque_data}; + } + + void AddPendingPingAck(uint64_t opaque_data); + + auto TimeoutPromise(const uint64_t opaque_data) { + return AssertResultType(Race( + TrySeq(ping_callbacks_.PingTimeout(ping_timeout_), + [this, opaque_data](bool trigger_ping_timeout) mutable { + return If( + trigger_ping_timeout, + [this, opaque_data]() { + GRPC_HTTP2_PING_LOG + << " Ping ack not received for id=" << opaque_data + << ". Ping timeout triggered."; + return ping_interface_->PingTimeout(); + }, + []() { return absl::OkStatus(); }); + }), + ping_callbacks_.WaitForPingAck())); + }; + + auto DelayedPingPromise(const Duration wait) { + return TrySeq( + Sleep(wait), + [this]() mutable { return ping_interface_->TriggerWrite(); }, + [this]() { + delayed_ping_spawned_ = false; + return absl::OkStatus(); + }); + } }; } // namespace http2 } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/security_frame.h b/deps/grpc/src/core/ext/transport/chttp2/transport/security_frame.h index 0229426d555..930df11aae8 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/security_frame.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/security_frame.h @@ -17,15 +17,245 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_SECURITY_FRAME_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_SECURITY_FRAME_H -#include -#include +#include +#include +#include +#include +#include +#include + +#include "src/core/ext/transport/chttp2/transport/frame.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" +#include "src/core/lib/debug/trace.h" +#include "src/core/lib/event_engine/query_extensions.h" +#include "src/core/lib/promise/activity.h" +#include "src/core/lib/promise/context.h" +#include "src/core/lib/promise/poll.h" #include "src/core/lib/slice/slice_buffer.h" #include "src/core/lib/transport/transport_framing_endpoint_extension.h" +#include "src/core/util/grpc_check.h" +#include "src/core/util/ref_counted.h" +#include "src/core/util/sync.h" +#include "absl/base/thread_annotations.h" +#include "absl/log/log.h" +#include "absl/strings/str_format.h" namespace grpc_core { -// TODO(tjagtap) [PH2][P1] Implement +#define GRPC_HTTP2_SECURITY_FRAME_DLOG \ + DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport)) + +// Manages sending and receiving HTTP2 security frames (type 0x08). +// It bridges HTTP2 Transport and TransportFramingEndpointExtension. +class SecurityFrameHandler final : public RefCounted { + public: + SecurityFrameHandler() = default; + ~SecurityFrameHandler() override { + GRPC_HTTP2_SECURITY_FRAME_DLOG << "SecurityFrameHandler::Destructor"; + }; + SecurityFrameHandler(const SecurityFrameHandler&) = delete; + SecurityFrameHandler& operator=(const SecurityFrameHandler&) = delete; + SecurityFrameHandler(SecurityFrameHandler&&) = delete; + SecurityFrameHandler& operator=(SecurityFrameHandler&&) = delete; + + /////////////////////////////////////////////////////////////////////////////// + // Initialization + + // SendFrameCallbackFactory is called from the Transport Party. + // But the callback that it returns is run on some other thread. + auto SendFrameCallbackFactory( + std::shared_ptr + event_engine) { + return [self = this->Ref(), event_engine](SliceBuffer* data) { + event_engine->Run([self, data = std::move(*data)]() mutable { + GRPC_HTTP2_SECURITY_FRAME_DLOG << "SecurityFrameHandler::Callback"; + bool call_wakeup = false; + { + MutexLock lock(&self->mutex_); + // In the rare possibility that we receive 2 quick callbacks in + // succession before the transport is able to read the payload_ + // then we will apply the latest key and discard the old key. + self->payload_.Clear(); + if (!self->transport_closed_) { + self->payload_.Swap(&data); + call_wakeup = true; + } + } + if (call_wakeup) { + GRPC_HTTP2_SECURITY_FRAME_DLOG + << "SecurityFrameHandler::Callback Wakeup"; + self->waker_.Wakeup(); + } + }); + }; + } + + struct EndpointExtensionState { + bool is_set = false; + }; + + // Only run on the Transport Party + GRPC_MUST_USE_RESULT EndpointExtensionState Initialize( + std::shared_ptr + event_engine) { + GRPC_HTTP2_SECURITY_FRAME_DLOG << "SecurityFrameHandler::Initialize"; + endpoint_extension_ = grpc_event_engine::experimental::QueryExtension< + TransportFramingEndpointExtension>(event_engine.get()); + if (endpoint_extension_ != nullptr) { + endpoint_extension_->SetSendFrameCallback( + SendFrameCallbackFactory(event_engine)); + return EndpointExtensionState{true}; + } + LOG(ERROR) << "SecurityFrameHandler::Initialize could not initialize " + "TransportFramingEndpointExtension"; + return EndpointExtensionState{false}; + } + + /////////////////////////////////////////////////////////////////////////////// + // When a Security Frame is received by the Transport + + // Only run on the Transport Party + void ProcessPayload(SliceBuffer&& payload) { + GRPC_HTTP2_SECURITY_FRAME_DLOG << "SecurityFrameHandler::ProcessPayload"; + if (endpoint_extension_ != nullptr) { + MutexLock lock(&mutex_); + if (!transport_closed_) { + endpoint_extension_->ReceiveFrame(std::move(payload)); + } + } + } + + ////////////////////////////////////////////////////////////////////////////// + // When a Security Frame needs to be sent by the Transport + + enum class SleepState : uint8_t { + kWaitingForFrame, // Sleep until we have a security frame to send + kWriteOneFrame, + kScheduledWrite, + kTransportClosed, + }; + + // Only run on the Transport Party - From SecurityFrameLoop Promise + auto WaitForSecurityFrameSending() { + GRPC_DCHECK(endpoint_extension_ != nullptr); + return [self = this->Ref()]() -> Poll { + GRPC_HTTP2_SECURITY_FRAME_DLOG + << "SecurityFrameHandler::WaitForSecurityFrameSending"; + if (self->sleep_state_ == SleepState::kTransportClosed) { + return Empty{}; + } else if (self->sleep_state_ == SleepState::kWaitingForFrame) { + MutexLock lock(&self->mutex_); + if (self->payload_.Length() > 0) { + self->sleep_state_ = SleepState::kWriteOneFrame; + return Empty{}; + } + } + GRPC_HTTP2_SECURITY_FRAME_DLOG + << "SecurityFrameHandler::WaitForSecurityFrameSending Add Waker"; + self->waker_ = GetContext()->MakeNonOwningWaker(); + return Pending{}; + }; + } + + struct TerminateSecurityFrameLoop { + bool terminate = false; + }; + + // Only run on the Transport Party - From SecurityFrameLoop Promise + TerminateSecurityFrameLoop TriggerWriteSecurityFrame() { + GRPC_HTTP2_SECURITY_FRAME_DLOG + << "SecurityFrameHandler::TriggerWriteSecurityFrame"; + GRPC_DCHECK(endpoint_extension_ != nullptr); + GRPC_DCHECK(sleep_state_ == SleepState::kWriteOneFrame || + sleep_state_ == SleepState::kTransportClosed); + if (sleep_state_ == SleepState::kWriteOneFrame) { + sleep_state_ = SleepState::kScheduledWrite; + } + return TerminateSecurityFrameLoop{ + (sleep_state_ == SleepState::kTransportClosed)}; + } + + // TODO(tjagtap) [PH2][P5] Simplify WaitForSecurityFrameSending and + // TriggerWriteSecurityFrame by merging the two. + + // Only run on the Transport Party - From MultiplexerLoop Promise + void MaybeAppendSecurityFrame(http2::FrameSender& frame_sender) { + GRPC_DCHECK(sleep_state_ != SleepState::kWriteOneFrame); + if (sleep_state_ == SleepState::kScheduledWrite && + endpoint_extension_ != nullptr) { + Http2Frame frame = Http2SecurityFrame(); + { + MutexLock lock(&mutex_); + GRPC_DCHECK(payload_.Length() != 0); + GRPC_HTTP2_SECURITY_FRAME_DLOG + << "SecurityFrameHandler::MaybeAppendSecurityFrame Write Frame " + "Length " + << payload_.Length(); + std::get(frame).payload.Swap(&payload_); + GRPC_DCHECK(payload_.Length() == 0); + } + frame_sender.AddRegularFrame(std::move(frame)); + sleep_state_ = SleepState::kWaitingForFrame; + } + } + + ////////////////////////////////////////////////////////////////////////////// + // Cleanup + + // Only run on the Transport Party + void OnTransportClosed() { + GRPC_HTTP2_SECURITY_FRAME_DLOG << "SecurityFrameHandler::OnTransportClosed"; + MutexLock lock(&mutex_); + transport_closed_ = true; + sleep_state_ = SleepState::kTransportClosed; + payload_.Clear(); + waker_.Wakeup(); // To terminate the SecurityFrameLoop + } + + SleepState TestOnlySleepState() { return sleep_state_; } + + std::string TestOnlyDebugString() { + std::string sleep_state_str; + switch (sleep_state_) { + case SleepState::kWaitingForFrame: + sleep_state_str = "kWaitingForFrame"; + break; + case SleepState::kWriteOneFrame: + sleep_state_str = "kWriteOneFrame"; + break; + case SleepState::kScheduledWrite: + sleep_state_str = "kScheduledWrite"; + break; + case SleepState::kTransportClosed: + sleep_state_str = "kTransportClosed"; + break; + } + MutexLock lock(&mutex_); + // Do not ever LOG the payload. It has a security key. + return absl::StrFormat( + "SecurityFrameHandler{endpoint_extension_=%s, sleep_state_=%s, " + "payload_length=%d, transport_closed_=%s}", + endpoint_extension_ == nullptr ? "null" : "non-null", sleep_state_str, + payload_.Length(), transport_closed_ ? "true" : "false"); + } + + private: + // Only access endpoint_extension_ from the transport party + TransportFramingEndpointExtension* endpoint_extension_ = nullptr; + + // Initialized on the transport party and woken up by some other thread. + Waker waker_; + + Mutex mutex_; + // Written/Cleared by the other thread, Read and Cleared by transport party. + SliceBuffer payload_ ABSL_GUARDED_BY(mutex_); + // Written by transport party, read by both threads. + bool transport_closed_ ABSL_GUARDED_BY(mutex_) = false; + + // Only access sleep_state_ from the transport party + SleepState sleep_state_ = SleepState::kWaitingForFrame; +}; } // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/stream.h b/deps/grpc/src/core/ext/transport/chttp2/transport/stream.h index c642e083802..36787403ef9 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/stream.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/stream.h @@ -21,10 +21,11 @@ #include +#include #include -#include #include #include +#include #include "src/core/call/call_spine.h" #include "src/core/call/message.h" @@ -36,6 +37,7 @@ #include "src/core/ext/transport/chttp2/transport/http2_status.h" #include "src/core/ext/transport/chttp2/transport/message_assembler.h" #include "src/core/ext/transport/chttp2/transport/stream_data_queue.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/util/grpc_check.h" #include "src/core/util/ref_counted.h" #include "src/core/util/ref_counted_ptr.h" @@ -60,20 +62,42 @@ enum class HttpStreamState : uint8_t { }; // Managing the streams -struct Stream : public RefCounted { - explicit Stream(CallHandler call, +class Stream : public RefCounted { + public: + explicit Stream(CallHandler call_handler, chttp2::TransportFlowControl& transport_flow_control) - : call(std::move(call)), - is_write_closed(false), - stream_state(HttpStreamState::kIdle), - stream_id(kInvalidStreamId), - did_receive_initial_metadata(false), - did_receive_trailing_metadata(false), - did_push_server_trailing_metadata(false), - data_queue(MakeRefCounted>( - /*is_client*/ true, - /*queue_size*/ kStreamQueueSize)), - flow_control(&transport_flow_control) {} + : header_assembler_(/*is_client*/ true), + flow_control_(&transport_flow_control), + call_(std::move(call_handler)), + is_write_closed_(false), + stream_id_(kInvalidStreamId), + stream_state_(HttpStreamState::kIdle), + did_receive_initial_metadata_(false), + did_receive_trailing_metadata_(false), + did_push_server_trailing_metadata_(false), + data_queue_(MakeRefCounted>( + std::get(call_).arena(), /*is_client*/ true, + /*queue_size*/ kStreamQueueSize)) {} + + explicit Stream(CallInitiator call_initiator, + chttp2::TransportFlowControl& transport_flow_control) + : header_assembler_(/*is_client*/ false), + flow_control_(&transport_flow_control), + call_(std::move(call_initiator)), + is_write_closed_(false), + stream_id_(kInvalidStreamId), + stream_state_(HttpStreamState::kIdle), + did_receive_initial_metadata_(false), + did_receive_trailing_metadata_(false), + did_push_server_trailing_metadata_(false), + data_queue_(MakeRefCounted>( + std::get(call_).arena(), /*is_client*/ false, + /*queue_size*/ kStreamQueueSize)) {} + + Stream(const Stream&) = delete; + Stream(Stream&&) = delete; + Stream& operator=(const Stream&) = delete; + Stream& operator=(Stream&&) = delete; // TODO(akshitpatel) : [PH2][P4] : SetStreamId can be avoided if we pass the // stream id as a parameter to the dequeue function. The only downside here @@ -84,13 +108,13 @@ struct Stream : public RefCounted { const bool allow_true_binary_metadata_peer, const bool allow_true_binary_metadata_acked) { GRPC_DCHECK_NE(stream_id, 0u); - GRPC_DCHECK_EQ(this->stream_id, 0u); + GRPC_DCHECK_EQ(this->stream_id_, 0u); GRPC_HTTP2_STREAM_LOG << "Stream::InitializeStream stream_id=" << stream_id; - if (GPR_LIKELY(this->stream_id == 0)) { - this->stream_id = stream_id; - header_assembler.InitializeStream(stream_id, - allow_true_binary_metadata_acked); - data_queue->SetStreamId(stream_id, allow_true_binary_metadata_peer); + if (GPR_LIKELY(this->stream_id_ == 0)) { + this->stream_id_ = stream_id; + header_assembler_.InitializeStream(stream_id, + allow_true_binary_metadata_acked); + data_queue_->SetStreamId(stream_id, allow_true_binary_metadata_peer); } } @@ -100,12 +124,12 @@ struct Stream : public RefCounted { auto EnqueueInitialMetadata(ClientMetadataHandle&& metadata) { GRPC_HTTP2_STREAM_LOG << "Stream::EnqueueInitialMetadata"; - return data_queue->EnqueueInitialMetadata(std::move(metadata)); + return data_queue_->EnqueueInitialMetadata(std::move(metadata)); } auto EnqueueTrailingMetadata(ClientMetadataHandle&& metadata) { GRPC_HTTP2_STREAM_LOG << "Stream::EnqueueTrailingMetadata"; - return data_queue->EnqueueTrailingMetadata(std::move(metadata)); + return data_queue_->EnqueueTrailingMetadata(std::move(metadata)); } auto EnqueueMessage(MessageHandle&& message) { @@ -113,36 +137,37 @@ struct Stream : public RefCounted { << " with payload size = " << message->payload()->Length() << " and flags = " << message->flags(); - return data_queue->EnqueueMessage(std::move(message)); + return data_queue_->EnqueueMessage(std::move(message)); } auto EnqueueHalfClosed() { GRPC_HTTP2_STREAM_LOG << "Stream::EnqueueHalfClosed"; - return data_queue->EnqueueHalfClosed(); + return data_queue_->EnqueueHalfClosed(); } auto EnqueueResetStream(const uint32_t error_code) { GRPC_HTTP2_STREAM_LOG << "Stream::EnqueueResetStream" << " with error_code = " << error_code; - return data_queue->EnqueueResetStream(error_code); + return data_queue_->EnqueueResetStream(error_code); } // Called from the transport party auto DequeueFrames(const uint32_t tokens, const uint32_t stream_flow_control_tokens, - const uint32_t max_frame_length, - HPackCompressor& encoder) { - HttpStreamState state = stream_state; + const uint32_t max_frame_length, HPackCompressor& encoder, + FrameSender& frame_sender) { + HttpStreamState state = stream_state_; // Reset stream MUST not be sent if the stream is idle or closed. - return data_queue->DequeueFrames(tokens, max_frame_length, - stream_flow_control_tokens, encoder, - /*can_send_reset_stream=*/ - !(state == HttpStreamState::kIdle || - state == HttpStreamState::kClosed)); + return data_queue_->DequeueFrames(tokens, max_frame_length, + stream_flow_control_tokens, encoder, + frame_sender, + /*can_send_reset_stream=*/ + !(state == HttpStreamState::kIdle || + state == HttpStreamState::kClosed)); } auto ReceivedFlowControlWindowUpdate(const uint32_t stream_fc_tokens) { - return data_queue->ReceivedFlowControlWindowUpdate(stream_fc_tokens); + return data_queue_->ReceivedFlowControlWindowUpdate(stream_fc_tokens); } //////////////////////////////////////////////////////////////////////////// @@ -156,78 +181,90 @@ struct Stream : public RefCounted { // kHalfClosedLocal/kHalfClosedRemote -> kClosed // kClosed -> kClosed void SentInitialMetadata() { - GRPC_DCHECK(stream_state == HttpStreamState::kIdle); - stream_state = HttpStreamState::kOpen; + GRPC_DCHECK(stream_state_ == HttpStreamState::kIdle); + stream_state_ = HttpStreamState::kOpen; } void MarkHalfClosedLocal() { - switch (stream_state) { + switch (stream_state_) { case HttpStreamState::kIdle: GRPC_DCHECK(false) << "MarkHalfClosedLocal called for an idle stream"; break; case HttpStreamState::kOpen: GRPC_HTTP2_STREAM_LOG - << "Stream::MarkHalfClosedLocal stream_id=" << stream_id + << "Stream::MarkHalfClosedLocal stream_id=" << stream_id_ << " transitioning to kHalfClosedLocal"; - stream_state = HttpStreamState::kHalfClosedLocal; + stream_state_ = HttpStreamState::kHalfClosedLocal; break; case HttpStreamState::kHalfClosedRemote: GRPC_HTTP2_STREAM_LOG - << "Stream::MarkHalfClosedLocal stream_id=" << stream_id + << "Stream::MarkHalfClosedLocal stream_id=" << stream_id_ << " transitioning to kClosed"; - stream_state = HttpStreamState::kClosed; + stream_state_ = HttpStreamState::kClosed; break; case HttpStreamState::kHalfClosedLocal: break; case HttpStreamState::kClosed: GRPC_HTTP2_STREAM_LOG - << "Stream::MarkHalfClosedLocal stream_id=" << stream_id + << "Stream::MarkHalfClosedLocal stream_id=" << stream_id_ << " already closed"; break; } } void MarkHalfClosedRemote() { - switch (stream_state) { + switch (stream_state_) { case HttpStreamState::kIdle: GRPC_DCHECK(false) << "MarkHalfClosedRemote called for an idle stream"; break; case HttpStreamState::kOpen: GRPC_HTTP2_STREAM_LOG - << "Stream::MarkHalfClosedRemote stream_id=" << stream_id + << "Stream::MarkHalfClosedRemote stream_id=" << stream_id_ << " transitioning to kHalfClosedRemote"; - stream_state = HttpStreamState::kHalfClosedRemote; + stream_state_ = HttpStreamState::kHalfClosedRemote; break; case HttpStreamState::kHalfClosedLocal: GRPC_HTTP2_STREAM_LOG - << "Stream::MarkHalfClosedRemote stream_id=" << stream_id + << "Stream::MarkHalfClosedRemote stream_id=" << stream_id_ << " transitioning to kClosed"; - stream_state = HttpStreamState::kClosed; + stream_state_ = HttpStreamState::kClosed; break; case HttpStreamState::kHalfClosedRemote: break; case HttpStreamState::kClosed: GRPC_HTTP2_STREAM_LOG - << "Stream::MarkHalfClosedRemote stream_id=" << stream_id + << "Stream::MarkHalfClosedRemote stream_id=" << stream_id_ << " already closed"; break; } } inline bool IsStreamIdle() const { - return stream_state == HttpStreamState::kIdle; + return stream_state_ == HttpStreamState::kIdle; } inline bool IsStreamHalfClosedRemote() const { - return stream_state == HttpStreamState::kHalfClosedRemote; + return stream_state_ == HttpStreamState::kHalfClosedRemote; + } + inline bool IsHalfClosedLocal() const { + return stream_state_ == HttpStreamState::kHalfClosedLocal; } - inline uint32_t GetStreamId() const { return stream_id; } + inline bool IsStreamClosed() const { + return stream_state_ == HttpStreamState::kClosed; + } + + inline uint32_t GetStreamId() const { return stream_id_; } - inline bool IsClosedForWrites() const { return is_write_closed; } - inline void SetWriteClosed() { is_write_closed = true; } + inline bool IsClosedForWrites() const { + return is_write_closed_.load(std::memory_order_relaxed); + } + + inline void SetWriteClosed() { + is_write_closed_.store(true, std::memory_order_relaxed); + } inline bool CanSendWindowUpdateFrames() const { - return stream_state == HttpStreamState::kOpen || - stream_state == HttpStreamState::kHalfClosedLocal; + return stream_state_ == HttpStreamState::kOpen || + stream_state_ == HttpStreamState::kHalfClosedLocal; } inline Http2Status CanStreamReceiveDataFrames() const { @@ -236,7 +273,7 @@ struct Stream : public RefCounted { Http2ErrorCode::kStreamClosed, std::string(RFC9113::kHalfClosedRemoteState)); } - if (!did_receive_initial_metadata || did_receive_trailing_metadata) { + if (!IsInitialMetadataReceived() || IsTrailingMetadataReceived()) { return Http2Status::Http2StreamError( Http2ErrorCode::kStreamClosed, std::string(GrpcErrors::kOutOfOrderDataFrame)); @@ -245,20 +282,64 @@ struct Stream : public RefCounted { } void MaybePushServerTrailingMetadata(ServerMetadataHandle&& metadata) { + GRPC_DCHECK(std::holds_alternative(call_)); GRPC_HTTP2_STREAM_LOG << "Stream::MaybePushServerTrailingMetadata " "stream_id=" - << stream_id + << stream_id_ << " metadata=" << metadata->DebugString() << " did_push_server_trailing_metadata=" - << did_push_server_trailing_metadata; + << did_push_server_trailing_metadata_; - if (!did_push_server_trailing_metadata) { - did_push_server_trailing_metadata = true; - call.SpawnPushServerTrailingMetadata(std::move(metadata)); + if (!did_push_server_trailing_metadata_) { + did_push_server_trailing_metadata_ = true; + GetCallHandler().SpawnPushServerTrailingMetadata(std::move(metadata)); } } - CallHandler call; + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool IsInitialMetadataReceived() const { + return did_receive_initial_metadata_; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void SetInitialMetadataReceived() { + did_receive_initial_metadata_ = true; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool IsTrailingMetadataReceived() const { + return did_receive_trailing_metadata_; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void SetTrailingMetadataReceived() { + did_receive_trailing_metadata_ = true; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION CallHandler& GetCallHandler() { + return std::get(call_); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION CallInitiator& GetCallInitiator() { + return std::get(call_); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION GrpcMessageAssembler& + GetGrpcMessageAssembler() { + return assembler_; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION HeaderAssembler& GetHeaderAssembler() { + return header_assembler_; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION chttp2::StreamFlowControl& + GetStreamFlowControl() { + return flow_control_; + } + + private: + GrpcMessageAssembler assembler_; + HeaderAssembler header_assembler_; + chttp2::StreamFlowControl flow_control_; + std::variant call_; + // This flag is kept separate from the stream_state as the stream_state // is inline with the HTTP2 spec, whereas this flag is an implementation // detail of the PH2 transport. As far as PH2 is concerned, if a stream is @@ -266,19 +347,17 @@ struct Stream : public RefCounted { // Similarly if a stream is closed for reads(this is achieved by removing the // stream from the transport map), then all the frames read on that stream // will be dropped. - bool is_write_closed; + std::atomic is_write_closed_; + uint32_t stream_id_; + // This MUST be accessed from the transport party. - HttpStreamState stream_state; - uint32_t stream_id; - GrpcMessageAssembler assembler; - HeaderAssembler header_assembler; - bool did_receive_initial_metadata; - bool did_receive_trailing_metadata; - bool did_push_server_trailing_metadata; - // TODO(akshitpatel) : [PH2][P3][Server] : This would need to change to + HttpStreamState stream_state_; + bool did_receive_initial_metadata_; + bool did_receive_trailing_metadata_; + bool did_push_server_trailing_metadata_; + // TODO(akshitpatel) : [PH2][P0][Server] : This would need to change to // accomodate ServerMetadataHandle for the server side. - RefCountedPtr> data_queue; - chttp2::StreamFlowControl flow_control; + RefCountedPtr> data_queue_; }; } // namespace http2 diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/stream_data_queue.h b/deps/grpc/src/core/ext/transport/chttp2/transport/stream_data_queue.h index 2d117316807..5fdbe68a216 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/stream_data_queue.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/stream_data_queue.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -39,9 +40,11 @@ #include "src/core/ext/transport/chttp2/transport/http2_status.h" #include "src/core/ext/transport/chttp2/transport/message_assembler.h" #include "src/core/ext/transport/chttp2/transport/transport_common.h" +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" #include "src/core/lib/promise/activity.h" #include "src/core/lib/promise/context.h" #include "src/core/lib/promise/poll.h" +#include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/slice/slice_buffer.h" #include "src/core/util/grpc_check.h" #include "src/core/util/ref_counted.h" @@ -59,7 +62,8 @@ namespace http2 { template class SimpleQueue { public: - explicit SimpleQueue(const uint32_t max_tokens) : max_tokens_(max_tokens) {} + explicit SimpleQueue(Arena* arena, const uint32_t max_tokens) + : queue_(arena), max_tokens_(max_tokens) {} SimpleQueue(SimpleQueue&& rhs) = delete; SimpleQueue& operator=(SimpleQueue&& rhs) = delete; SimpleQueue(const SimpleQueue&) = delete; @@ -99,13 +103,18 @@ class SimpleQueue { } // Returns true if the queue is empty. This function is NOT thread safe. - bool IsEmpty() const { return queue_.empty(); } + inline bool IsEmpty() { return queue_.Peek() == nullptr; } + // Clears the queue. This function is NOT thread safe. - void Clear() { std::queue().swap(queue_); } + void Clear() { + while (queue_.Pop().has_value()) { + } + GRPC_DCHECK(IsEmpty()); + } - inline std::optional GetNextEntryTokens() const { - return queue_.empty() ? std::nullopt - : std::make_optional(queue_.front().tokens); + inline std::optional GetNextEntryTokens() { + Entry* front = queue_.Peek(); + return front == nullptr ? std::nullopt : std::make_optional(front->tokens); } private: @@ -116,11 +125,12 @@ class SimpleQueue { if (tokens_consumed_ == 0 || tokens_consumed_ <= max_tokens_consumed_threshold) { tokens_consumed_ += tokens; - queue_.emplace(Entry{std::move(data), tokens}); + const bool was_empty = IsEmpty(); + queue_.Push(Entry{std::move(data), tokens}); GRPC_STREAM_DATA_QUEUE_DEBUG << "Enqueue successful. Data tokens: " << tokens << " Current tokens consumed: " << tokens_consumed_; - return /*became_non_empty=*/(queue_.size() == 1); + return /*became_non_empty=*/was_empty; } GRPC_STREAM_DATA_QUEUE_DEBUG @@ -139,33 +149,35 @@ class SimpleQueue { return absl::InternalError("Tokens consumed overflowed."); } tokens_consumed_ += tokens; - queue_.emplace(Entry{std::move(data), tokens}); + const bool was_empty = IsEmpty(); + queue_.Push(Entry{std::move(data), tokens}); GRPC_STREAM_DATA_QUEUE_DEBUG << "Immediate enqueue successful. Data tokens: " << tokens << " Current tokens consumed: " << tokens_consumed_; - return /*became_non_empty*/ (queue_.size() == 1); + return /*became_non_empty*/ was_empty; } std::optional DequeueInternal(const uint32_t allowed_dequeue_tokens, const bool allow_oversized_dequeue) { - if (queue_.empty() || (queue_.front().tokens > allowed_dequeue_tokens && - !allow_oversized_dequeue)) { + Entry* front = queue_.Peek(); + if (front == nullptr || + (front->tokens > allowed_dequeue_tokens && !allow_oversized_dequeue)) { GRPC_STREAM_DATA_QUEUE_DEBUG - << "Dequeueing data. Queue size: " << queue_.size() + << "Dequeueing data." << " Max allowed dequeue tokens: " << allowed_dequeue_tokens << " Front tokens: " - << (!queue_.empty() ? std::to_string(queue_.front().tokens) - : std::string("NA")) + << (front != nullptr ? std::to_string(front->tokens) + : std::string("NA")) << " Allow oversized dequeue: " << allow_oversized_dequeue; return std::nullopt; } - auto entry = std::move(queue_.front()); - queue_.pop(); - tokens_consumed_ -= entry.tokens; + std::optional entry = queue_.Pop(); + GRPC_DCHECK(entry.has_value()); + tokens_consumed_ -= entry->tokens; auto waker = std::move(waker_); GRPC_STREAM_DATA_QUEUE_DEBUG - << "Dequeue successful. Data tokens released: " << entry.tokens + << "Dequeue successful. Data tokens released: " << entry->tokens << " Current tokens consumed: " << tokens_consumed_; // TODO(akshitpatel) : [PH2][P2] : Investigate a mechanism to only wake up @@ -173,7 +185,7 @@ class SimpleQueue { // this queue is revamped soon and so not spending time on optimization // right now. waker.Wakeup(); - return std::move(entry.data); + return std::move(entry->data); } struct Entry { @@ -181,7 +193,7 @@ class SimpleQueue { uint32_t tokens; }; - std::queue queue_; + ArenaSpsc queue_; // The maximum number of tokens that can be enqueued. This limit is used to // exert back pressure on the sender. If the sender tries to enqueue more // tokens than this limit, the enqueue promise will not resolve until the @@ -196,16 +208,58 @@ class SimpleQueue { Waker waker_; }; +// DequeueFlags is a wrapper class for the dequeue flags. The flags can only +// be set from within the StreamDataQueue class. +class DequeueFlags { + public: + static constexpr uint8_t kResetStreamDequeued = 0x01u; + static constexpr uint8_t kHalfCloseDequeued = 0x02u; + static constexpr uint8_t kInitialMetadataDequeued = 0x04u; + static constexpr uint8_t kMessageDequeued = 0x08u; + static constexpr uint8_t kTrailingMetadataDequeued = 0x10u; + + DequeueFlags() = default; + + bool IsResetStreamDequeued() const { + return (flags_ & kResetStreamDequeued) != 0u; + } + bool IsHalfCloseDequeued() const { + return (flags_ & kHalfCloseDequeued) != 0u; + } + bool IsInitialMetadataDequeued() const { + return (flags_ & kInitialMetadataDequeued) != 0u; + } + bool IsMessageDequeued() const { return (flags_ & kMessageDequeued) != 0u; } + bool IsTrailingMetadataDequeued() const { + return (flags_ & kTrailingMetadataDequeued) != 0u; + } + + bool operator==(uint8_t flags) const { return flags_ == flags; } + + private: + template + friend class StreamDataQueue; + + void set_reset_stream_dequeued() { flags_ |= kResetStreamDequeued; } + void set_half_close_dequeued() { flags_ |= kHalfCloseDequeued; } + void set_initial_metadata_dequeued() { flags_ |= kInitialMetadataDequeued; } + void set_message_dequeued() { flags_ |= kMessageDequeued; } + void set_trailing_metadata_dequeued() { flags_ |= kTrailingMetadataDequeued; } + + uint8_t flags_ = 0u; +}; + // StreamDataQueue is a thread safe. // Note: StreamDataQueue is a single producer single // consumer queue. template class StreamDataQueue : public RefCounted> { public: - explicit StreamDataQueue(const bool is_client, const uint32_t queue_size) + explicit StreamDataQueue(Arena* arena, const bool is_client, + const uint32_t queue_size) : stream_id_(0), is_client_(is_client), - queue_(queue_size), + queue_(arena, queue_size), initial_metadata_disassembler_(/*is_trailing_metadata=*/false), trailing_metadata_disassembler_(/*is_trailing_metadata=*/true) {}; ~StreamDataQueue() = default; @@ -259,7 +313,14 @@ class StreamDataQueue : public RefCounted> { GRPC_DCHECK(!is_initial_metadata_queued_); GRPC_DCHECK(!is_trailing_metadata_or_half_close_queued_); GRPC_DCHECK(metadata != nullptr); - GRPC_DCHECK(reset_stream_state_ == RstStreamState::kNotQueued); + + // Stream closed before initial metadata is enqueued. This is possible + // if the stream is cancelled between stream creation and + // PullClientInitialMetadata resolving. + if (IsEnqueueClosed()) { + return StreamWritabilityUpdate{/*became_writable=*/false, + WritableStreamPriority::kStreamClosed}; + } is_initial_metadata_queued_ = true; absl::StatusOr result = queue_.ImmediateEnqueue( @@ -376,12 +437,14 @@ class StreamDataQueue : public RefCounted> { } // Enqueue Reset Stream. - // 1. MUST be called at most once. - // 3. This function is thread safe. + // 1. This function is thread safe. + // 2. ResetStream frame can be enqueued at any point after the creation of the + // stream. + // 3. Once ResetStream is enqueued, any enqueue calls after this will be + // ignored. absl::StatusOr EnqueueResetStream( const uint32_t error_code) { MutexLock lock(&mu_); - GRPC_DCHECK(is_initial_metadata_queued_); // This can happen when the transport tries to close the stream and the // stream is cancelled from the call stack. @@ -407,35 +470,22 @@ class StreamDataQueue : public RefCounted> { ////////////////////////////////////////////////////////////////////////////// // Dequeue Helpers - - static constexpr uint8_t kResetStreamDequeued = 0x1; - static constexpr uint8_t kHalfCloseDequeued = 0x2; - static constexpr uint8_t kInitialMetadataDequeued = 0x4; - struct DequeueResult { - std::vector frames; bool is_writable; WritableStreamPriority priority; - // Maybe not be extremely accurate but should be good enough for our - // purposes. - size_t total_bytes_consumed = 0u; size_t flow_control_tokens_consumed = 0u; // Bitmask of the dequeue flags. - uint8_t flags = 0u; + DequeueFlags flags; // Returns true if the reset stream was dequeued. - bool ResetStreamDequeued() const { - return (flags & kResetStreamDequeued) != 0u; - } + bool IsResetStreamDequeued() const { return flags.IsResetStreamDequeued(); } // Returns true if the half close was dequeued. - bool HalfCloseDequeued() const { - return (flags & kHalfCloseDequeued) != 0u; - } + bool IsHalfCloseDequeued() const { return flags.IsHalfCloseDequeued(); } // Returns true if the initial metadata was dequeued. - bool InitialMetadataDequeued() const { - return (flags & kInitialMetadataDequeued) != 0u; + bool IsInitialMetadataDequeued() const { + return flags.IsInitialMetadataDequeued(); } }; @@ -462,6 +512,7 @@ class StreamDataQueue : public RefCounted> { const uint32_t max_frame_length, const uint32_t stream_fc_tokens, HPackCompressor& encoder, + FrameSender& frame_sender, const bool can_send_reset_stream) { MutexLock lock(&mu_); GRPC_STREAM_DATA_QUEUE_DEBUG @@ -478,12 +529,12 @@ class StreamDataQueue : public RefCounted> { // metadata enqueued has not reached HPACK encoder, so it is safe to drop // all frames. if (std::optional result = - HandleResetStreamLocked(can_send_reset_stream)) { + HandleResetStreamLocked(can_send_reset_stream, frame_sender)) { return std::move(*result); } HandleDequeue handle_dequeue(max_fc_tokens, max_frame_length, encoder, - *this); + frame_sender, *this); while (message_disassembler_.GetBufferedLength() <= max_fc_tokens) { const uint32_t tokens_to_dequeue = max_fc_tokens - message_disassembler_.GetBufferedLength(); @@ -502,14 +553,15 @@ class StreamDataQueue : public RefCounted> { GRPC_DCHECK_GE(stream_fc_tokens, handle_dequeue.GetFlowControlTokensConsumed()); + handle_dequeue.AppendBufferedFrames(); + return DequeueResult{ - handle_dequeue.GetFrames(), UpdateWritableStateDequeueLocked( stream_fc_tokens - handle_dequeue.GetFlowControlTokensConsumed()), priority_, - handle_dequeue.GetTotalBytesConsumed(), + /*flow_control_tokens_consumed=*/ handle_dequeue.GetFlowControlTokensConsumed(), - handle_dequeue.GetDequeueFlags()}; + /*flags=*/handle_dequeue.GetDequeueFlags()}; } // TODO(tjagtap) : [PH2][P1][FlowControl] : Call this while processing @@ -550,18 +602,20 @@ class StreamDataQueue : public RefCounted> { class HandleDequeue { public: HandleDequeue(const uint32_t max_tokens, const uint32_t max_frame_length, - HPackCompressor& encoder, StreamDataQueue& queue) + HPackCompressor& encoder, FrameSender& frame_sender, + StreamDataQueue& queue) : queue_(queue), max_frame_length_(max_frame_length), max_tokens_available_(max_tokens), flow_control_tokens_consumed_(0), - encoder_(encoder) {} + encoder_(encoder), + frame_sender_(frame_sender) {} void operator()(InitialMetadataType initial_metadata) { GRPC_STREAM_DATA_QUEUE_DEBUG << "Preparing initial metadata for sending"; queue_.initial_metadata_disassembler_.PrepareForSending( std::move(initial_metadata.metadata), encoder_); - dequeue_flags_ |= kInitialMetadataDequeued; + dequeue_flags_.set_initial_metadata_dequeued(); MaybeAppendInitialMetadataFrames(); } @@ -569,6 +623,7 @@ class StreamDataQueue : public RefCounted> { GRPC_STREAM_DATA_QUEUE_DEBUG << "Preparing trailing metadata for sending"; queue_.trailing_metadata_disassembler_.PrepareForSending( std::move(trailing_metadata.metadata), encoder_); + dequeue_flags_.set_trailing_metadata_dequeued(); } void operator()(MessageHandle message) { @@ -579,10 +634,10 @@ class StreamDataQueue : public RefCounted> { void operator()(GRPC_UNUSED HalfClosed half_closed) { GRPC_STREAM_DATA_QUEUE_DEBUG << "Preparing end of stream for sending"; - dequeue_flags_ |= kHalfCloseDequeued; + dequeue_flags_.set_half_close_dequeued(); } - std::vector GetFrames() { + void AppendBufferedFrames() { // TODO(akshitpatel) : [PH2][P3] : There is a second option here. We can // only append messages here. Additionally, when Trailing // Metadata/HalfClose/ResetStream is dequeued, we can first flush the @@ -594,20 +649,18 @@ class StreamDataQueue : public RefCounted> { MaybeAppendMessageFrames(); MaybeAppendEndOfStreamFrame(); MaybeAppendTrailingMetadataFrames(); - return std::move(frames_); } - size_t GetTotalBytesConsumed() const { return total_bytes_consumed_; } size_t GetFlowControlTokensConsumed() const { return flow_control_tokens_consumed_; } - uint8_t GetDequeueFlags() const { return dequeue_flags_; } + DequeueFlags GetDequeueFlags() const { return dequeue_flags_; } private: inline void MaybeAppendInitialMetadataFrames() { while (queue_.initial_metadata_disassembler_.HasMoreData()) { - GRPC_DCHECK(!(dequeue_flags_ & kHalfCloseDequeued)); - GRPC_DCHECK(!(dequeue_flags_ & kResetStreamDequeued)); + GRPC_DCHECK(!dequeue_flags_.IsHalfCloseDequeued()); + GRPC_DCHECK(!dequeue_flags_.IsResetStreamDequeued()); // TODO(akshitpatel) : [PH2][P2] : I do not think we need this. // HasMoreData() should be enough. bool is_end_headers = false; @@ -618,7 +671,7 @@ class StreamDataQueue : public RefCounted> { inline void MaybeAppendTrailingMetadataFrames() { while (queue_.trailing_metadata_disassembler_.HasMoreData()) { - GRPC_DCHECK(!(dequeue_flags_ & kHalfCloseDequeued)); + GRPC_DCHECK(!dequeue_flags_.IsHalfCloseDequeued()); GRPC_DCHECK_EQ(queue_.message_disassembler_.GetBufferedLength(), 0u); GRPC_DCHECK_EQ( queue_.initial_metadata_disassembler_.GetBufferedLength(), 0u); @@ -631,12 +684,31 @@ class StreamDataQueue : public RefCounted> { } inline void MaybeAppendEndOfStreamFrame() { - if (dequeue_flags_ & kHalfCloseDequeued) { + if (dequeue_flags_.IsHalfCloseDequeued()) { GRPC_DCHECK_EQ(queue_.message_disassembler_.GetBufferedLength(), 0u); GRPC_DCHECK_EQ( queue_.initial_metadata_disassembler_.GetBufferedLength(), 0u); GRPC_DCHECK_EQ( queue_.trailing_metadata_disassembler_.GetBufferedLength(), 0u); + Http2Frame* last_frame = frame_sender_.MutableLastRegularFrame(); + + // On the Server side, trailing metadata acts as end of stream and is + // always sent with END_STREAM flag set. + // To be inline with CHTTP2, InitialMetadata is always sent with + // END_STREAM flag false. + if (last_frame != nullptr && dequeue_flags_.IsMessageDequeued()) { + bool merged = std::visit( + [](auto& frame) -> bool { + using F = std::decay_t; + if constexpr (std::is_same_v) { + frame.end_stream = true; + return true; + } + return false; + }, + *last_frame); + if (merged) return; + } AppendFrame(Http2DataFrame{/*stream_id=*/queue_.stream_id_, /*end_stream=*/true, /*payload=*/SliceBuffer()}); @@ -658,11 +730,12 @@ class StreamDataQueue : public RefCounted> { << " Consumed tokens: " << flow_control_tokens_consumed_ << " Max tokens: " << max_tokens_available_; AppendFrame(std::move(frame)); + dequeue_flags_.set_message_dequeued(); } } inline void MaybeAppendResetStreamFrame() { - if (dequeue_flags_ & kResetStreamDequeued) { + if (dequeue_flags_.IsResetStreamDequeued()) { // TODO(akshitpatel) : [PH2][P2] : Consider if we can send reset stream // frame without flushing all the messages enqueued until now. GRPC_DCHECK_EQ(queue_.message_disassembler_.GetBufferedLength(), 0u); @@ -675,8 +748,10 @@ class StreamDataQueue : public RefCounted> { } inline void AppendFrame(Http2Frame&& frame) { - total_bytes_consumed_ += GetFrameMemoryUsage(frame); - frames_.emplace_back(std::move(frame)); + // FrameSender automatically accounts for the frame size in write quota. + // Maybe not be extremely accurate but should be good enough for our + // purposes. + frame_sender_.AddRegularFrame(std::forward(frame)); } StreamDataQueue& queue_; @@ -684,10 +759,9 @@ class StreamDataQueue : public RefCounted> { const uint32_t max_tokens_available_; uint32_t flow_control_tokens_consumed_; uint32_t error_code_ = static_cast(Http2ErrorCode::kNoError); - std::vector frames_; HPackCompressor& encoder_; - size_t total_bytes_consumed_ = 0u; - uint8_t dequeue_flags_ = 0u; + FrameSender& frame_sender_; + DequeueFlags dequeue_flags_; }; // Updates the writable state and priority of the stream. MUST only be called @@ -765,8 +839,9 @@ class StreamDataQueue : public RefCounted> { return is_writable_; } - inline bool IsNextQueueEntryMessage() const { - return (!queue_.IsEmpty() && queue_.GetNextEntryTokens().value() > 0); + inline bool IsNextQueueEntryMessage() { + std::optional next_entry_tokens = queue_.GetNextEntryTokens(); + return next_entry_tokens.has_value() && *next_entry_tokens > 0; } // Handles the case where a reset stream is queued. @@ -774,37 +849,32 @@ class StreamDataQueue : public RefCounted> { // DequeueResult. Otherwise, it returns std::nullopt. // This function must be called with mu_ held. std::optional HandleResetStreamLocked( - const bool can_send_reset_stream) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) { + const bool can_send_reset_stream, FrameSender& frame_sender) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) { switch (reset_stream_state_) { case RstStreamState::kDequeued: GRPC_STREAM_DATA_QUEUE_DEBUG << "Reset stream is already dequeued. Returning empty frames."; GRPC_DCHECK(queue_.IsEmpty()); is_writable_ = false; - return DequeueResult{ - std::vector(), is_writable_, priority_, - /*total_bytes_consumed=*/0u, - /*flow_control_tokens_consumed=*/0u, /*flags=*/0u}; + return DequeueResult{is_writable_, priority_, + /*flow_control_tokens_consumed=*/0u, + /*flags=*/DequeueFlags{}}; case RstStreamState::kQueued: { GRPC_STREAM_DATA_QUEUE_DEBUG << "Reset stream is queued. Skipping all frames (if any) for " "dequeuing."; is_writable_ = false; - std::vector frames; - uint8_t flags = 0u; + DequeueFlags flags; if (can_send_reset_stream) { - frames.emplace_back( + frame_sender.AddRegularFrame( Http2RstStreamFrame{stream_id_, reset_stream_error_code_}); - flags = kResetStreamDequeued; + flags.set_reset_stream_dequeued(); } queue_.Clear(); reset_stream_state_ = RstStreamState::kDequeued; - return DequeueResult{std::move(frames), - is_writable_, - priority_, - /*total_bytes_consumed=*/0u, - /*flow_control_tokens_consumed=*/0u, - flags}; + return DequeueResult{is_writable_, priority_, + /*flow_control_tokens_consumed=*/0u, flags}; } case RstStreamState::kNotQueued: return std::nullopt; diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/transport_common.h b/deps/grpc/src/core/ext/transport/chttp2/transport/transport_common.h index 685a1bfb73c..26c01fb6919 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/transport_common.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/transport_common.h @@ -39,11 +39,6 @@ #define GRPC_ARG_MAX_CONCURRENT_STREAMS_OVERLOAD_PROTECTION \ "grpc.http.overload_protection" -// EXPERIMENTAL: Fail requests at the client if the client is over max -// concurrent streams, so they may be retried elsewhere. -#define GRPC_ARG_MAX_CONCURRENT_STREAMS_REJECT_ON_CLIENT \ - "grpc.http.max_concurrent_streams_reject_on_client" - #define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2 #define GRPC_CHTTP2_PING_TIMEOUT_STR "ping timeout" diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/writable_streams.h b/deps/grpc/src/core/ext/transport/chttp2/transport/writable_streams.h index 9cdc25a2a2b..36401364e3c 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/writable_streams.h +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/writable_streams.h @@ -74,19 +74,19 @@ class WritableStreams { WritableStreams(WritableStreams&&) = delete; WritableStreams& operator=(WritableStreams&&) = delete; - absl::Status EnqueueWrapper(const StreamPtr stream, + absl::Status EnqueueWrapper(StreamPtr stream, const WritableStreamPriority priority, bool transport_tokens_available) { if (transport_tokens_available) { - return Enqueue(stream, priority); + return Enqueue(std::move(stream), priority); } else { - return BlockedOnTransportFlowControl(stream); + return BlockedOnTransportFlowControl(std::move(stream)); } } // Enqueues a stream id with the given priority. // If this returns error, transport MUST be closed. - absl::Status Enqueue(const StreamPtr stream, + absl::Status Enqueue(StreamPtr stream, const WritableStreamPriority priority) { // Streams waiting for transport flow control MUST not be added to list of // writable streams via this API, instead they MUST be added via @@ -96,7 +96,7 @@ class WritableStreams { GRPC_DCHECK(priority != WritableStreamPriority::kWaitForTransportFlowControl); StatusFlag status = sender_.UnbufferedImmediateSend( - StreamIDAndPriority{stream, priority}, /*tokens*/ 1); + StreamIDAndPriority{std::move(stream), priority}, /*tokens*/ 1); GRPC_WRITABLE_STREAMS_DEBUG << "UnbufferedImmediateEnqueue stream with priority " << GetWritableStreamPriorityString(priority) << " status " << status; @@ -109,9 +109,10 @@ class WritableStreams { // A synchronous function to add a stream id to the transport flow control // wait list. - absl::Status BlockedOnTransportFlowControl(const StreamPtr stream) { + absl::Status BlockedOnTransportFlowControl(StreamPtr stream) { prioritized_queue_.Push( - stream, WritableStreamPriority::kWaitForTransportFlowControl); + std::move(stream), + WritableStreamPriority::kWaitForTransportFlowControl); GRPC_WRITABLE_STREAMS_DEBUG << "Enqueuing a stream with priority " "kWaitForTransportFlowControl "; return absl::OkStatus(); diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/write_cycle.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/write_cycle.cc new file mode 100644 index 00000000000..4624428d09d --- /dev/null +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/write_cycle.cc @@ -0,0 +1,86 @@ +// +// +// Copyright 2026 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// + +#include "src/core/ext/transport/chttp2/transport/write_cycle.h" + +#include + +#include + +#include "src/core/ext/transport/chttp2/transport/frame.h" +#include "src/core/ext/transport/chttp2/transport/http2_settings.h" +#include "src/core/lib/transport/promise_endpoint.h" +#include "absl/container/inlined_vector.h" +#include "absl/strings/str_cat.h" + +namespace grpc_core { +namespace http2 { + +// WriteQuota + +std::string WriteQuota::DebugString() const { + return absl::StrCat("WriteQuota{target=", target_write_size_, + ", consumed=", bytes_consumed_, "}"); +} + +// WriteBufferTracker +std::string WriteBufferTracker::DebugString() const { + return absl::StrCat( + "WriteBufferTracker{regular_frames_count=", regular_frames_.size(), + ", urgent_frames_count=", urgent_frames_.size(), + ", is_first_write=", is_first_write_, "}"); +} + +// WriteCycle + +absl::InlinedVector& +WriteCycle::TestOnlyRegularFrames() { + return write_buffer_tracker_.TestOnlyRegularFrames(); +} + +absl::InlinedVector& +WriteCycle::TestOnlyUrgentFrames() { + return write_buffer_tracker_.TestOnlyUrgentFrames(); +} + +std::string WriteCycle::DebugString() const { + return absl::StrCat("WriteCycle{quota=", write_quota_.DebugString(), + ", tracker=", write_buffer_tracker_.DebugString(), "}"); +} + +// TransportWriteContext + +std::string TransportWriteContext::DebugString() const { + return absl::StrCat("TransportWriteContext{is_first_write=", is_first_write_, + "} ", + write_cycle_ ? write_cycle_->DebugString() : "null"); +} + +PromiseEndpoint::WriteArgs TransportWriteContext::GetWriteArgs( + const Http2Settings& peer_settings) { + PromiseEndpoint::WriteArgs args; + int max_frame_size = peer_settings.preferred_receive_crypto_message_size(); + if (max_frame_size == 0) { + max_frame_size = INT_MAX; + } + args.set_max_frame_size(max_frame_size); + return args; +} + +} // namespace http2 +} // namespace grpc_core diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/write_cycle.h b/deps/grpc/src/core/ext/transport/chttp2/transport/write_cycle.h new file mode 100644 index 00000000000..f6eded2f4f2 --- /dev/null +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/write_cycle.h @@ -0,0 +1,355 @@ +// +// +// Copyright 2026 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// + +#ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_WRITE_CYCLE_H +#define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_WRITE_CYCLE_H + +#include + +#include +#include +#include + +#include "src/core/ext/transport/chttp2/transport/frame.h" +#include "src/core/ext/transport/chttp2/transport/transport_common.h" +#include "src/core/ext/transport/chttp2/transport/write_size_policy.h" +#include "src/core/lib/slice/slice_buffer.h" +#include "src/core/lib/transport/promise_endpoint.h" +#include "absl/container/inlined_vector.h" + +namespace grpc_core { +namespace http2 { + +// Tracks the number of bytes that can be written in the current write +// attempt. +class WriteQuota { + public: + explicit WriteQuota(size_t target_write_size) + : target_write_size_(target_write_size) {} + + // WriteQuota is move-constructible but not copyable or assignable. + WriteQuota(const WriteQuota&) = delete; + WriteQuota& operator=(const WriteQuota&) = delete; + WriteQuota(WriteQuota&&) = default; + WriteQuota& operator=(WriteQuota&&) = delete; + + // Increments the bytes consumed for the current write attempt. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void IncrementBytesConsumed( + size_t bytes_consumed) { + bytes_consumed_ += bytes_consumed; + } + + // Returns the number of bytes remaining that can be written in the current + // write attempt. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t GetWriteBytesRemaining() const { + return (target_write_size_ > bytes_consumed_) + ? target_write_size_ - bytes_consumed_ + : 0u; + } + + // Returns the target write size for the current write attempt. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t GetTargetWriteSize() const { + return target_write_size_; + } + + std::string DebugString() const; + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t TestOnlyBytesConsumed() const { + return bytes_consumed_; + } + + private: + const size_t target_write_size_; + size_t bytes_consumed_ = 0; +}; + +// Tracks frames that need to be serialized for the current write attempt. +class WriteBufferTracker { + public: + static constexpr size_t kInlinedRegularFramesSize = 8; + static constexpr size_t kInlinedUrgentFramesSize = 2; + + explicit WriteBufferTracker(bool& is_first_write, const bool is_client) + : is_first_write_(is_first_write), is_client_(is_client) {} + + // WriteBufferTracker is move-constructible but not copyable or assignable. + WriteBufferTracker(const WriteBufferTracker&) = delete; + WriteBufferTracker& operator=(const WriteBufferTracker&) = delete; + WriteBufferTracker(WriteBufferTracker&&) = default; + WriteBufferTracker& operator=(WriteBufferTracker&&) = delete; + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void AddRegularFrame( + Http2Frame&& frame) { + regular_frames_.emplace_back(std::forward(frame)); + } + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void AddUrgentFrame(Http2Frame&& frame) { + urgent_frames_.emplace_back(std::forward(frame)); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void ReserveRegularFrames( + const size_t size) { + regular_frames_.reserve(regular_frames_.size() + size); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool CanSerializeUrgentFrames() const { + return !urgent_frames_.empty(); + } + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool CanSerializeRegularFrames() const { + return (!regular_frames_.empty() || is_first_write_); + } + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool HasFirstWriteHappened() const { + return !is_first_write_; + } + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t GetUrgentFrameCount() const { + return urgent_frames_.size(); + } + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t GetRegularFrameCount() const { + return regular_frames_.size(); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION + absl::InlinedVector& + TestOnlyRegularFrames() { + return regular_frames_; + } + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION + absl::InlinedVector& + TestOnlyUrgentFrames() { + return urgent_frames_; + } + + std::string DebugString() const; + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Http2Frame* MutableLastRegularFrame() { + return regular_frames_.empty() ? nullptr : ®ular_frames_.back(); + } + + struct SerializeStats { + bool& should_reset_ping_clock; + }; + + SliceBuffer SerializeRegularFrames(SerializeStats stats) { + GRPC_DCHECK(CanSerializeRegularFrames()); + return SerializeFrames(regular_frames_, stats); + } + + SliceBuffer SerializeUrgentFrames(SerializeStats stats) { + GRPC_DCHECK(CanSerializeUrgentFrames()); + return SerializeFrames(urgent_frames_, stats); + } + + private: + template + SliceBuffer SerializeFrames(FrameContainer& frames, SerializeStats stats) { + SliceBuffer output_buf; + if (GPR_UNLIKELY(is_first_write_)) { + // https://www.rfc-editor.org/rfc/rfc9113.html#name-http-2-connection-preface + // RFC9113: + // The client and server each send a different connection preface. + // Client: The connection preface starts with the string "PRI * + // HTTP/2.0\r\n\r\nSM\r\n\r\n". This sequence MUST be followed by a + // SETTINGS frame, which MAY be empty. + // Server: The server connection preface consists of a potentially empty + // SETTINGS frame that MUST be the first frame the server sends in the + // HTTP/2 connection. + if (is_client_) { + output_buf.Append( + Slice::FromCopiedString(GRPC_CHTTP2_CLIENT_CONNECT_STRING)); + } + is_first_write_ = false; + } + SerializeReturn result = + Serialize(absl::Span(frames), output_buf); + frames.clear(); + stats.should_reset_ping_clock = result.should_reset_ping_clock; + return output_buf; + } + + // These frames are serialized and written to the endpoint in a single + // endpoint write. + absl::InlinedVector regular_frames_; + // If there are urgent frames to be written, these frames are serialized + // and written to the endpoint separately before the default frames are + // written. + absl::InlinedVector urgent_frames_; + bool& is_first_write_; + const bool is_client_; +}; + +// Wrapper for WriteBufferTracker and WriteQuota to be used by the callers +// that only need to add frames to the write buffer. +class FrameSender { + public: + FrameSender(WriteBufferTracker& tracker, WriteQuota& quota) + : tracker_(tracker), quota_(quota) {} + + // FrameSender is not copyable or assignable. + FrameSender(FrameSender&&) = delete; + FrameSender& operator=(FrameSender&&) = delete; + FrameSender(const FrameSender&) = delete; + FrameSender& operator=(const FrameSender&) = delete; + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void AddRegularFrame( + Http2Frame&& frame) { + quota_.IncrementBytesConsumed(GetFrameMemoryUsage(frame)); + tracker_.AddRegularFrame(std::forward(frame)); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void AddUrgentFrame(Http2Frame&& frame) { + // TODO(akshitpatel) [PH2][P5]: Maybe urgent frames should consume quota + // too? + tracker_.AddUrgentFrame(std::forward(frame)); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void ReserveRegularFrames(size_t size) { + tracker_.ReserveRegularFrames(size); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Http2Frame* MutableLastRegularFrame() { + return tracker_.MutableLastRegularFrame(); + } + + private: + WriteBufferTracker& tracker_; + WriteQuota& quota_; +}; + +// Per write cycle state. +class WriteCycle { + public: + WriteCycle(Chttp2WriteSizePolicy* write_size_policy, bool& is_first_write, + const bool& is_client) + : write_buffer_tracker_(is_first_write, is_client), + write_quota_(write_size_policy->WriteTargetSize()), + write_size_policy_(write_size_policy) {} + + // WriteCycle is move-constructible but not copyable or assignable. + WriteCycle(const WriteCycle&) = delete; + WriteCycle& operator=(const WriteCycle&) = delete; + WriteCycle(WriteCycle&&) = default; + WriteCycle& operator=(WriteCycle&&) = delete; + + using SerializeStats = WriteBufferTracker::SerializeStats; + + // Wrappers for Chttp2WriteSizePolicy + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void BeginWrite( + const size_t bytes_to_write) { + write_size_policy_->BeginWrite(bytes_to_write); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void EndWrite(bool success) { + write_size_policy_->EndWrite(success); + } + + // Wrappers for WriteQuota + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t GetWriteBytesRemaining() const { + return write_quota_.GetWriteBytesRemaining(); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION SliceBuffer + SerializeRegularFrames(SerializeStats stats) { + return write_buffer_tracker_.SerializeRegularFrames(stats); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION SliceBuffer + SerializeUrgentFrames(SerializeStats stats) { + return write_buffer_tracker_.SerializeUrgentFrames(stats); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool CanSerializeUrgentFrames() const { + return write_buffer_tracker_.CanSerializeUrgentFrames(); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t GetUrgentFrameCount() const { + return write_buffer_tracker_.GetUrgentFrameCount(); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION size_t GetRegularFrameCount() const { + return write_buffer_tracker_.GetRegularFrameCount(); + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool CanSerializeRegularFrames() const { + return write_buffer_tracker_.CanSerializeRegularFrames(); + } + + absl::InlinedVector& + TestOnlyRegularFrames(); + absl::InlinedVector& + TestOnlyUrgentFrames(); + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION WriteBufferTracker& + write_buffer_tracker() { + return write_buffer_tracker_; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION FrameSender GetFrameSender() { + return FrameSender(write_buffer_tracker_, write_quota_); + } + + std::string DebugString() const; + + private: + WriteBufferTracker write_buffer_tracker_; + WriteQuota write_quota_; + Chttp2WriteSizePolicy* write_size_policy_; +}; + +class TransportWriteContext { + public: + explicit TransportWriteContext(const bool is_client) + : is_client_(is_client) {} + + // TransportWriteContext cannot be copied, moved or assigned. + TransportWriteContext(const TransportWriteContext&) = delete; + TransportWriteContext& operator=(const TransportWriteContext&) = delete; + TransportWriteContext(TransportWriteContext&&) = delete; + TransportWriteContext& operator=(TransportWriteContext&&) = delete; + + void StartWriteCycle() { + write_cycle_.emplace(&write_size_policy_, is_first_write_, is_client_); + } + + void EndWriteCycle() { write_cycle_.reset(); } + + // Calls to this function MUST only be made between StartWriteCycle and + // EndWriteCycle. + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION WriteCycle& GetWriteCycle() { + return *write_cycle_; + } + + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool IsFirstWrite() const { + return is_first_write_; + } + + static PromiseEndpoint::WriteArgs GetWriteArgs( + const Http2Settings& peer_settings); + + std::string DebugString() const; + + private: + Chttp2WriteSizePolicy write_size_policy_; + std::optional write_cycle_; + bool is_first_write_ = true; + const bool is_client_; +}; + +} // namespace http2 +} // namespace grpc_core + +#endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_WRITE_CYCLE_H diff --git a/deps/grpc/src/core/ext/transport/chttp2/transport/writing.cc b/deps/grpc/src/core/ext/transport/chttp2/transport/writing.cc index 647058d3be1..30f6caa033a 100644 --- a/deps/grpc/src/core/ext/transport/chttp2/transport/writing.cc +++ b/deps/grpc/src/core/ext/transport/chttp2/transport/writing.cc @@ -341,19 +341,9 @@ class WriteContext { } grpc_chttp2_stream* NextStream() { - if (grpc_core::IsChttp2BoundWriteSizeEnabled()) { - if (t_->outbuf.c_slice_buffer()->length >= target_write_size_) { - result_.partial = true; - return nullptr; - } - } else { - // TODO(ctiller): this is likely buggy now, but everything seems to be - // working, so I'm keeping the above fix just for the experiment until - // we've had time to soak it fully. - if (t_->outbuf.c_slice_buffer()->length > target_write_size_) { - result_.partial = true; - return nullptr; - } + if (t_->outbuf.c_slice_buffer()->length >= target_write_size_) { + result_.partial = true; + return nullptr; } grpc_chttp2_stream* s; @@ -422,9 +412,7 @@ class DataSendContext { {t_->settings.peer().max_frame_size(), stream_remote_window(), t_->flow_control.remote_window(), static_cast(write_context_->target_write_size()) - - (grpc_core::IsChttp2BoundWriteSizeEnabled() - ? static_cast(t_->outbuf.Length()) - : static_cast(0))}), + static_cast(t_->outbuf.Length())}), 0, std::numeric_limits::max()); } @@ -564,7 +552,7 @@ class StreamWriteContext { t_->http2_stats->IncrementHttp2StreamStalls(); report_stall(t_, s_, "stream"); grpc_chttp2_list_add_stalled_by_stream(t_, s_); - } else if (grpc_core::IsChttp2BoundWriteSizeEnabled()) { + } else { GRPC_CHTTP2_STREAM_REF(s_, "chttp2_writing:fork"); grpc_chttp2_list_add_writable_stream(t_, s_); stream_became_writable_ = true; @@ -725,24 +713,38 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write( num_stream_bytes = t->outbuf.c_slice_buffer()->length - orig_len; s->byte_counter += static_cast(num_stream_bytes); ++s->write_counter; - if (s->traced && grpc_endpoint_can_track_err(t->ep.get())) { - grpc_core::CopyContextFn copy_context_fn = - grpc_core::GrpcHttp2GetCopyContextFn(); - if (copy_context_fn != nullptr && - grpc_core::GrpcHttp2GetWriteTimestampsCallback() != nullptr) { - // Old way of collecting TCP traces - t->context_list->emplace_back( - copy_context_fn(s->arena), outbuf_relative_start_pos, - num_stream_bytes, s->byte_counter, s->write_counter - 1); - } else if (s->call_tracer != nullptr && - grpc_event_engine::experimental:: - grpc_is_event_engine_endpoint(t->ep.get())) { + // TODO(ctiller): we're duplicating logic here whilst the experiment is + // rolling out, in order to make the deletion of the experiment simpler. + if (grpc_core::IsBufferListDeletionPrepEnabled()) { + if (s->call_tracer != nullptr && + grpc_event_engine::experimental::grpc_is_event_engine_endpoint( + t->ep.get())) { // New way of collecting TCP traces auto tcp_call_tracer = s->call_tracer->StartNewTcpTrace(); if (tcp_call_tracer != nullptr) { ctx.AddTcpCallTracer(std::move(tcp_call_tracer), s->byte_counter); } } + } else { + if (s->traced && grpc_endpoint_can_track_err(t->ep.get())) { + grpc_core::CopyContextFn copy_context_fn = + grpc_core::GrpcHttp2GetCopyContextFn(); + if (copy_context_fn != nullptr && + grpc_core::GrpcHttp2GetWriteTimestampsCallback() != nullptr) { + // Old way of collecting TCP traces + t->context_list->emplace_back( + copy_context_fn(s->arena), outbuf_relative_start_pos, + num_stream_bytes, s->byte_counter, s->write_counter - 1); + } else if (s->call_tracer != nullptr && + grpc_event_engine::experimental:: + grpc_is_event_engine_endpoint(t->ep.get())) { + // New way of collecting TCP traces + auto tcp_call_tracer = s->call_tracer->StartNewTcpTrace(); + if (tcp_call_tracer != nullptr) { + ctx.AddTcpCallTracer(std::move(tcp_call_tracer), s->byte_counter); + } + } + } } outbuf_relative_start_pos += num_stream_bytes; } diff --git a/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb.h b/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb.h new file mode 100644 index 00000000000..eeecd952f16 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb.h @@ -0,0 +1,1875 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/checked.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef CEL_EXPR_CHECKED_PROTO_UPB_H__UPB_H_ +#define CEL_EXPR_CHECKED_PROTO_UPB_H__UPB_H_ + +#include "upb/generated_code_support.h" + +#include "cel/expr/checked.upb_minitable.h" + +#include "cel/expr/syntax.upb_minitable.h" +#include "google/protobuf/empty.upb_minitable.h" +#include "google/protobuf/struct.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct cel_expr_CheckedExpr { upb_Message UPB_PRIVATE(base); } cel_expr_CheckedExpr; +typedef struct cel_expr_Type { upb_Message UPB_PRIVATE(base); } cel_expr_Type; +typedef struct cel_expr_Type_ListType { upb_Message UPB_PRIVATE(base); } cel_expr_Type_ListType; +typedef struct cel_expr_Type_MapType { upb_Message UPB_PRIVATE(base); } cel_expr_Type_MapType; +typedef struct cel_expr_Type_FunctionType { upb_Message UPB_PRIVATE(base); } cel_expr_Type_FunctionType; +typedef struct cel_expr_Type_AbstractType { upb_Message UPB_PRIVATE(base); } cel_expr_Type_AbstractType; +typedef struct cel_expr_Decl { upb_Message UPB_PRIVATE(base); } cel_expr_Decl; +typedef struct cel_expr_Decl_IdentDecl { upb_Message UPB_PRIVATE(base); } cel_expr_Decl_IdentDecl; +typedef struct cel_expr_Decl_FunctionDecl { upb_Message UPB_PRIVATE(base); } cel_expr_Decl_FunctionDecl; +typedef struct cel_expr_Decl_FunctionDecl_Overload { upb_Message UPB_PRIVATE(base); } cel_expr_Decl_FunctionDecl_Overload; +typedef struct cel_expr_Reference { upb_Message UPB_PRIVATE(base); } cel_expr_Reference; +struct cel_expr_Constant; +struct cel_expr_Expr; +struct cel_expr_SourceInfo; +struct google_protobuf_Empty; + +typedef enum { + cel_expr_Type_PRIMITIVE_TYPE_UNSPECIFIED = 0, + cel_expr_Type_BOOL = 1, + cel_expr_Type_INT64 = 2, + cel_expr_Type_UINT64 = 3, + cel_expr_Type_DOUBLE = 4, + cel_expr_Type_STRING = 5, + cel_expr_Type_BYTES = 6 +} cel_expr_Type_PrimitiveType; + +typedef enum { + cel_expr_Type_WELL_KNOWN_TYPE_UNSPECIFIED = 0, + cel_expr_Type_ANY = 1, + cel_expr_Type_TIMESTAMP = 2, + cel_expr_Type_DURATION = 3 +} cel_expr_Type_WellKnownType; + + + +/* cel.expr.CheckedExpr */ + +UPB_INLINE cel_expr_CheckedExpr* cel_expr_CheckedExpr_new(upb_Arena* arena) { + return (cel_expr_CheckedExpr*)_upb_Message_New(&cel__expr__CheckedExpr_msg_init, arena); +} +UPB_INLINE cel_expr_CheckedExpr* cel_expr_CheckedExpr_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_CheckedExpr* ret = cel_expr_CheckedExpr_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__CheckedExpr_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_CheckedExpr* cel_expr_CheckedExpr_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_CheckedExpr* ret = cel_expr_CheckedExpr_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__CheckedExpr_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_CheckedExpr_serialize(const cel_expr_CheckedExpr* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__CheckedExpr_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_CheckedExpr_serialize_ex(const cel_expr_CheckedExpr* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__CheckedExpr_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_CheckedExpr_clear_reference_map(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE size_t cel_expr_CheckedExpr_reference_map_size(const cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + return map ? _upb_Map_Size(map) : 0; +} +UPB_INLINE bool cel_expr_CheckedExpr_reference_map_get(const cel_expr_CheckedExpr* msg, int64_t key, cel_expr_Reference** val) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__ReferenceMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Reference_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Get(map, &key, sizeof(key), val, sizeof(*val)); +} +UPB_INLINE bool cel_expr_CheckedExpr_reference_map_next(const cel_expr_CheckedExpr* msg, int64_t* key, const cel_expr_Reference** val, + size_t* iter) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__ReferenceMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Reference_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + upb_MessageValue k; + upb_MessageValue v; + if (!upb_Map_Next(map, &k, &v, iter)) return false; + memcpy(key, &k, sizeof(*key)); + memcpy(val, &v, sizeof(*val)); + return true; +} +UPB_INLINE const upb_Map* _cel_expr_CheckedExpr_reference_map_upb_map(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__ReferenceMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Reference_msg_init); + return upb_Message_GetMap(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_Map* _cel_expr_CheckedExpr_reference_map_mutable_upb_map(cel_expr_CheckedExpr* msg, upb_Arena* a) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__ReferenceMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Reference_msg_init); + return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, sizeof(int64_t), sizeof(cel_expr_Reference*), a); +} +UPB_INLINE void cel_expr_CheckedExpr_clear_type_map(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE size_t cel_expr_CheckedExpr_type_map_size(const cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + return map ? _upb_Map_Size(map) : 0; +} +UPB_INLINE bool cel_expr_CheckedExpr_type_map_get(const cel_expr_CheckedExpr* msg, int64_t key, cel_expr_Type** val) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__TypeMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Get(map, &key, sizeof(key), val, sizeof(*val)); +} +UPB_INLINE bool cel_expr_CheckedExpr_type_map_next(const cel_expr_CheckedExpr* msg, int64_t* key, const cel_expr_Type** val, + size_t* iter) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__TypeMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + upb_MessageValue k; + upb_MessageValue v; + if (!upb_Map_Next(map, &k, &v, iter)) return false; + memcpy(key, &k, sizeof(*key)); + memcpy(val, &v, sizeof(*val)); + return true; +} +UPB_INLINE const upb_Map* _cel_expr_CheckedExpr_type_map_upb_map(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__TypeMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + return upb_Message_GetMap(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_Map* _cel_expr_CheckedExpr_type_map_mutable_upb_map(cel_expr_CheckedExpr* msg, upb_Arena* a) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__TypeMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, sizeof(int64_t), sizeof(cel_expr_Type*), a); +} +UPB_INLINE void cel_expr_CheckedExpr_clear_expr(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct cel_expr_Expr* cel_expr_CheckedExpr_expr(const cel_expr_CheckedExpr* msg) { + const struct cel_expr_Expr* default_val = NULL; + const struct cel_expr_Expr* ret; + const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_CheckedExpr_has_expr(const cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_CheckedExpr_clear_source_info(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct cel_expr_SourceInfo* cel_expr_CheckedExpr_source_info(const cel_expr_CheckedExpr* msg) { + const struct cel_expr_SourceInfo* default_val = NULL; + const struct cel_expr_SourceInfo* ret; + const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_CheckedExpr_has_source_info(const cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_CheckedExpr_clear_expr_version(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_CheckedExpr_expr_version(const cel_expr_CheckedExpr* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {6, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_CheckedExpr_reference_map_clear(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return; + _upb_Map_Clear(map); +} +UPB_INLINE bool cel_expr_CheckedExpr_reference_map_set(cel_expr_CheckedExpr* msg, int64_t key, cel_expr_Reference* val, upb_Arena* a) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__ReferenceMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Reference_msg_init); + upb_Map* map = _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), + &field, sizeof(key), sizeof(val), a); + return _upb_Map_Insert(map, &key, sizeof(key), &val, sizeof(val), a) != + kUpb_MapInsertStatus_OutOfMemory; +} +UPB_INLINE bool cel_expr_CheckedExpr_reference_map_delete(cel_expr_CheckedExpr* msg, int64_t key) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Delete(map, &key, sizeof(key), NULL); +} +UPB_INLINE void cel_expr_CheckedExpr_type_map_clear(cel_expr_CheckedExpr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return; + _upb_Map_Clear(map); +} +UPB_INLINE bool cel_expr_CheckedExpr_type_map_set(cel_expr_CheckedExpr* msg, int64_t key, cel_expr_Type* val, upb_Arena* a) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr__TypeMapEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Map* map = _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), + &field, sizeof(key), sizeof(val), a); + return _upb_Map_Insert(map, &key, sizeof(key), &val, sizeof(val), a) != + kUpb_MapInsertStatus_OutOfMemory; +} +UPB_INLINE bool cel_expr_CheckedExpr_type_map_delete(cel_expr_CheckedExpr* msg, int64_t key) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Delete(map, &key, sizeof(key), NULL); +} +UPB_INLINE void cel_expr_CheckedExpr_set_expr(cel_expr_CheckedExpr *msg, struct cel_expr_Expr* value) { + const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_CheckedExpr_mutable_expr(cel_expr_CheckedExpr* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_CheckedExpr_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_CheckedExpr_set_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_CheckedExpr_set_source_info(cel_expr_CheckedExpr *msg, struct cel_expr_SourceInfo* value) { + const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_SourceInfo* cel_expr_CheckedExpr_mutable_source_info(cel_expr_CheckedExpr* msg, upb_Arena* arena) { + struct cel_expr_SourceInfo* sub = (struct cel_expr_SourceInfo*)cel_expr_CheckedExpr_source_info(msg); + if (sub == NULL) { + sub = (struct cel_expr_SourceInfo*)_upb_Message_New(&cel__expr__SourceInfo_msg_init, arena); + if (sub) cel_expr_CheckedExpr_set_source_info(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_CheckedExpr_set_expr_version(cel_expr_CheckedExpr *msg, upb_StringView value) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Type */ + +UPB_INLINE cel_expr_Type* cel_expr_Type_new(upb_Arena* arena) { + return (cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); +} +UPB_INLINE cel_expr_Type* cel_expr_Type_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Type* ret = cel_expr_Type_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Type* cel_expr_Type_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Type* ret = cel_expr_Type_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Type_serialize(const cel_expr_Type* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Type_serialize_ex(const cel_expr_Type* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type_msg_init, options, arena, &ptr, len); + return ptr; +} +typedef enum { + cel_expr_Type_type_kind_dyn = 1, + cel_expr_Type_type_kind_null = 2, + cel_expr_Type_type_kind_primitive = 3, + cel_expr_Type_type_kind_wrapper = 4, + cel_expr_Type_type_kind_well_known = 5, + cel_expr_Type_type_kind_list_type = 6, + cel_expr_Type_type_kind_map_type = 7, + cel_expr_Type_type_kind_function = 8, + cel_expr_Type_type_kind_message_type = 9, + cel_expr_Type_type_kind_type_param = 10, + cel_expr_Type_type_kind_type = 11, + cel_expr_Type_type_kind_error = 12, + cel_expr_Type_type_kind_abstract_type = 14, + cel_expr_Type_type_kind_NOT_SET = 0 +} cel_expr_Type_type_kind_oneofcases; +UPB_INLINE cel_expr_Type_type_kind_oneofcases cel_expr_Type_type_kind_case(const cel_expr_Type* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Type_type_kind_oneofcases)upb_Message_WhichOneofFieldNumber( + UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_type_kind(cel_expr_Type* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearOneof(UPB_UPCAST(msg), &cel__expr__Type_msg_init, &field); +} +UPB_INLINE void cel_expr_Type_clear_dyn(cel_expr_Type* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Empty* cel_expr_Type_dyn(const cel_expr_Type* msg) { + const struct google_protobuf_Empty* default_val = NULL; + const struct google_protobuf_Empty* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Empty_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_dyn(const cel_expr_Type* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_null(cel_expr_Type* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t cel_expr_Type_null(const cel_expr_Type* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_null(const cel_expr_Type* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_primitive(cel_expr_Type* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t cel_expr_Type_primitive(const cel_expr_Type* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_primitive(const cel_expr_Type* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_wrapper(cel_expr_Type* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t cel_expr_Type_wrapper(const cel_expr_Type* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {4, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_wrapper(const cel_expr_Type* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_well_known(cel_expr_Type* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t cel_expr_Type_well_known(const cel_expr_Type* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {5, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_well_known(const cel_expr_Type* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_list_type(cel_expr_Type* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type_ListType* cel_expr_Type_list_type(const cel_expr_Type* msg) { + const cel_expr_Type_ListType* default_val = NULL; + const cel_expr_Type_ListType* ret; + const upb_MiniTableField field = {6, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__ListType_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_list_type(const cel_expr_Type* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_map_type(cel_expr_Type* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(12, 16), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type_MapType* cel_expr_Type_map_type(const cel_expr_Type* msg) { + const cel_expr_Type_MapType* default_val = NULL; + const cel_expr_Type_MapType* ret; + const upb_MiniTableField field = {7, UPB_SIZE(12, 16), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__MapType_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_map_type(const cel_expr_Type* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(12, 16), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_function(cel_expr_Type* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(12, 16), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type_FunctionType* cel_expr_Type_function(const cel_expr_Type* msg) { + const cel_expr_Type_FunctionType* default_val = NULL; + const cel_expr_Type_FunctionType* ret; + const upb_MiniTableField field = {8, UPB_SIZE(12, 16), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__FunctionType_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_function(const cel_expr_Type* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(12, 16), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_message_type(cel_expr_Type* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Type_message_type(const cel_expr_Type* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_message_type(const cel_expr_Type* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_type_param(cel_expr_Type* msg) { + const upb_MiniTableField field = {10, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Type_type_param(const cel_expr_Type* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {10, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_type_param(const cel_expr_Type* msg) { + const upb_MiniTableField field = {10, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_type(cel_expr_Type* msg) { + const upb_MiniTableField field = {11, UPB_SIZE(12, 16), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* cel_expr_Type_type(const cel_expr_Type* msg) { + const cel_expr_Type* default_val = NULL; + const cel_expr_Type* ret; + const upb_MiniTableField field = {11, UPB_SIZE(12, 16), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_type(const cel_expr_Type* msg) { + const upb_MiniTableField field = {11, UPB_SIZE(12, 16), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_error(cel_expr_Type* msg) { + const upb_MiniTableField field = {12, UPB_SIZE(12, 16), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Empty* cel_expr_Type_error(const cel_expr_Type* msg) { + const struct google_protobuf_Empty* default_val = NULL; + const struct google_protobuf_Empty* ret; + const upb_MiniTableField field = {12, UPB_SIZE(12, 16), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Empty_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_error(const cel_expr_Type* msg) { + const upb_MiniTableField field = {12, UPB_SIZE(12, 16), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_clear_abstract_type(cel_expr_Type* msg) { + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type_AbstractType* cel_expr_Type_abstract_type(const cel_expr_Type* msg) { + const cel_expr_Type_AbstractType* default_val = NULL; + const cel_expr_Type_AbstractType* ret; + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__AbstractType_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_has_abstract_type(const cel_expr_Type* msg) { + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_Type_set_dyn(cel_expr_Type *msg, struct google_protobuf_Empty* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Empty_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Empty* cel_expr_Type_mutable_dyn(cel_expr_Type* msg, upb_Arena* arena) { + struct google_protobuf_Empty* sub = (struct google_protobuf_Empty*)cel_expr_Type_dyn(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Empty*)_upb_Message_New(&google__protobuf__Empty_msg_init, arena); + if (sub) cel_expr_Type_set_dyn(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Type_set_null(cel_expr_Type *msg, int32_t value) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Type_set_primitive(cel_expr_Type *msg, int32_t value) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Type_set_wrapper(cel_expr_Type *msg, int32_t value) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Type_set_well_known(cel_expr_Type *msg, int32_t value) { + const upb_MiniTableField field = {5, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Type_set_list_type(cel_expr_Type *msg, cel_expr_Type_ListType* value) { + const upb_MiniTableField field = {6, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__ListType_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type_ListType* cel_expr_Type_mutable_list_type(cel_expr_Type* msg, upb_Arena* arena) { + struct cel_expr_Type_ListType* sub = (struct cel_expr_Type_ListType*)cel_expr_Type_list_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type_ListType*)_upb_Message_New(&cel__expr__Type__ListType_msg_init, arena); + if (sub) cel_expr_Type_set_list_type(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Type_set_map_type(cel_expr_Type *msg, cel_expr_Type_MapType* value) { + const upb_MiniTableField field = {7, UPB_SIZE(12, 16), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__MapType_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type_MapType* cel_expr_Type_mutable_map_type(cel_expr_Type* msg, upb_Arena* arena) { + struct cel_expr_Type_MapType* sub = (struct cel_expr_Type_MapType*)cel_expr_Type_map_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type_MapType*)_upb_Message_New(&cel__expr__Type__MapType_msg_init, arena); + if (sub) cel_expr_Type_set_map_type(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Type_set_function(cel_expr_Type *msg, cel_expr_Type_FunctionType* value) { + const upb_MiniTableField field = {8, UPB_SIZE(12, 16), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__FunctionType_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type_FunctionType* cel_expr_Type_mutable_function(cel_expr_Type* msg, upb_Arena* arena) { + struct cel_expr_Type_FunctionType* sub = (struct cel_expr_Type_FunctionType*)cel_expr_Type_function(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type_FunctionType*)_upb_Message_New(&cel__expr__Type__FunctionType_msg_init, arena); + if (sub) cel_expr_Type_set_function(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Type_set_message_type(cel_expr_Type *msg, upb_StringView value) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Type_set_type_param(cel_expr_Type *msg, upb_StringView value) { + const upb_MiniTableField field = {10, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Type_set_type(cel_expr_Type *msg, cel_expr_Type* value) { + const upb_MiniTableField field = {11, UPB_SIZE(12, 16), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Type_mutable_type(cel_expr_Type* msg, upb_Arena* arena) { + struct cel_expr_Type* sub = (struct cel_expr_Type*)cel_expr_Type_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (sub) cel_expr_Type_set_type(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Type_set_error(cel_expr_Type *msg, struct google_protobuf_Empty* value) { + const upb_MiniTableField field = {12, UPB_SIZE(12, 16), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Empty_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Empty* cel_expr_Type_mutable_error(cel_expr_Type* msg, upb_Arena* arena) { + struct google_protobuf_Empty* sub = (struct google_protobuf_Empty*)cel_expr_Type_error(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Empty*)_upb_Message_New(&google__protobuf__Empty_msg_init, arena); + if (sub) cel_expr_Type_set_error(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Type_set_abstract_type(cel_expr_Type *msg, cel_expr_Type_AbstractType* value) { + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type__AbstractType_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type_AbstractType* cel_expr_Type_mutable_abstract_type(cel_expr_Type* msg, upb_Arena* arena) { + struct cel_expr_Type_AbstractType* sub = (struct cel_expr_Type_AbstractType*)cel_expr_Type_abstract_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type_AbstractType*)_upb_Message_New(&cel__expr__Type__AbstractType_msg_init, arena); + if (sub) cel_expr_Type_set_abstract_type(msg, sub); + } + return sub; +} + +/* cel.expr.Type.ListType */ + +UPB_INLINE cel_expr_Type_ListType* cel_expr_Type_ListType_new(upb_Arena* arena) { + return (cel_expr_Type_ListType*)_upb_Message_New(&cel__expr__Type__ListType_msg_init, arena); +} +UPB_INLINE cel_expr_Type_ListType* cel_expr_Type_ListType_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Type_ListType* ret = cel_expr_Type_ListType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__ListType_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Type_ListType* cel_expr_Type_ListType_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Type_ListType* ret = cel_expr_Type_ListType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__ListType_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Type_ListType_serialize(const cel_expr_Type_ListType* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__ListType_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Type_ListType_serialize_ex(const cel_expr_Type_ListType* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__ListType_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Type_ListType_clear_elem_type(cel_expr_Type_ListType* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* cel_expr_Type_ListType_elem_type(const cel_expr_Type_ListType* msg) { + const cel_expr_Type* default_val = NULL; + const cel_expr_Type* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_ListType_has_elem_type(const cel_expr_Type_ListType* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_Type_ListType_set_elem_type(cel_expr_Type_ListType *msg, cel_expr_Type* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Type_ListType_mutable_elem_type(cel_expr_Type_ListType* msg, upb_Arena* arena) { + struct cel_expr_Type* sub = (struct cel_expr_Type*)cel_expr_Type_ListType_elem_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (sub) cel_expr_Type_ListType_set_elem_type(msg, sub); + } + return sub; +} + +/* cel.expr.Type.MapType */ + +UPB_INLINE cel_expr_Type_MapType* cel_expr_Type_MapType_new(upb_Arena* arena) { + return (cel_expr_Type_MapType*)_upb_Message_New(&cel__expr__Type__MapType_msg_init, arena); +} +UPB_INLINE cel_expr_Type_MapType* cel_expr_Type_MapType_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Type_MapType* ret = cel_expr_Type_MapType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__MapType_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Type_MapType* cel_expr_Type_MapType_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Type_MapType* ret = cel_expr_Type_MapType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__MapType_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Type_MapType_serialize(const cel_expr_Type_MapType* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__MapType_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Type_MapType_serialize_ex(const cel_expr_Type_MapType* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__MapType_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Type_MapType_clear_key_type(cel_expr_Type_MapType* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* cel_expr_Type_MapType_key_type(const cel_expr_Type_MapType* msg) { + const cel_expr_Type* default_val = NULL; + const cel_expr_Type* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_MapType_has_key_type(const cel_expr_Type_MapType* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_MapType_clear_value_type(cel_expr_Type_MapType* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* cel_expr_Type_MapType_value_type(const cel_expr_Type_MapType* msg) { + const cel_expr_Type* default_val = NULL; + const cel_expr_Type* ret; + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_MapType_has_value_type(const cel_expr_Type_MapType* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_Type_MapType_set_key_type(cel_expr_Type_MapType *msg, cel_expr_Type* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Type_MapType_mutable_key_type(cel_expr_Type_MapType* msg, upb_Arena* arena) { + struct cel_expr_Type* sub = (struct cel_expr_Type*)cel_expr_Type_MapType_key_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (sub) cel_expr_Type_MapType_set_key_type(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Type_MapType_set_value_type(cel_expr_Type_MapType *msg, cel_expr_Type* value) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Type_MapType_mutable_value_type(cel_expr_Type_MapType* msg, upb_Arena* arena) { + struct cel_expr_Type* sub = (struct cel_expr_Type*)cel_expr_Type_MapType_value_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (sub) cel_expr_Type_MapType_set_value_type(msg, sub); + } + return sub; +} + +/* cel.expr.Type.FunctionType */ + +UPB_INLINE cel_expr_Type_FunctionType* cel_expr_Type_FunctionType_new(upb_Arena* arena) { + return (cel_expr_Type_FunctionType*)_upb_Message_New(&cel__expr__Type__FunctionType_msg_init, arena); +} +UPB_INLINE cel_expr_Type_FunctionType* cel_expr_Type_FunctionType_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Type_FunctionType* ret = cel_expr_Type_FunctionType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__FunctionType_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Type_FunctionType* cel_expr_Type_FunctionType_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Type_FunctionType* ret = cel_expr_Type_FunctionType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__FunctionType_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Type_FunctionType_serialize(const cel_expr_Type_FunctionType* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__FunctionType_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Type_FunctionType_serialize_ex(const cel_expr_Type_FunctionType* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__FunctionType_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Type_FunctionType_clear_result_type(cel_expr_Type_FunctionType* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* cel_expr_Type_FunctionType_result_type(const cel_expr_Type_FunctionType* msg) { + const cel_expr_Type* default_val = NULL; + const cel_expr_Type* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Type_FunctionType_has_result_type(const cel_expr_Type_FunctionType* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Type_FunctionType_clear_arg_types(cel_expr_Type_FunctionType* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* const* cel_expr_Type_FunctionType_arg_types(const cel_expr_Type_FunctionType* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_Type* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Type_FunctionType_arg_types_upb_array(const cel_expr_Type_FunctionType* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Type_FunctionType_arg_types_mutable_upb_array(cel_expr_Type_FunctionType* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} + +UPB_INLINE void cel_expr_Type_FunctionType_set_result_type(cel_expr_Type_FunctionType *msg, cel_expr_Type* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Type_FunctionType_mutable_result_type(cel_expr_Type_FunctionType* msg, upb_Arena* arena) { + struct cel_expr_Type* sub = (struct cel_expr_Type*)cel_expr_Type_FunctionType_result_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (sub) cel_expr_Type_FunctionType_set_result_type(msg, sub); + } + return sub; +} +UPB_INLINE cel_expr_Type** cel_expr_Type_FunctionType_mutable_arg_types(cel_expr_Type_FunctionType* msg, size_t* size) { + upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_Type**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_Type** cel_expr_Type_FunctionType_resize_arg_types(cel_expr_Type_FunctionType* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Type**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Type_FunctionType_add_arg_types(cel_expr_Type_FunctionType* msg, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_Type* sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} + +/* cel.expr.Type.AbstractType */ + +UPB_INLINE cel_expr_Type_AbstractType* cel_expr_Type_AbstractType_new(upb_Arena* arena) { + return (cel_expr_Type_AbstractType*)_upb_Message_New(&cel__expr__Type__AbstractType_msg_init, arena); +} +UPB_INLINE cel_expr_Type_AbstractType* cel_expr_Type_AbstractType_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Type_AbstractType* ret = cel_expr_Type_AbstractType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__AbstractType_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Type_AbstractType* cel_expr_Type_AbstractType_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Type_AbstractType* ret = cel_expr_Type_AbstractType_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Type__AbstractType_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Type_AbstractType_serialize(const cel_expr_Type_AbstractType* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__AbstractType_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Type_AbstractType_serialize_ex(const cel_expr_Type_AbstractType* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Type__AbstractType_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Type_AbstractType_clear_name(cel_expr_Type_AbstractType* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Type_AbstractType_name(const cel_expr_Type_AbstractType* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Type_AbstractType_clear_parameter_types(cel_expr_Type_AbstractType* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* const* cel_expr_Type_AbstractType_parameter_types(const cel_expr_Type_AbstractType* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_Type* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Type_AbstractType_parameter_types_upb_array(const cel_expr_Type_AbstractType* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Type_AbstractType_parameter_types_mutable_upb_array(cel_expr_Type_AbstractType* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} + +UPB_INLINE void cel_expr_Type_AbstractType_set_name(cel_expr_Type_AbstractType *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE cel_expr_Type** cel_expr_Type_AbstractType_mutable_parameter_types(cel_expr_Type_AbstractType* msg, size_t* size) { + upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_Type**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_Type** cel_expr_Type_AbstractType_resize_parameter_types(cel_expr_Type_AbstractType* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Type**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Type_AbstractType_add_parameter_types(cel_expr_Type_AbstractType* msg, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_Type* sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} + +/* cel.expr.Decl */ + +UPB_INLINE cel_expr_Decl* cel_expr_Decl_new(upb_Arena* arena) { + return (cel_expr_Decl*)_upb_Message_New(&cel__expr__Decl_msg_init, arena); +} +UPB_INLINE cel_expr_Decl* cel_expr_Decl_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Decl* ret = cel_expr_Decl_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Decl* cel_expr_Decl_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Decl* ret = cel_expr_Decl_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Decl_serialize(const cel_expr_Decl* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Decl_serialize_ex(const cel_expr_Decl* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl_msg_init, options, arena, &ptr, len); + return ptr; +} +typedef enum { + cel_expr_Decl_decl_kind_ident = 2, + cel_expr_Decl_decl_kind_function = 3, + cel_expr_Decl_decl_kind_NOT_SET = 0 +} cel_expr_Decl_decl_kind_oneofcases; +UPB_INLINE cel_expr_Decl_decl_kind_oneofcases cel_expr_Decl_decl_kind_case(const cel_expr_Decl* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Decl_decl_kind_oneofcases)upb_Message_WhichOneofFieldNumber( + UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Decl_clear_decl_kind(cel_expr_Decl* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearOneof(UPB_UPCAST(msg), &cel__expr__Decl_msg_init, &field); +} +UPB_INLINE void cel_expr_Decl_clear_name(cel_expr_Decl* msg) { + const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Decl_name(const cel_expr_Decl* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Decl_clear_ident(cel_expr_Decl* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Decl_IdentDecl* cel_expr_Decl_ident(const cel_expr_Decl* msg) { + const cel_expr_Decl_IdentDecl* default_val = NULL; + const cel_expr_Decl_IdentDecl* ret; + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__IdentDecl_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Decl_has_ident(const cel_expr_Decl* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Decl_clear_function(cel_expr_Decl* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Decl_FunctionDecl* cel_expr_Decl_function(const cel_expr_Decl* msg) { + const cel_expr_Decl_FunctionDecl* default_val = NULL; + const cel_expr_Decl_FunctionDecl* ret; + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__FunctionDecl_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Decl_has_function(const cel_expr_Decl* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_Decl_set_name(cel_expr_Decl *msg, upb_StringView value) { + const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Decl_set_ident(cel_expr_Decl *msg, cel_expr_Decl_IdentDecl* value) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__IdentDecl_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Decl_IdentDecl* cel_expr_Decl_mutable_ident(cel_expr_Decl* msg, upb_Arena* arena) { + struct cel_expr_Decl_IdentDecl* sub = (struct cel_expr_Decl_IdentDecl*)cel_expr_Decl_ident(msg); + if (sub == NULL) { + sub = (struct cel_expr_Decl_IdentDecl*)_upb_Message_New(&cel__expr__Decl__IdentDecl_msg_init, arena); + if (sub) cel_expr_Decl_set_ident(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Decl_set_function(cel_expr_Decl *msg, cel_expr_Decl_FunctionDecl* value) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__FunctionDecl_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Decl_FunctionDecl* cel_expr_Decl_mutable_function(cel_expr_Decl* msg, upb_Arena* arena) { + struct cel_expr_Decl_FunctionDecl* sub = (struct cel_expr_Decl_FunctionDecl*)cel_expr_Decl_function(msg); + if (sub == NULL) { + sub = (struct cel_expr_Decl_FunctionDecl*)_upb_Message_New(&cel__expr__Decl__FunctionDecl_msg_init, arena); + if (sub) cel_expr_Decl_set_function(msg, sub); + } + return sub; +} + +/* cel.expr.Decl.IdentDecl */ + +UPB_INLINE cel_expr_Decl_IdentDecl* cel_expr_Decl_IdentDecl_new(upb_Arena* arena) { + return (cel_expr_Decl_IdentDecl*)_upb_Message_New(&cel__expr__Decl__IdentDecl_msg_init, arena); +} +UPB_INLINE cel_expr_Decl_IdentDecl* cel_expr_Decl_IdentDecl_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Decl_IdentDecl* ret = cel_expr_Decl_IdentDecl_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl__IdentDecl_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Decl_IdentDecl* cel_expr_Decl_IdentDecl_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Decl_IdentDecl* ret = cel_expr_Decl_IdentDecl_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl__IdentDecl_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Decl_IdentDecl_serialize(const cel_expr_Decl_IdentDecl* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl__IdentDecl_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Decl_IdentDecl_serialize_ex(const cel_expr_Decl_IdentDecl* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl__IdentDecl_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Decl_IdentDecl_clear_type(cel_expr_Decl_IdentDecl* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* cel_expr_Decl_IdentDecl_type(const cel_expr_Decl_IdentDecl* msg) { + const cel_expr_Type* default_val = NULL; + const cel_expr_Type* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Decl_IdentDecl_has_type(const cel_expr_Decl_IdentDecl* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Decl_IdentDecl_clear_value(cel_expr_Decl_IdentDecl* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 40), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct cel_expr_Constant* cel_expr_Decl_IdentDecl_value(const cel_expr_Decl_IdentDecl* msg) { + const struct cel_expr_Constant* default_val = NULL; + const struct cel_expr_Constant* ret; + const upb_MiniTableField field = {2, UPB_SIZE(16, 40), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Constant_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Decl_IdentDecl_has_value(const cel_expr_Decl_IdentDecl* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 40), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Decl_IdentDecl_clear_doc(cel_expr_Decl_IdentDecl* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Decl_IdentDecl_doc(const cel_expr_Decl_IdentDecl* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {3, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_Decl_IdentDecl_set_type(cel_expr_Decl_IdentDecl *msg, cel_expr_Type* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Decl_IdentDecl_mutable_type(cel_expr_Decl_IdentDecl* msg, upb_Arena* arena) { + struct cel_expr_Type* sub = (struct cel_expr_Type*)cel_expr_Decl_IdentDecl_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (sub) cel_expr_Decl_IdentDecl_set_type(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Decl_IdentDecl_set_value(cel_expr_Decl_IdentDecl *msg, struct cel_expr_Constant* value) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 40), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Constant_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Constant* cel_expr_Decl_IdentDecl_mutable_value(cel_expr_Decl_IdentDecl* msg, upb_Arena* arena) { + struct cel_expr_Constant* sub = (struct cel_expr_Constant*)cel_expr_Decl_IdentDecl_value(msg); + if (sub == NULL) { + sub = (struct cel_expr_Constant*)_upb_Message_New(&cel__expr__Constant_msg_init, arena); + if (sub) cel_expr_Decl_IdentDecl_set_value(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Decl_IdentDecl_set_doc(cel_expr_Decl_IdentDecl *msg, upb_StringView value) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Decl.FunctionDecl */ + +UPB_INLINE cel_expr_Decl_FunctionDecl* cel_expr_Decl_FunctionDecl_new(upb_Arena* arena) { + return (cel_expr_Decl_FunctionDecl*)_upb_Message_New(&cel__expr__Decl__FunctionDecl_msg_init, arena); +} +UPB_INLINE cel_expr_Decl_FunctionDecl* cel_expr_Decl_FunctionDecl_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Decl_FunctionDecl* ret = cel_expr_Decl_FunctionDecl_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl__FunctionDecl_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Decl_FunctionDecl* cel_expr_Decl_FunctionDecl_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Decl_FunctionDecl* ret = cel_expr_Decl_FunctionDecl_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl__FunctionDecl_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Decl_FunctionDecl_serialize(const cel_expr_Decl_FunctionDecl* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl__FunctionDecl_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Decl_FunctionDecl_serialize_ex(const cel_expr_Decl_FunctionDecl* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl__FunctionDecl_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_clear_overloads(cel_expr_Decl_FunctionDecl* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Decl_FunctionDecl_Overload* const* cel_expr_Decl_FunctionDecl_overloads(const cel_expr_Decl_FunctionDecl* msg, size_t* size) { + const upb_MiniTableField field = {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__FunctionDecl__Overload_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_Decl_FunctionDecl_Overload* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Decl_FunctionDecl_overloads_upb_array(const cel_expr_Decl_FunctionDecl* msg, size_t* size) { + const upb_MiniTableField field = {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__FunctionDecl__Overload_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Decl_FunctionDecl_overloads_mutable_upb_array(cel_expr_Decl_FunctionDecl* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__FunctionDecl__Overload_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_clear_doc(cel_expr_Decl_FunctionDecl* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Decl_FunctionDecl_doc(const cel_expr_Decl_FunctionDecl* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE cel_expr_Decl_FunctionDecl_Overload** cel_expr_Decl_FunctionDecl_mutable_overloads(cel_expr_Decl_FunctionDecl* msg, size_t* size) { + upb_MiniTableField field = {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__FunctionDecl__Overload_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_Decl_FunctionDecl_Overload**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_Decl_FunctionDecl_Overload** cel_expr_Decl_FunctionDecl_resize_overloads(cel_expr_Decl_FunctionDecl* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Decl_FunctionDecl_Overload**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_Decl_FunctionDecl_Overload* cel_expr_Decl_FunctionDecl_add_overloads(cel_expr_Decl_FunctionDecl* msg, upb_Arena* arena) { + upb_MiniTableField field = {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Decl__FunctionDecl__Overload_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_Decl_FunctionDecl_Overload* sub = (struct cel_expr_Decl_FunctionDecl_Overload*)_upb_Message_New(&cel__expr__Decl__FunctionDecl__Overload_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_set_doc(cel_expr_Decl_FunctionDecl *msg, upb_StringView value) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Decl.FunctionDecl.Overload */ + +UPB_INLINE cel_expr_Decl_FunctionDecl_Overload* cel_expr_Decl_FunctionDecl_Overload_new(upb_Arena* arena) { + return (cel_expr_Decl_FunctionDecl_Overload*)_upb_Message_New(&cel__expr__Decl__FunctionDecl__Overload_msg_init, arena); +} +UPB_INLINE cel_expr_Decl_FunctionDecl_Overload* cel_expr_Decl_FunctionDecl_Overload_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Decl_FunctionDecl_Overload* ret = cel_expr_Decl_FunctionDecl_Overload_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl__FunctionDecl__Overload_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Decl_FunctionDecl_Overload* cel_expr_Decl_FunctionDecl_Overload_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Decl_FunctionDecl_Overload* ret = cel_expr_Decl_FunctionDecl_Overload_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Decl__FunctionDecl__Overload_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Decl_FunctionDecl_Overload_serialize(const cel_expr_Decl_FunctionDecl_Overload* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl__FunctionDecl__Overload_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Decl_FunctionDecl_Overload_serialize_ex(const cel_expr_Decl_FunctionDecl_Overload* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Decl__FunctionDecl__Overload_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_clear_overload_id(cel_expr_Decl_FunctionDecl_Overload* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Decl_FunctionDecl_Overload_overload_id(const cel_expr_Decl_FunctionDecl_Overload* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_clear_params(cel_expr_Decl_FunctionDecl_Overload* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* const* cel_expr_Decl_FunctionDecl_Overload_params(const cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_Type* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Decl_FunctionDecl_Overload_params_upb_array(const cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Decl_FunctionDecl_Overload_params_mutable_upb_array(cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_clear_type_params(cel_expr_Decl_FunctionDecl_Overload* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView const* cel_expr_Decl_FunctionDecl_Overload_type_params(const cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (upb_StringView const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Decl_FunctionDecl_Overload_type_params_upb_array(const cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Decl_FunctionDecl_Overload_type_params_mutable_upb_array(cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_clear_result_type(cel_expr_Decl_FunctionDecl_Overload* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Type* cel_expr_Decl_FunctionDecl_Overload_result_type(const cel_expr_Decl_FunctionDecl_Overload* msg) { + const cel_expr_Type* default_val = NULL; + const cel_expr_Type* ret; + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Decl_FunctionDecl_Overload_has_result_type(const cel_expr_Decl_FunctionDecl_Overload* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_clear_is_instance_function(cel_expr_Decl_FunctionDecl_Overload* msg) { + const upb_MiniTableField field = {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool cel_expr_Decl_FunctionDecl_Overload_is_instance_function(const cel_expr_Decl_FunctionDecl_Overload* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_clear_doc(cel_expr_Decl_FunctionDecl_Overload* msg) { + const upb_MiniTableField field = {6, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Decl_FunctionDecl_Overload_doc(const cel_expr_Decl_FunctionDecl_Overload* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {6, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_set_overload_id(cel_expr_Decl_FunctionDecl_Overload *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE cel_expr_Type** cel_expr_Decl_FunctionDecl_Overload_mutable_params(cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size) { + upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_Type**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_Type** cel_expr_Decl_FunctionDecl_Overload_resize_params(cel_expr_Decl_FunctionDecl_Overload* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Type**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Decl_FunctionDecl_Overload_add_params(cel_expr_Decl_FunctionDecl_Overload* msg, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_Type* sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} +UPB_INLINE upb_StringView* cel_expr_Decl_FunctionDecl_Overload_mutable_type_params(cel_expr_Decl_FunctionDecl_Overload* msg, size_t* size) { + upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (upb_StringView*)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE upb_StringView* cel_expr_Decl_FunctionDecl_Overload_resize_type_params(cel_expr_Decl_FunctionDecl_Overload* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (upb_StringView*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE bool cel_expr_Decl_FunctionDecl_Overload_add_type_params(cel_expr_Decl_FunctionDecl_Overload* msg, upb_StringView val, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return false; + } + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); + return true; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_set_result_type(cel_expr_Decl_FunctionDecl_Overload *msg, cel_expr_Type* value) { + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Type_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Type* cel_expr_Decl_FunctionDecl_Overload_mutable_result_type(cel_expr_Decl_FunctionDecl_Overload* msg, upb_Arena* arena) { + struct cel_expr_Type* sub = (struct cel_expr_Type*)cel_expr_Decl_FunctionDecl_Overload_result_type(msg); + if (sub == NULL) { + sub = (struct cel_expr_Type*)_upb_Message_New(&cel__expr__Type_msg_init, arena); + if (sub) cel_expr_Decl_FunctionDecl_Overload_set_result_type(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_set_is_instance_function(cel_expr_Decl_FunctionDecl_Overload *msg, bool value) { + const upb_MiniTableField field = {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Decl_FunctionDecl_Overload_set_doc(cel_expr_Decl_FunctionDecl_Overload *msg, upb_StringView value) { + const upb_MiniTableField field = {6, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Reference */ + +UPB_INLINE cel_expr_Reference* cel_expr_Reference_new(upb_Arena* arena) { + return (cel_expr_Reference*)_upb_Message_New(&cel__expr__Reference_msg_init, arena); +} +UPB_INLINE cel_expr_Reference* cel_expr_Reference_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Reference* ret = cel_expr_Reference_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Reference_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Reference* cel_expr_Reference_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Reference* ret = cel_expr_Reference_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Reference_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Reference_serialize(const cel_expr_Reference* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Reference_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Reference_serialize_ex(const cel_expr_Reference* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Reference_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Reference_clear_name(cel_expr_Reference* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Reference_name(const cel_expr_Reference* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Reference_clear_overload_id(cel_expr_Reference* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView const* cel_expr_Reference_overload_id(const cel_expr_Reference* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (upb_StringView const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Reference_overload_id_upb_array(const cel_expr_Reference* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Reference_overload_id_mutable_upb_array(cel_expr_Reference* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void cel_expr_Reference_clear_value(cel_expr_Reference* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct cel_expr_Constant* cel_expr_Reference_value(const cel_expr_Reference* msg) { + const struct cel_expr_Constant* default_val = NULL; + const struct cel_expr_Constant* ret; + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Constant_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Reference_has_value(const cel_expr_Reference* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_Reference_set_name(cel_expr_Reference *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE upb_StringView* cel_expr_Reference_mutable_overload_id(cel_expr_Reference* msg, size_t* size) { + upb_MiniTableField field = {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (upb_StringView*)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE upb_StringView* cel_expr_Reference_resize_overload_id(cel_expr_Reference* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (upb_StringView*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE bool cel_expr_Reference_add_overload_id(cel_expr_Reference* msg, upb_StringView val, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return false; + } + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); + return true; +} +UPB_INLINE void cel_expr_Reference_set_value(cel_expr_Reference *msg, struct cel_expr_Constant* value) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Constant_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Constant* cel_expr_Reference_mutable_value(cel_expr_Reference* msg, upb_Arena* arena) { + struct cel_expr_Constant* sub = (struct cel_expr_Constant*)cel_expr_Reference_value(msg); + if (sub == NULL) { + sub = (struct cel_expr_Constant*)_upb_Message_New(&cel__expr__Constant_msg_init, arena); + if (sub) cel_expr_Reference_set_value(msg, sub); + } + return sub; +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* CEL_EXPR_CHECKED_PROTO_UPB_H__UPB_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c new file mode 100644 index 00000000000..838ec23ee96 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c @@ -0,0 +1,409 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/checked.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#include +#include "upb/generated_code_support.h" +#include "cel/expr/checked.upb_minitable.h" +#include "cel/expr/syntax.upb_minitable.h" +#include "google/protobuf/empty.upb_minitable.h" +#include "google/protobuf/struct.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); +static const upb_MiniTableSubInternal cel_expr_CheckedExpr__submsgs[4] = { + {.UPB_PRIVATE(submsg) = &cel__expr__CheckedExpr__ReferenceMapEntry_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__CheckedExpr__TypeMapEntry_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__SourceInfo_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_CheckedExpr__fields[5] = { + {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(20, 48), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(24, 56), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__CheckedExpr_msg_init = { + &cel_expr_CheckedExpr__submsgs[0], + &cel_expr_CheckedExpr__fields[0], + UPB_SIZE(40, 64), 5, kUpb_ExtMode_NonExtendable, 0, UPB_FASTTABLE_MASK(56), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.CheckedExpr", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000032, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__CheckedExpr_msg_init_ptr = &cel__expr__CheckedExpr_msg_init; +static const upb_MiniTableSubInternal cel_expr_CheckedExpr_ReferenceMapEntry__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Reference_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_CheckedExpr_ReferenceMapEntry__fields[2] = { + {1, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {2, 32, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__CheckedExpr__ReferenceMapEntry_msg_init = { + &cel_expr_CheckedExpr_ReferenceMapEntry__submsgs[0], + &cel_expr_CheckedExpr_ReferenceMapEntry__fields[0], + 48, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.CheckedExpr.ReferenceMapEntry", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000008, &upb_psv8_1bt}, + }) +}; + +const upb_MiniTable* cel__expr__CheckedExpr__ReferenceMapEntry_msg_init_ptr = &cel__expr__CheckedExpr__ReferenceMapEntry_msg_init; +static const upb_MiniTableSubInternal cel_expr_CheckedExpr_TypeMapEntry__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_CheckedExpr_TypeMapEntry__fields[2] = { + {1, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {2, 32, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__CheckedExpr__TypeMapEntry_msg_init = { + &cel_expr_CheckedExpr_TypeMapEntry__submsgs[0], + &cel_expr_CheckedExpr_TypeMapEntry__fields[0], + 48, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.CheckedExpr.TypeMapEntry", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000008, &upb_psv8_1bt}, + }) +}; + +const upb_MiniTable* cel__expr__CheckedExpr__TypeMapEntry_msg_init_ptr = &cel__expr__CheckedExpr__TypeMapEntry_msg_init; +static const upb_MiniTableSubInternal cel_expr_Type__submsgs[7] = { + {.UPB_PRIVATE(submsg) = &google__protobuf__Empty_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type__ListType_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type__MapType_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type__FunctionType_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__Empty_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type__AbstractType_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Type__fields[13] = { + {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(12, 16), -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(12, 16), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(12, 16), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {10, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {11, UPB_SIZE(12, 16), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {12, UPB_SIZE(12, 16), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {14, UPB_SIZE(12, 16), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Type_msg_init = { + &cel_expr_Type__submsgs[0], + &cel_expr_Type__fields[0], + UPB_SIZE(24, 32), 13, kUpb_ExtMode_NonExtendable, 12, UPB_FASTTABLE_MASK(120), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Type", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000080100000a, &upb_pom_1bt_maxmaxb}, + {0x0010000802000010, &upb_pov4_1bt}, + {0x0010000803000018, &upb_pov4_1bt}, + {0x0010000804000020, &upb_pov4_1bt}, + {0x0010000805000028, &upb_pov4_1bt}, + {0x0010000806010032, &upb_pom_1bt_max64b}, + {0x001000080702003a, &upb_pom_1bt_max64b}, + {0x0010000808030042, &upb_pom_1bt_max64b}, + {0x001000080900004a, &upb_pos_1bt}, + {0x001000080a000052, &upb_pos_1bt}, + {0x001000080b04005a, &upb_pom_1bt_max64b}, + {0x001000080c050062, &upb_pom_1bt_maxmaxb}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000080e060072, &upb_pom_1bt_max64b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Type_msg_init_ptr = &cel__expr__Type_msg_init; +static const upb_MiniTableSubInternal cel_expr_Type_ListType__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Type_ListType__fields[1] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Type__ListType_msg_init = { + &cel_expr_Type_ListType__submsgs[0], + &cel_expr_Type_ListType__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Type.ListType", +#endif +}; + +const upb_MiniTable* cel__expr__Type__ListType_msg_init_ptr = &cel__expr__Type__ListType_msg_init; +static const upb_MiniTableSubInternal cel_expr_Type_MapType__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Type_MapType__fields[2] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Type__MapType_msg_init = { + &cel_expr_Type_MapType__submsgs[0], + &cel_expr_Type_MapType__fields[0], + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Type.MapType", +#endif +}; + +const upb_MiniTable* cel__expr__Type__MapType_msg_init_ptr = &cel__expr__Type__MapType_msg_init; +static const upb_MiniTableSubInternal cel_expr_Type_FunctionType__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Type_FunctionType__fields[2] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Type__FunctionType_msg_init = { + &cel_expr_Type_FunctionType__submsgs[0], + &cel_expr_Type_FunctionType__fields[0], + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Type.FunctionType", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001800003f010012, &upb_prm_1bt_max64b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Type__FunctionType_msg_init_ptr = &cel__expr__Type__FunctionType_msg_init; +static const upb_MiniTableSubInternal cel_expr_Type_AbstractType__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Type_AbstractType__fields[2] = { + {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Type__AbstractType_msg_init = { + &cel_expr_Type_AbstractType__submsgs[0], + &cel_expr_Type_AbstractType__fields[0], + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Type.AbstractType", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_pss_1bt}, + {0x001800003f000012, &upb_prm_1bt_max64b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Type__AbstractType_msg_init_ptr = &cel__expr__Type__AbstractType_msg_init; +static const upb_MiniTableSubInternal cel_expr_Decl__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Decl__IdentDecl_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Decl__FunctionDecl_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Decl__fields[3] = { + {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Decl_msg_init = { + &cel_expr_Decl__submsgs[0], + &cel_expr_Decl__fields[0], + UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Decl", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + {0x0020000802000012, &upb_pom_1bt_max64b}, + {0x002000080301001a, &upb_pom_1bt_max64b}, + }) +}; + +const upb_MiniTable* cel__expr__Decl_msg_init_ptr = &cel__expr__Decl_msg_init; +static const upb_MiniTableSubInternal cel_expr_Decl_IdentDecl__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Constant_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Decl_IdentDecl__fields[3] = { + {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 40), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Decl__IdentDecl_msg_init = { + &cel_expr_Decl_IdentDecl__submsgs[0], + &cel_expr_Decl_IdentDecl__fields[0], + UPB_SIZE(32, 48), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Decl.IdentDecl", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00001a, &upb_pss_1bt}, + }) +}; + +const upb_MiniTable* cel__expr__Decl__IdentDecl_msg_init_ptr = &cel__expr__Decl__IdentDecl_msg_init; +static const upb_MiniTableSubInternal cel_expr_Decl_FunctionDecl__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Decl__FunctionDecl__Overload_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Decl_FunctionDecl__fields[2] = { + {1, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Decl__FunctionDecl_msg_init = { + &cel_expr_Decl_FunctionDecl__submsgs[0], + &cel_expr_Decl_FunctionDecl__fields[0], + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Decl.FunctionDecl", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001800003f00000a, &upb_prm_1bt_max128b}, + {0x000800003f000012, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Decl__FunctionDecl_msg_init_ptr = &cel__expr__Decl__FunctionDecl_msg_init; +static const upb_MiniTableSubInternal cel_expr_Decl_FunctionDecl_Overload__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Type_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Decl_FunctionDecl_Overload__fields[6] = { + {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(20, 64), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {6, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Decl__FunctionDecl__Overload_msg_init = { + &cel_expr_Decl_FunctionDecl_Overload__submsgs[0], + &cel_expr_Decl_FunctionDecl_Overload__fields[0], + UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Decl.FunctionDecl.Overload", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + {0x003000003f000012, &upb_prm_1bt_max64b}, + {0x003800003f00001a, &upb_prs_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000900003f000028, &upb_psb1_1bt}, + {0x002000003f000032, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Decl__FunctionDecl__Overload_msg_init_ptr = &cel__expr__Decl__FunctionDecl__Overload_msg_init; +static const upb_MiniTableSubInternal cel_expr_Reference__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Constant_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Reference__fields[3] = { + {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Reference_msg_init = { + &cel_expr_Reference__submsgs[0], + &cel_expr_Reference__fields[0], + UPB_SIZE(32, 48), 3, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Reference", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x002000003f00001a, &upb_prs_1bt}, + }) +}; + +const upb_MiniTable* cel__expr__Reference_msg_init_ptr = &cel__expr__Reference_msg_init; +static const upb_MiniTable *messages_layout[13] = { + &cel__expr__CheckedExpr_msg_init, + &cel__expr__CheckedExpr__ReferenceMapEntry_msg_init, + &cel__expr__CheckedExpr__TypeMapEntry_msg_init, + &cel__expr__Type_msg_init, + &cel__expr__Type__ListType_msg_init, + &cel__expr__Type__MapType_msg_init, + &cel__expr__Type__FunctionType_msg_init, + &cel__expr__Type__AbstractType_msg_init, + &cel__expr__Decl_msg_init, + &cel__expr__Decl__IdentDecl_msg_init, + &cel__expr__Decl__FunctionDecl_msg_init, + &cel__expr__Decl__FunctionDecl__Overload_msg_init, + &cel__expr__Reference_msg_init, +}; + +const upb_MiniTableFile cel_expr_checked_proto_upb_file_layout = { + messages_layout, + NULL, + NULL, + 13, + 0, + 0, +}; + +#include "upb/port/undef.inc" + diff --git a/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h new file mode 100644 index 00000000000..9d5bf205af8 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h @@ -0,0 +1,56 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/checked.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef CEL_EXPR_CHECKED_PROTO_UPB_H__UPB_MINITABLE_H_ +#define CEL_EXPR_CHECKED_PROTO_UPB_H__UPB_MINITABLE_H_ + +#include "upb/generated_code_support.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const upb_MiniTable cel__expr__CheckedExpr_msg_init; +extern const upb_MiniTable* cel__expr__CheckedExpr_msg_init_ptr; +extern const upb_MiniTable cel__expr__CheckedExpr__ReferenceMapEntry_msg_init; +extern const upb_MiniTable* cel__expr__CheckedExpr__ReferenceMapEntry_msg_init_ptr; +extern const upb_MiniTable cel__expr__CheckedExpr__TypeMapEntry_msg_init; +extern const upb_MiniTable* cel__expr__CheckedExpr__TypeMapEntry_msg_init_ptr; +extern const upb_MiniTable cel__expr__Type_msg_init; +extern const upb_MiniTable* cel__expr__Type_msg_init_ptr; +extern const upb_MiniTable cel__expr__Type__ListType_msg_init; +extern const upb_MiniTable* cel__expr__Type__ListType_msg_init_ptr; +extern const upb_MiniTable cel__expr__Type__MapType_msg_init; +extern const upb_MiniTable* cel__expr__Type__MapType_msg_init_ptr; +extern const upb_MiniTable cel__expr__Type__FunctionType_msg_init; +extern const upb_MiniTable* cel__expr__Type__FunctionType_msg_init_ptr; +extern const upb_MiniTable cel__expr__Type__AbstractType_msg_init; +extern const upb_MiniTable* cel__expr__Type__AbstractType_msg_init_ptr; +extern const upb_MiniTable cel__expr__Decl_msg_init; +extern const upb_MiniTable* cel__expr__Decl_msg_init_ptr; +extern const upb_MiniTable cel__expr__Decl__IdentDecl_msg_init; +extern const upb_MiniTable* cel__expr__Decl__IdentDecl_msg_init_ptr; +extern const upb_MiniTable cel__expr__Decl__FunctionDecl_msg_init; +extern const upb_MiniTable* cel__expr__Decl__FunctionDecl_msg_init_ptr; +extern const upb_MiniTable cel__expr__Decl__FunctionDecl__Overload_msg_init; +extern const upb_MiniTable* cel__expr__Decl__FunctionDecl__Overload_msg_init_ptr; +extern const upb_MiniTable cel__expr__Reference_msg_init; +extern const upb_MiniTable* cel__expr__Reference_msg_init_ptr; + +extern const upb_MiniTableFile cel_expr_checked_proto_upb_file_layout; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* CEL_EXPR_CHECKED_PROTO_UPB_H__UPB_MINITABLE_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb.h b/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb.h new file mode 100644 index 00000000000..027cd0389cc --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb.h @@ -0,0 +1,2223 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/syntax.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef CEL_EXPR_SYNTAX_PROTO_UPB_H__UPB_H_ +#define CEL_EXPR_SYNTAX_PROTO_UPB_H__UPB_H_ + +#include "upb/generated_code_support.h" + +#include "cel/expr/syntax.upb_minitable.h" + +#include "google/protobuf/duration.upb_minitable.h" +#include "google/protobuf/struct.upb_minitable.h" +#include "google/protobuf/timestamp.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct cel_expr_ParsedExpr { upb_Message UPB_PRIVATE(base); } cel_expr_ParsedExpr; +typedef struct cel_expr_Expr { upb_Message UPB_PRIVATE(base); } cel_expr_Expr; +typedef struct cel_expr_Expr_Ident { upb_Message UPB_PRIVATE(base); } cel_expr_Expr_Ident; +typedef struct cel_expr_Expr_Select { upb_Message UPB_PRIVATE(base); } cel_expr_Expr_Select; +typedef struct cel_expr_Expr_Call { upb_Message UPB_PRIVATE(base); } cel_expr_Expr_Call; +typedef struct cel_expr_Expr_CreateList { upb_Message UPB_PRIVATE(base); } cel_expr_Expr_CreateList; +typedef struct cel_expr_Expr_CreateStruct { upb_Message UPB_PRIVATE(base); } cel_expr_Expr_CreateStruct; +typedef struct cel_expr_Expr_CreateStruct_Entry { upb_Message UPB_PRIVATE(base); } cel_expr_Expr_CreateStruct_Entry; +typedef struct cel_expr_Expr_Comprehension { upb_Message UPB_PRIVATE(base); } cel_expr_Expr_Comprehension; +typedef struct cel_expr_Constant { upb_Message UPB_PRIVATE(base); } cel_expr_Constant; +typedef struct cel_expr_SourceInfo { upb_Message UPB_PRIVATE(base); } cel_expr_SourceInfo; +typedef struct cel_expr_SourceInfo_Extension { upb_Message UPB_PRIVATE(base); } cel_expr_SourceInfo_Extension; +typedef struct cel_expr_SourceInfo_Extension_Version { upb_Message UPB_PRIVATE(base); } cel_expr_SourceInfo_Extension_Version; +struct google_protobuf_Duration; +struct google_protobuf_Timestamp; + +typedef enum { + cel_expr_SourceInfo_Extension_COMPONENT_UNSPECIFIED = 0, + cel_expr_SourceInfo_Extension_COMPONENT_PARSER = 1, + cel_expr_SourceInfo_Extension_COMPONENT_TYPE_CHECKER = 2, + cel_expr_SourceInfo_Extension_COMPONENT_RUNTIME = 3 +} cel_expr_SourceInfo_Extension_Component; + + + +/* cel.expr.ParsedExpr */ + +UPB_INLINE cel_expr_ParsedExpr* cel_expr_ParsedExpr_new(upb_Arena* arena) { + return (cel_expr_ParsedExpr*)_upb_Message_New(&cel__expr__ParsedExpr_msg_init, arena); +} +UPB_INLINE cel_expr_ParsedExpr* cel_expr_ParsedExpr_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_ParsedExpr* ret = cel_expr_ParsedExpr_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__ParsedExpr_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_ParsedExpr* cel_expr_ParsedExpr_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_ParsedExpr* ret = cel_expr_ParsedExpr_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__ParsedExpr_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_ParsedExpr_serialize(const cel_expr_ParsedExpr* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__ParsedExpr_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_ParsedExpr_serialize_ex(const cel_expr_ParsedExpr* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__ParsedExpr_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_ParsedExpr_clear_expr(cel_expr_ParsedExpr* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_ParsedExpr_expr(const cel_expr_ParsedExpr* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_ParsedExpr_has_expr(const cel_expr_ParsedExpr* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_ParsedExpr_clear_source_info(cel_expr_ParsedExpr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_SourceInfo* cel_expr_ParsedExpr_source_info(const cel_expr_ParsedExpr* msg) { + const cel_expr_SourceInfo* default_val = NULL; + const cel_expr_SourceInfo* ret; + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_ParsedExpr_has_source_info(const cel_expr_ParsedExpr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_ParsedExpr_set_expr(cel_expr_ParsedExpr *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_ParsedExpr_mutable_expr(cel_expr_ParsedExpr* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_ParsedExpr_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_ParsedExpr_set_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_ParsedExpr_set_source_info(cel_expr_ParsedExpr *msg, cel_expr_SourceInfo* value) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_SourceInfo* cel_expr_ParsedExpr_mutable_source_info(cel_expr_ParsedExpr* msg, upb_Arena* arena) { + struct cel_expr_SourceInfo* sub = (struct cel_expr_SourceInfo*)cel_expr_ParsedExpr_source_info(msg); + if (sub == NULL) { + sub = (struct cel_expr_SourceInfo*)_upb_Message_New(&cel__expr__SourceInfo_msg_init, arena); + if (sub) cel_expr_ParsedExpr_set_source_info(msg, sub); + } + return sub; +} + +/* cel.expr.Expr */ + +UPB_INLINE cel_expr_Expr* cel_expr_Expr_new(upb_Arena* arena) { + return (cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); +} +UPB_INLINE cel_expr_Expr* cel_expr_Expr_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr* ret = cel_expr_Expr_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr* cel_expr_Expr_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr* ret = cel_expr_Expr_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_serialize(const cel_expr_Expr* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_serialize_ex(const cel_expr_Expr* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr_msg_init, options, arena, &ptr, len); + return ptr; +} +typedef enum { + cel_expr_Expr_expr_kind_const_expr = 3, + cel_expr_Expr_expr_kind_ident_expr = 4, + cel_expr_Expr_expr_kind_select_expr = 5, + cel_expr_Expr_expr_kind_call_expr = 6, + cel_expr_Expr_expr_kind_list_expr = 7, + cel_expr_Expr_expr_kind_struct_expr = 8, + cel_expr_Expr_expr_kind_comprehension_expr = 9, + cel_expr_Expr_expr_kind_NOT_SET = 0 +} cel_expr_Expr_expr_kind_oneofcases; +UPB_INLINE cel_expr_Expr_expr_kind_oneofcases cel_expr_Expr_expr_kind_case(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 24), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Expr_expr_kind_oneofcases)upb_Message_WhichOneofFieldNumber( + UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_clear_expr_kind(cel_expr_Expr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 24), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearOneof(UPB_UPCAST(msg), &cel__expr__Expr_msg_init, &field); +} +UPB_INLINE void cel_expr_Expr_clear_id(cel_expr_Expr* msg) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int64_t cel_expr_Expr_id(const cel_expr_Expr* msg) { + int64_t default_val = (int64_t)0ll; + int64_t ret; + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Expr_clear_const_expr(cel_expr_Expr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 24), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Constant* cel_expr_Expr_const_expr(const cel_expr_Expr* msg) { + const cel_expr_Constant* default_val = NULL; + const cel_expr_Constant* ret; + const upb_MiniTableField field = {3, UPB_SIZE(12, 24), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Constant_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_has_const_expr(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 24), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_clear_ident_expr(cel_expr_Expr* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 24), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr_Ident* cel_expr_Expr_ident_expr(const cel_expr_Expr* msg) { + const cel_expr_Expr_Ident* default_val = NULL; + const cel_expr_Expr_Ident* ret; + const upb_MiniTableField field = {4, UPB_SIZE(12, 24), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Ident_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_has_ident_expr(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 24), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_clear_select_expr(cel_expr_Expr* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(12, 24), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr_Select* cel_expr_Expr_select_expr(const cel_expr_Expr* msg) { + const cel_expr_Expr_Select* default_val = NULL; + const cel_expr_Expr_Select* ret; + const upb_MiniTableField field = {5, UPB_SIZE(12, 24), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Select_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_has_select_expr(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(12, 24), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_clear_call_expr(cel_expr_Expr* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(12, 24), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr_Call* cel_expr_Expr_call_expr(const cel_expr_Expr* msg) { + const cel_expr_Expr_Call* default_val = NULL; + const cel_expr_Expr_Call* ret; + const upb_MiniTableField field = {6, UPB_SIZE(12, 24), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Call_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_has_call_expr(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(12, 24), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_clear_list_expr(cel_expr_Expr* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(12, 24), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr_CreateList* cel_expr_Expr_list_expr(const cel_expr_Expr* msg) { + const cel_expr_Expr_CreateList* default_val = NULL; + const cel_expr_Expr_CreateList* ret; + const upb_MiniTableField field = {7, UPB_SIZE(12, 24), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateList_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_has_list_expr(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(12, 24), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_clear_struct_expr(cel_expr_Expr* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(12, 24), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr_CreateStruct* cel_expr_Expr_struct_expr(const cel_expr_Expr* msg) { + const cel_expr_Expr_CreateStruct* default_val = NULL; + const cel_expr_Expr_CreateStruct* ret; + const upb_MiniTableField field = {8, UPB_SIZE(12, 24), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateStruct_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_has_struct_expr(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(12, 24), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_clear_comprehension_expr(cel_expr_Expr* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 24), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr_Comprehension* cel_expr_Expr_comprehension_expr(const cel_expr_Expr* msg) { + const cel_expr_Expr_Comprehension* default_val = NULL; + const cel_expr_Expr_Comprehension* ret; + const upb_MiniTableField field = {9, UPB_SIZE(12, 24), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Comprehension_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_has_comprehension_expr(const cel_expr_Expr* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 24), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_Expr_set_id(cel_expr_Expr *msg, int64_t value) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Expr_set_const_expr(cel_expr_Expr *msg, cel_expr_Constant* value) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 24), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Constant_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Constant* cel_expr_Expr_mutable_const_expr(cel_expr_Expr* msg, upb_Arena* arena) { + struct cel_expr_Constant* sub = (struct cel_expr_Constant*)cel_expr_Expr_const_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Constant*)_upb_Message_New(&cel__expr__Constant_msg_init, arena); + if (sub) cel_expr_Expr_set_const_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_set_ident_expr(cel_expr_Expr *msg, cel_expr_Expr_Ident* value) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 24), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Ident_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr_Ident* cel_expr_Expr_mutable_ident_expr(cel_expr_Expr* msg, upb_Arena* arena) { + struct cel_expr_Expr_Ident* sub = (struct cel_expr_Expr_Ident*)cel_expr_Expr_ident_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr_Ident*)_upb_Message_New(&cel__expr__Expr__Ident_msg_init, arena); + if (sub) cel_expr_Expr_set_ident_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_set_select_expr(cel_expr_Expr *msg, cel_expr_Expr_Select* value) { + const upb_MiniTableField field = {5, UPB_SIZE(12, 24), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Select_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr_Select* cel_expr_Expr_mutable_select_expr(cel_expr_Expr* msg, upb_Arena* arena) { + struct cel_expr_Expr_Select* sub = (struct cel_expr_Expr_Select*)cel_expr_Expr_select_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr_Select*)_upb_Message_New(&cel__expr__Expr__Select_msg_init, arena); + if (sub) cel_expr_Expr_set_select_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_set_call_expr(cel_expr_Expr *msg, cel_expr_Expr_Call* value) { + const upb_MiniTableField field = {6, UPB_SIZE(12, 24), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Call_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr_Call* cel_expr_Expr_mutable_call_expr(cel_expr_Expr* msg, upb_Arena* arena) { + struct cel_expr_Expr_Call* sub = (struct cel_expr_Expr_Call*)cel_expr_Expr_call_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr_Call*)_upb_Message_New(&cel__expr__Expr__Call_msg_init, arena); + if (sub) cel_expr_Expr_set_call_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_set_list_expr(cel_expr_Expr *msg, cel_expr_Expr_CreateList* value) { + const upb_MiniTableField field = {7, UPB_SIZE(12, 24), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateList_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr_CreateList* cel_expr_Expr_mutable_list_expr(cel_expr_Expr* msg, upb_Arena* arena) { + struct cel_expr_Expr_CreateList* sub = (struct cel_expr_Expr_CreateList*)cel_expr_Expr_list_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr_CreateList*)_upb_Message_New(&cel__expr__Expr__CreateList_msg_init, arena); + if (sub) cel_expr_Expr_set_list_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_set_struct_expr(cel_expr_Expr *msg, cel_expr_Expr_CreateStruct* value) { + const upb_MiniTableField field = {8, UPB_SIZE(12, 24), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateStruct_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr_CreateStruct* cel_expr_Expr_mutable_struct_expr(cel_expr_Expr* msg, upb_Arena* arena) { + struct cel_expr_Expr_CreateStruct* sub = (struct cel_expr_Expr_CreateStruct*)cel_expr_Expr_struct_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr_CreateStruct*)_upb_Message_New(&cel__expr__Expr__CreateStruct_msg_init, arena); + if (sub) cel_expr_Expr_set_struct_expr(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_set_comprehension_expr(cel_expr_Expr *msg, cel_expr_Expr_Comprehension* value) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 24), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__Comprehension_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr_Comprehension* cel_expr_Expr_mutable_comprehension_expr(cel_expr_Expr* msg, upb_Arena* arena) { + struct cel_expr_Expr_Comprehension* sub = (struct cel_expr_Expr_Comprehension*)cel_expr_Expr_comprehension_expr(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr_Comprehension*)_upb_Message_New(&cel__expr__Expr__Comprehension_msg_init, arena); + if (sub) cel_expr_Expr_set_comprehension_expr(msg, sub); + } + return sub; +} + +/* cel.expr.Expr.Ident */ + +UPB_INLINE cel_expr_Expr_Ident* cel_expr_Expr_Ident_new(upb_Arena* arena) { + return (cel_expr_Expr_Ident*)_upb_Message_New(&cel__expr__Expr__Ident_msg_init, arena); +} +UPB_INLINE cel_expr_Expr_Ident* cel_expr_Expr_Ident_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr_Ident* ret = cel_expr_Expr_Ident_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Ident_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr_Ident* cel_expr_Expr_Ident_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr_Ident* ret = cel_expr_Expr_Ident_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Ident_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_Ident_serialize(const cel_expr_Expr_Ident* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Ident_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_Ident_serialize_ex(const cel_expr_Expr_Ident* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Ident_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Expr_Ident_clear_name(cel_expr_Expr_Ident* msg) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_Ident_name(const cel_expr_Expr_Ident* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_Expr_Ident_set_name(cel_expr_Expr_Ident *msg, upb_StringView value) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Expr.Select */ + +UPB_INLINE cel_expr_Expr_Select* cel_expr_Expr_Select_new(upb_Arena* arena) { + return (cel_expr_Expr_Select*)_upb_Message_New(&cel__expr__Expr__Select_msg_init, arena); +} +UPB_INLINE cel_expr_Expr_Select* cel_expr_Expr_Select_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr_Select* ret = cel_expr_Expr_Select_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Select_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr_Select* cel_expr_Expr_Select_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr_Select* ret = cel_expr_Expr_Select_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Select_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_Select_serialize(const cel_expr_Expr_Select* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Select_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_Select_serialize_ex(const cel_expr_Expr_Select* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Select_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Expr_Select_clear_operand(cel_expr_Expr_Select* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_Select_operand(const cel_expr_Expr_Select* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_Select_has_operand(const cel_expr_Expr_Select* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_Select_clear_field(cel_expr_Expr_Select* msg) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_Select_field(const cel_expr_Expr_Select* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Expr_Select_clear_test_only(cel_expr_Expr_Select* msg) { + const upb_MiniTableField field = {3, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool cel_expr_Expr_Select_test_only(const cel_expr_Expr_Select* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {3, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_Expr_Select_set_operand(cel_expr_Expr_Select *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Select_mutable_operand(cel_expr_Expr_Select* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_Select_operand(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_Select_set_operand(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_Select_set_field(cel_expr_Expr_Select *msg, upb_StringView value) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Expr_Select_set_test_only(cel_expr_Expr_Select *msg, bool value) { + const upb_MiniTableField field = {3, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Expr.Call */ + +UPB_INLINE cel_expr_Expr_Call* cel_expr_Expr_Call_new(upb_Arena* arena) { + return (cel_expr_Expr_Call*)_upb_Message_New(&cel__expr__Expr__Call_msg_init, arena); +} +UPB_INLINE cel_expr_Expr_Call* cel_expr_Expr_Call_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr_Call* ret = cel_expr_Expr_Call_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Call_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr_Call* cel_expr_Expr_Call_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr_Call* ret = cel_expr_Expr_Call_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Call_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_Call_serialize(const cel_expr_Expr_Call* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Call_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_Call_serialize_ex(const cel_expr_Expr_Call* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Call_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Expr_Call_clear_target(cel_expr_Expr_Call* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_Call_target(const cel_expr_Expr_Call* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_Call_has_target(const cel_expr_Expr_Call* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_Call_clear_function(cel_expr_Expr_Call* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_Call_function(const cel_expr_Expr_Call* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Expr_Call_clear_args(cel_expr_Expr_Call* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* const* cel_expr_Expr_Call_args(const cel_expr_Expr_Call* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_Expr* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Expr_Call_args_upb_array(const cel_expr_Expr_Call* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Expr_Call_args_mutable_upb_array(cel_expr_Expr_Call* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} + +UPB_INLINE void cel_expr_Expr_Call_set_target(cel_expr_Expr_Call *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Call_mutable_target(cel_expr_Expr_Call* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_Call_target(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_Call_set_target(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_Call_set_function(cel_expr_Expr_Call *msg, upb_StringView value) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE cel_expr_Expr** cel_expr_Expr_Call_mutable_args(cel_expr_Expr_Call* msg, size_t* size) { + upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_Expr**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_Expr** cel_expr_Expr_Call_resize_args(cel_expr_Expr_Call* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Expr**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Call_add_args(cel_expr_Expr_Call* msg, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} + +/* cel.expr.Expr.CreateList */ + +UPB_INLINE cel_expr_Expr_CreateList* cel_expr_Expr_CreateList_new(upb_Arena* arena) { + return (cel_expr_Expr_CreateList*)_upb_Message_New(&cel__expr__Expr__CreateList_msg_init, arena); +} +UPB_INLINE cel_expr_Expr_CreateList* cel_expr_Expr_CreateList_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr_CreateList* ret = cel_expr_Expr_CreateList_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__CreateList_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr_CreateList* cel_expr_Expr_CreateList_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr_CreateList* ret = cel_expr_Expr_CreateList_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__CreateList_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_CreateList_serialize(const cel_expr_Expr_CreateList* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__CreateList_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_CreateList_serialize_ex(const cel_expr_Expr_CreateList* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__CreateList_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Expr_CreateList_clear_elements(cel_expr_Expr_CreateList* msg) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* const* cel_expr_Expr_CreateList_elements(const cel_expr_Expr_CreateList* msg, size_t* size) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_Expr* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Expr_CreateList_elements_upb_array(const cel_expr_Expr_CreateList* msg, size_t* size) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Expr_CreateList_elements_mutable_upb_array(cel_expr_Expr_CreateList* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void cel_expr_Expr_CreateList_clear_optional_indices(cel_expr_Expr_CreateList* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t const* cel_expr_Expr_CreateList_optional_indices(const cel_expr_Expr_CreateList* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Expr_CreateList_optional_indices_upb_array(const cel_expr_Expr_CreateList* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Expr_CreateList_optional_indices_mutable_upb_array(cel_expr_Expr_CreateList* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} + +UPB_INLINE cel_expr_Expr** cel_expr_Expr_CreateList_mutable_elements(cel_expr_Expr_CreateList* msg, size_t* size) { + upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_Expr**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_Expr** cel_expr_Expr_CreateList_resize_elements(cel_expr_Expr_CreateList* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Expr**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_CreateList_add_elements(cel_expr_Expr_CreateList* msg, upb_Arena* arena) { + upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} +UPB_INLINE int32_t* cel_expr_Expr_CreateList_mutable_optional_indices(cel_expr_Expr_CreateList* msg, size_t* size) { + upb_MiniTableField field = {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t*)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE int32_t* cel_expr_Expr_CreateList_resize_optional_indices(cel_expr_Expr_CreateList* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (int32_t*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE bool cel_expr_Expr_CreateList_add_optional_indices(cel_expr_Expr_CreateList* msg, int32_t val, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return false; + } + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); + return true; +} + +/* cel.expr.Expr.CreateStruct */ + +UPB_INLINE cel_expr_Expr_CreateStruct* cel_expr_Expr_CreateStruct_new(upb_Arena* arena) { + return (cel_expr_Expr_CreateStruct*)_upb_Message_New(&cel__expr__Expr__CreateStruct_msg_init, arena); +} +UPB_INLINE cel_expr_Expr_CreateStruct* cel_expr_Expr_CreateStruct_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr_CreateStruct* ret = cel_expr_Expr_CreateStruct_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__CreateStruct_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr_CreateStruct* cel_expr_Expr_CreateStruct_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr_CreateStruct* ret = cel_expr_Expr_CreateStruct_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__CreateStruct_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_CreateStruct_serialize(const cel_expr_Expr_CreateStruct* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__CreateStruct_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_CreateStruct_serialize_ex(const cel_expr_Expr_CreateStruct* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__CreateStruct_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Expr_CreateStruct_clear_message_name(cel_expr_Expr_CreateStruct* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_CreateStruct_message_name(const cel_expr_Expr_CreateStruct* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Expr_CreateStruct_clear_entries(cel_expr_Expr_CreateStruct* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr_CreateStruct_Entry* const* cel_expr_Expr_CreateStruct_entries(const cel_expr_Expr_CreateStruct* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateStruct__Entry_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_Expr_CreateStruct_Entry* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_Expr_CreateStruct_entries_upb_array(const cel_expr_Expr_CreateStruct* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateStruct__Entry_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_Expr_CreateStruct_entries_mutable_upb_array(cel_expr_Expr_CreateStruct* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateStruct__Entry_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} + +UPB_INLINE void cel_expr_Expr_CreateStruct_set_message_name(cel_expr_Expr_CreateStruct *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE cel_expr_Expr_CreateStruct_Entry** cel_expr_Expr_CreateStruct_mutable_entries(cel_expr_Expr_CreateStruct* msg, size_t* size) { + upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateStruct__Entry_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_Expr_CreateStruct_Entry**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_Expr_CreateStruct_Entry** cel_expr_Expr_CreateStruct_resize_entries(cel_expr_Expr_CreateStruct* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_Expr_CreateStruct_Entry**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_Expr_CreateStruct_Entry* cel_expr_Expr_CreateStruct_add_entries(cel_expr_Expr_CreateStruct* msg, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr__CreateStruct__Entry_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_Expr_CreateStruct_Entry* sub = (struct cel_expr_Expr_CreateStruct_Entry*)_upb_Message_New(&cel__expr__Expr__CreateStruct__Entry_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} + +/* cel.expr.Expr.CreateStruct.Entry */ + +UPB_INLINE cel_expr_Expr_CreateStruct_Entry* cel_expr_Expr_CreateStruct_Entry_new(upb_Arena* arena) { + return (cel_expr_Expr_CreateStruct_Entry*)_upb_Message_New(&cel__expr__Expr__CreateStruct__Entry_msg_init, arena); +} +UPB_INLINE cel_expr_Expr_CreateStruct_Entry* cel_expr_Expr_CreateStruct_Entry_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr_CreateStruct_Entry* ret = cel_expr_Expr_CreateStruct_Entry_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__CreateStruct__Entry_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr_CreateStruct_Entry* cel_expr_Expr_CreateStruct_Entry_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr_CreateStruct_Entry* ret = cel_expr_Expr_CreateStruct_Entry_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__CreateStruct__Entry_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_CreateStruct_Entry_serialize(const cel_expr_Expr_CreateStruct_Entry* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__CreateStruct__Entry_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_CreateStruct_Entry_serialize_ex(const cel_expr_Expr_CreateStruct_Entry* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__CreateStruct__Entry_msg_init, options, arena, &ptr, len); + return ptr; +} +typedef enum { + cel_expr_Expr_CreateStruct_Entry_key_kind_field_key = 2, + cel_expr_Expr_CreateStruct_Entry_key_kind_map_key = 3, + cel_expr_Expr_CreateStruct_Entry_key_kind_NOT_SET = 0 +} cel_expr_Expr_CreateStruct_Entry_key_kind_oneofcases; +UPB_INLINE cel_expr_Expr_CreateStruct_Entry_key_kind_oneofcases cel_expr_Expr_CreateStruct_Entry_key_kind_case(const cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return (cel_expr_Expr_CreateStruct_Entry_key_kind_oneofcases)upb_Message_WhichOneofFieldNumber( + UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_clear_key_kind(cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearOneof(UPB_UPCAST(msg), &cel__expr__Expr__CreateStruct__Entry_msg_init, &field); +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_clear_id(cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {1, 32, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int64_t cel_expr_Expr_CreateStruct_Entry_id(const cel_expr_Expr_CreateStruct_Entry* msg) { + int64_t default_val = (int64_t)0ll; + int64_t ret; + const upb_MiniTableField field = {1, 32, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_clear_field_key(cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_CreateStruct_Entry_field_key(const cel_expr_Expr_CreateStruct_Entry* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_CreateStruct_Entry_has_field_key(const cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_clear_map_key(cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_CreateStruct_Entry_map_key(const cel_expr_Expr_CreateStruct_Entry* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {3, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_CreateStruct_Entry_has_map_key(const cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_clear_value(cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 40), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_CreateStruct_Entry_value(const cel_expr_Expr_CreateStruct_Entry* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {4, UPB_SIZE(12, 40), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_CreateStruct_Entry_has_value(const cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 40), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_clear_optional_entry(cel_expr_Expr_CreateStruct_Entry* msg) { + const upb_MiniTableField field = {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool cel_expr_Expr_CreateStruct_Entry_optional_entry(const cel_expr_Expr_CreateStruct_Entry* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_set_id(cel_expr_Expr_CreateStruct_Entry *msg, int64_t value) { + const upb_MiniTableField field = {1, 32, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_set_field_key(cel_expr_Expr_CreateStruct_Entry *msg, upb_StringView value) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_set_map_key(cel_expr_Expr_CreateStruct_Entry *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_CreateStruct_Entry_mutable_map_key(cel_expr_Expr_CreateStruct_Entry* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_CreateStruct_Entry_map_key(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_CreateStruct_Entry_set_map_key(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_set_value(cel_expr_Expr_CreateStruct_Entry *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 40), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_CreateStruct_Entry_mutable_value(cel_expr_Expr_CreateStruct_Entry* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_CreateStruct_Entry_value(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_CreateStruct_Entry_set_value(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_CreateStruct_Entry_set_optional_entry(cel_expr_Expr_CreateStruct_Entry *msg, bool value) { + const upb_MiniTableField field = {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Expr.Comprehension */ + +UPB_INLINE cel_expr_Expr_Comprehension* cel_expr_Expr_Comprehension_new(upb_Arena* arena) { + return (cel_expr_Expr_Comprehension*)_upb_Message_New(&cel__expr__Expr__Comprehension_msg_init, arena); +} +UPB_INLINE cel_expr_Expr_Comprehension* cel_expr_Expr_Comprehension_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Expr_Comprehension* ret = cel_expr_Expr_Comprehension_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Comprehension_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Expr_Comprehension* cel_expr_Expr_Comprehension_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Expr_Comprehension* ret = cel_expr_Expr_Comprehension_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Expr__Comprehension_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Expr_Comprehension_serialize(const cel_expr_Expr_Comprehension* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Comprehension_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Expr_Comprehension_serialize_ex(const cel_expr_Expr_Comprehension* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Expr__Comprehension_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_iter_var(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_Comprehension_iter_var(const cel_expr_Expr_Comprehension* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_iter_range(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_Comprehension_iter_range(const cel_expr_Expr_Comprehension* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {2, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_Comprehension_has_iter_range(const cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_accu_var(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_Comprehension_accu_var(const cel_expr_Expr_Comprehension* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {3, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_accu_init(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_Comprehension_accu_init(const cel_expr_Expr_Comprehension* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_Comprehension_has_accu_init(const cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_loop_condition(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(20, 80), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_Comprehension_loop_condition(const cel_expr_Expr_Comprehension* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {5, UPB_SIZE(20, 80), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_Comprehension_has_loop_condition(const cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(20, 80), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_loop_step(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(24, 88), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_Comprehension_loop_step(const cel_expr_Expr_Comprehension* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {6, UPB_SIZE(24, 88), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_Comprehension_has_loop_step(const cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(24, 88), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_result(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(28, 96), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_Expr* cel_expr_Expr_Comprehension_result(const cel_expr_Expr_Comprehension* msg) { + const cel_expr_Expr* default_val = NULL; + const cel_expr_Expr* ret; + const upb_MiniTableField field = {7, UPB_SIZE(28, 96), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Expr_Comprehension_has_result(const cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(28, 96), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Expr_Comprehension_clear_iter_var2(cel_expr_Expr_Comprehension* msg) { + const upb_MiniTableField field = {8, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Expr_Comprehension_iter_var2(const cel_expr_Expr_Comprehension* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {8, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_Expr_Comprehension_set_iter_var(cel_expr_Expr_Comprehension *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Expr_Comprehension_set_iter_range(cel_expr_Expr_Comprehension *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Comprehension_mutable_iter_range(cel_expr_Expr_Comprehension* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_Comprehension_iter_range(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_Comprehension_set_iter_range(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_Comprehension_set_accu_var(cel_expr_Expr_Comprehension *msg, upb_StringView value) { + const upb_MiniTableField field = {3, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Expr_Comprehension_set_accu_init(cel_expr_Expr_Comprehension *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Comprehension_mutable_accu_init(cel_expr_Expr_Comprehension* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_Comprehension_accu_init(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_Comprehension_set_accu_init(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_Comprehension_set_loop_condition(cel_expr_Expr_Comprehension *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {5, UPB_SIZE(20, 80), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Comprehension_mutable_loop_condition(cel_expr_Expr_Comprehension* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_Comprehension_loop_condition(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_Comprehension_set_loop_condition(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_Comprehension_set_loop_step(cel_expr_Expr_Comprehension *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {6, UPB_SIZE(24, 88), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Comprehension_mutable_loop_step(cel_expr_Expr_Comprehension* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_Comprehension_loop_step(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_Comprehension_set_loop_step(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_Comprehension_set_result(cel_expr_Expr_Comprehension *msg, cel_expr_Expr* value) { + const upb_MiniTableField field = {7, UPB_SIZE(28, 96), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_Expr* cel_expr_Expr_Comprehension_mutable_result(cel_expr_Expr_Comprehension* msg, upb_Arena* arena) { + struct cel_expr_Expr* sub = (struct cel_expr_Expr*)cel_expr_Expr_Comprehension_result(msg); + if (sub == NULL) { + sub = (struct cel_expr_Expr*)_upb_Message_New(&cel__expr__Expr_msg_init, arena); + if (sub) cel_expr_Expr_Comprehension_set_result(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Expr_Comprehension_set_iter_var2(cel_expr_Expr_Comprehension *msg, upb_StringView value) { + const upb_MiniTableField field = {8, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* cel.expr.Constant */ + +UPB_INLINE cel_expr_Constant* cel_expr_Constant_new(upb_Arena* arena) { + return (cel_expr_Constant*)_upb_Message_New(&cel__expr__Constant_msg_init, arena); +} +UPB_INLINE cel_expr_Constant* cel_expr_Constant_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_Constant* ret = cel_expr_Constant_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Constant_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_Constant* cel_expr_Constant_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_Constant* ret = cel_expr_Constant_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__Constant_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_Constant_serialize(const cel_expr_Constant* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Constant_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_Constant_serialize_ex(const cel_expr_Constant* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__Constant_msg_init, options, arena, &ptr, len); + return ptr; +} +typedef enum { + cel_expr_Constant_constant_kind_null_value = 1, + cel_expr_Constant_constant_kind_bool_value = 2, + cel_expr_Constant_constant_kind_int64_value = 3, + cel_expr_Constant_constant_kind_uint64_value = 4, + cel_expr_Constant_constant_kind_double_value = 5, + cel_expr_Constant_constant_kind_string_value = 6, + cel_expr_Constant_constant_kind_bytes_value = 7, + cel_expr_Constant_constant_kind_duration_value = 8, + cel_expr_Constant_constant_kind_timestamp_value = 9, + cel_expr_Constant_constant_kind_NOT_SET = 0 +} cel_expr_Constant_constant_kind_oneofcases; +UPB_INLINE cel_expr_Constant_constant_kind_oneofcases cel_expr_Constant_constant_kind_case(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {1, 16, -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + return (cel_expr_Constant_constant_kind_oneofcases)upb_Message_WhichOneofFieldNumber( + UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_constant_kind(cel_expr_Constant* msg) { + const upb_MiniTableField field = {1, 16, -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearOneof(UPB_UPCAST(msg), &cel__expr__Constant_msg_init, &field); +} +UPB_INLINE void cel_expr_Constant_clear_null_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {1, 16, -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t cel_expr_Constant_null_value(const cel_expr_Constant* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {1, 16, -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_null_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {1, 16, -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_bool_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {2, 16, -9, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool cel_expr_Constant_bool_value(const cel_expr_Constant* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {2, 16, -9, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_bool_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {2, 16, -9, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_int64_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {3, 16, -9, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int64_t cel_expr_Constant_int64_value(const cel_expr_Constant* msg) { + int64_t default_val = (int64_t)0ll; + int64_t ret; + const upb_MiniTableField field = {3, 16, -9, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_int64_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {3, 16, -9, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_uint64_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {4, 16, -9, kUpb_NoSub, 4, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE uint64_t cel_expr_Constant_uint64_value(const cel_expr_Constant* msg) { + uint64_t default_val = (uint64_t)0ull; + uint64_t ret; + const upb_MiniTableField field = {4, 16, -9, kUpb_NoSub, 4, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_uint64_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {4, 16, -9, kUpb_NoSub, 4, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_double_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {5, 16, -9, kUpb_NoSub, 1, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE double cel_expr_Constant_double_value(const cel_expr_Constant* msg) { + double default_val = 0; + double ret; + const upb_MiniTableField field = {5, 16, -9, kUpb_NoSub, 1, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_double_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {5, 16, -9, kUpb_NoSub, 1, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_string_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {6, 16, -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Constant_string_value(const cel_expr_Constant* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {6, 16, -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_string_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {6, 16, -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_bytes_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {7, 16, -9, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_Constant_bytes_value(const cel_expr_Constant* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {7, 16, -9, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_bytes_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {7, 16, -9, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_duration_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {8, 16, -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Duration* cel_expr_Constant_duration_value(const cel_expr_Constant* msg) { + const struct google_protobuf_Duration* default_val = NULL; + const struct google_protobuf_Duration* ret; + const upb_MiniTableField field = {8, 16, -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_duration_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {8, 16, -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void cel_expr_Constant_clear_timestamp_value(cel_expr_Constant* msg) { + const upb_MiniTableField field = {9, 16, -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Timestamp* cel_expr_Constant_timestamp_value(const cel_expr_Constant* msg) { + const struct google_protobuf_Timestamp* default_val = NULL; + const struct google_protobuf_Timestamp* ret; + const upb_MiniTableField field = {9, 16, -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Timestamp_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_Constant_has_timestamp_value(const cel_expr_Constant* msg) { + const upb_MiniTableField field = {9, 16, -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_Constant_set_null_value(cel_expr_Constant *msg, int32_t value) { + const upb_MiniTableField field = {1, 16, -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Constant_set_bool_value(cel_expr_Constant *msg, bool value) { + const upb_MiniTableField field = {2, 16, -9, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Constant_set_int64_value(cel_expr_Constant *msg, int64_t value) { + const upb_MiniTableField field = {3, 16, -9, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Constant_set_uint64_value(cel_expr_Constant *msg, uint64_t value) { + const upb_MiniTableField field = {4, 16, -9, kUpb_NoSub, 4, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Constant_set_double_value(cel_expr_Constant *msg, double value) { + const upb_MiniTableField field = {5, 16, -9, kUpb_NoSub, 1, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Constant_set_string_value(cel_expr_Constant *msg, upb_StringView value) { + const upb_MiniTableField field = {6, 16, -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Constant_set_bytes_value(cel_expr_Constant *msg, upb_StringView value) { + const upb_MiniTableField field = {7, 16, -9, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_Constant_set_duration_value(cel_expr_Constant *msg, struct google_protobuf_Duration* value) { + const upb_MiniTableField field = {8, 16, -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Duration* cel_expr_Constant_mutable_duration_value(cel_expr_Constant* msg, upb_Arena* arena) { + struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)cel_expr_Constant_duration_value(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Duration*)_upb_Message_New(&google__protobuf__Duration_msg_init, arena); + if (sub) cel_expr_Constant_set_duration_value(msg, sub); + } + return sub; +} +UPB_INLINE void cel_expr_Constant_set_timestamp_value(cel_expr_Constant *msg, struct google_protobuf_Timestamp* value) { + const upb_MiniTableField field = {9, 16, -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Timestamp_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Timestamp* cel_expr_Constant_mutable_timestamp_value(cel_expr_Constant* msg, upb_Arena* arena) { + struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)cel_expr_Constant_timestamp_value(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google__protobuf__Timestamp_msg_init, arena); + if (sub) cel_expr_Constant_set_timestamp_value(msg, sub); + } + return sub; +} + +/* cel.expr.SourceInfo */ + +UPB_INLINE cel_expr_SourceInfo* cel_expr_SourceInfo_new(upb_Arena* arena) { + return (cel_expr_SourceInfo*)_upb_Message_New(&cel__expr__SourceInfo_msg_init, arena); +} +UPB_INLINE cel_expr_SourceInfo* cel_expr_SourceInfo_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_SourceInfo* ret = cel_expr_SourceInfo_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__SourceInfo_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_SourceInfo* cel_expr_SourceInfo_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_SourceInfo* ret = cel_expr_SourceInfo_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__SourceInfo_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_SourceInfo_serialize(const cel_expr_SourceInfo* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__SourceInfo_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_SourceInfo_serialize_ex(const cel_expr_SourceInfo* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__SourceInfo_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_SourceInfo_clear_syntax_version(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(24, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_SourceInfo_syntax_version(const cel_expr_SourceInfo* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(24, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_SourceInfo_clear_location(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(32, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_SourceInfo_location(const cel_expr_SourceInfo* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, UPB_SIZE(32, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_SourceInfo_clear_line_offsets(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t const* cel_expr_SourceInfo_line_offsets(const cel_expr_SourceInfo* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_SourceInfo_line_offsets_upb_array(const cel_expr_SourceInfo* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_SourceInfo_line_offsets_mutable_upb_array(cel_expr_SourceInfo* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void cel_expr_SourceInfo_clear_positions(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE size_t cel_expr_SourceInfo_positions_size(const cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + return map ? _upb_Map_Size(map) : 0; +} +UPB_INLINE bool cel_expr_SourceInfo_positions_get(const cel_expr_SourceInfo* msg, int64_t key, int32_t* val) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__PositionsEntry_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Get(map, &key, sizeof(key), val, sizeof(*val)); +} +UPB_INLINE bool cel_expr_SourceInfo_positions_next(const cel_expr_SourceInfo* msg, int64_t* key, int32_t* val, + size_t* iter) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__PositionsEntry_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + upb_MessageValue k; + upb_MessageValue v; + if (!upb_Map_Next(map, &k, &v, iter)) return false; + memcpy(key, &k, sizeof(*key)); + memcpy(val, &v, sizeof(*val)); + return true; +} +UPB_INLINE const upb_Map* _cel_expr_SourceInfo_positions_upb_map(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__PositionsEntry_msg_init); + return upb_Message_GetMap(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_Map* _cel_expr_SourceInfo_positions_mutable_upb_map(cel_expr_SourceInfo* msg, upb_Arena* a) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__PositionsEntry_msg_init); + return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, sizeof(int64_t), sizeof(int32_t), a); +} +UPB_INLINE void cel_expr_SourceInfo_clear_macro_calls(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE size_t cel_expr_SourceInfo_macro_calls_size(const cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + return map ? _upb_Map_Size(map) : 0; +} +UPB_INLINE bool cel_expr_SourceInfo_macro_calls_get(const cel_expr_SourceInfo* msg, int64_t key, cel_expr_Expr** val) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__MacroCallsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Get(map, &key, sizeof(key), val, sizeof(*val)); +} +UPB_INLINE bool cel_expr_SourceInfo_macro_calls_next(const cel_expr_SourceInfo* msg, int64_t* key, const cel_expr_Expr** val, + size_t* iter) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__MacroCallsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + upb_MessageValue k; + upb_MessageValue v; + if (!upb_Map_Next(map, &k, &v, iter)) return false; + memcpy(key, &k, sizeof(*key)); + memcpy(val, &v, sizeof(*val)); + return true; +} +UPB_INLINE const upb_Map* _cel_expr_SourceInfo_macro_calls_upb_map(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__MacroCallsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + return upb_Message_GetMap(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_Map* _cel_expr_SourceInfo_macro_calls_mutable_upb_map(cel_expr_SourceInfo* msg, upb_Arena* a) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__MacroCallsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, sizeof(int64_t), sizeof(cel_expr_Expr*), a); +} +UPB_INLINE void cel_expr_SourceInfo_clear_extensions(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_SourceInfo_Extension* const* cel_expr_SourceInfo_extensions(const cel_expr_SourceInfo* msg, size_t* size) { + const upb_MiniTableField field = {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__Extension_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const cel_expr_SourceInfo_Extension* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_SourceInfo_extensions_upb_array(const cel_expr_SourceInfo* msg, size_t* size) { + const upb_MiniTableField field = {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__Extension_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_SourceInfo_extensions_mutable_upb_array(cel_expr_SourceInfo* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__Extension_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} + +UPB_INLINE void cel_expr_SourceInfo_set_syntax_version(cel_expr_SourceInfo *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(24, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_SourceInfo_set_location(cel_expr_SourceInfo *msg, upb_StringView value) { + const upb_MiniTableField field = {2, UPB_SIZE(32, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE int32_t* cel_expr_SourceInfo_mutable_line_offsets(cel_expr_SourceInfo* msg, size_t* size) { + upb_MiniTableField field = {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t*)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE int32_t* cel_expr_SourceInfo_resize_line_offsets(cel_expr_SourceInfo* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (int32_t*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE bool cel_expr_SourceInfo_add_line_offsets(cel_expr_SourceInfo* msg, int32_t val, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return false; + } + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); + return true; +} +UPB_INLINE void cel_expr_SourceInfo_positions_clear(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return; + _upb_Map_Clear(map); +} +UPB_INLINE bool cel_expr_SourceInfo_positions_set(cel_expr_SourceInfo* msg, int64_t key, int32_t val, upb_Arena* a) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__PositionsEntry_msg_init); + upb_Map* map = _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), + &field, sizeof(key), sizeof(val), a); + return _upb_Map_Insert(map, &key, sizeof(key), &val, sizeof(val), a) != + kUpb_MapInsertStatus_OutOfMemory; +} +UPB_INLINE bool cel_expr_SourceInfo_positions_delete(cel_expr_SourceInfo* msg, int64_t key) { + const upb_MiniTableField field = {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Delete(map, &key, sizeof(key), NULL); +} +UPB_INLINE void cel_expr_SourceInfo_macro_calls_clear(cel_expr_SourceInfo* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return; + _upb_Map_Clear(map); +} +UPB_INLINE bool cel_expr_SourceInfo_macro_calls_set(cel_expr_SourceInfo* msg, int64_t key, cel_expr_Expr* val, upb_Arena* a) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__MacroCallsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__Expr_msg_init); + upb_Map* map = _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), + &field, sizeof(key), sizeof(val), a); + return _upb_Map_Insert(map, &key, sizeof(key), &val, sizeof(val), a) != + kUpb_MapInsertStatus_OutOfMemory; +} +UPB_INLINE bool cel_expr_SourceInfo_macro_calls_delete(cel_expr_SourceInfo* msg, int64_t key) { + const upb_MiniTableField field = {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Delete(map, &key, sizeof(key), NULL); +} +UPB_INLINE cel_expr_SourceInfo_Extension** cel_expr_SourceInfo_mutable_extensions(cel_expr_SourceInfo* msg, size_t* size) { + upb_MiniTableField field = {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__Extension_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (cel_expr_SourceInfo_Extension**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE cel_expr_SourceInfo_Extension** cel_expr_SourceInfo_resize_extensions(cel_expr_SourceInfo* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (cel_expr_SourceInfo_Extension**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct cel_expr_SourceInfo_Extension* cel_expr_SourceInfo_add_extensions(cel_expr_SourceInfo* msg, upb_Arena* arena) { + upb_MiniTableField field = {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__Extension_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct cel_expr_SourceInfo_Extension* sub = (struct cel_expr_SourceInfo_Extension*)_upb_Message_New(&cel__expr__SourceInfo__Extension_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} + +/* cel.expr.SourceInfo.Extension */ + +UPB_INLINE cel_expr_SourceInfo_Extension* cel_expr_SourceInfo_Extension_new(upb_Arena* arena) { + return (cel_expr_SourceInfo_Extension*)_upb_Message_New(&cel__expr__SourceInfo__Extension_msg_init, arena); +} +UPB_INLINE cel_expr_SourceInfo_Extension* cel_expr_SourceInfo_Extension_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_SourceInfo_Extension* ret = cel_expr_SourceInfo_Extension_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__SourceInfo__Extension_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_SourceInfo_Extension* cel_expr_SourceInfo_Extension_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_SourceInfo_Extension* ret = cel_expr_SourceInfo_Extension_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__SourceInfo__Extension_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_SourceInfo_Extension_serialize(const cel_expr_SourceInfo_Extension* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__SourceInfo__Extension_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_SourceInfo_Extension_serialize_ex(const cel_expr_SourceInfo_Extension* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__SourceInfo__Extension_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_SourceInfo_Extension_clear_id(cel_expr_SourceInfo_Extension* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView cel_expr_SourceInfo_Extension_id(const cel_expr_SourceInfo_Extension* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_SourceInfo_Extension_clear_affected_components(cel_expr_SourceInfo_Extension* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t const* cel_expr_SourceInfo_Extension_affected_components(const cel_expr_SourceInfo_Extension* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _cel_expr_SourceInfo_Extension_affected_components_upb_array(const cel_expr_SourceInfo_Extension* msg, size_t* size) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _cel_expr_SourceInfo_Extension_affected_components_mutable_upb_array(cel_expr_SourceInfo_Extension* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void cel_expr_SourceInfo_Extension_clear_version(cel_expr_SourceInfo_Extension* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const cel_expr_SourceInfo_Extension_Version* cel_expr_SourceInfo_Extension_version(const cel_expr_SourceInfo_Extension* msg) { + const cel_expr_SourceInfo_Extension_Version* default_val = NULL; + const cel_expr_SourceInfo_Extension_Version* ret; + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__Extension__Version_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool cel_expr_SourceInfo_Extension_has_version(const cel_expr_SourceInfo_Extension* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void cel_expr_SourceInfo_Extension_set_id(cel_expr_SourceInfo_Extension *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE int32_t* cel_expr_SourceInfo_Extension_mutable_affected_components(cel_expr_SourceInfo_Extension* msg, size_t* size) { + upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t*)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE int32_t* cel_expr_SourceInfo_Extension_resize_affected_components(cel_expr_SourceInfo_Extension* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (int32_t*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE bool cel_expr_SourceInfo_Extension_add_affected_components(cel_expr_SourceInfo_Extension* msg, int32_t val, upb_Arena* arena) { + upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return false; + } + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); + return true; +} +UPB_INLINE void cel_expr_SourceInfo_Extension_set_version(cel_expr_SourceInfo_Extension *msg, cel_expr_SourceInfo_Extension_Version* value) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__SourceInfo__Extension__Version_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_SourceInfo_Extension_Version* cel_expr_SourceInfo_Extension_mutable_version(cel_expr_SourceInfo_Extension* msg, upb_Arena* arena) { + struct cel_expr_SourceInfo_Extension_Version* sub = (struct cel_expr_SourceInfo_Extension_Version*)cel_expr_SourceInfo_Extension_version(msg); + if (sub == NULL) { + sub = (struct cel_expr_SourceInfo_Extension_Version*)_upb_Message_New(&cel__expr__SourceInfo__Extension__Version_msg_init, arena); + if (sub) cel_expr_SourceInfo_Extension_set_version(msg, sub); + } + return sub; +} + +/* cel.expr.SourceInfo.Extension.Version */ + +UPB_INLINE cel_expr_SourceInfo_Extension_Version* cel_expr_SourceInfo_Extension_Version_new(upb_Arena* arena) { + return (cel_expr_SourceInfo_Extension_Version*)_upb_Message_New(&cel__expr__SourceInfo__Extension__Version_msg_init, arena); +} +UPB_INLINE cel_expr_SourceInfo_Extension_Version* cel_expr_SourceInfo_Extension_Version_parse(const char* buf, size_t size, upb_Arena* arena) { + cel_expr_SourceInfo_Extension_Version* ret = cel_expr_SourceInfo_Extension_Version_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__SourceInfo__Extension__Version_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE cel_expr_SourceInfo_Extension_Version* cel_expr_SourceInfo_Extension_Version_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + cel_expr_SourceInfo_Extension_Version* ret = cel_expr_SourceInfo_Extension_Version_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &cel__expr__SourceInfo__Extension__Version_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* cel_expr_SourceInfo_Extension_Version_serialize(const cel_expr_SourceInfo_Extension_Version* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__SourceInfo__Extension__Version_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* cel_expr_SourceInfo_Extension_Version_serialize_ex(const cel_expr_SourceInfo_Extension_Version* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &cel__expr__SourceInfo__Extension__Version_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void cel_expr_SourceInfo_Extension_Version_clear_major(cel_expr_SourceInfo_Extension_Version* msg) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int64_t cel_expr_SourceInfo_Extension_Version_major(const cel_expr_SourceInfo_Extension_Version* msg) { + int64_t default_val = (int64_t)0ll; + int64_t ret; + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void cel_expr_SourceInfo_Extension_Version_clear_minor(cel_expr_SourceInfo_Extension_Version* msg) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int64_t cel_expr_SourceInfo_Extension_Version_minor(const cel_expr_SourceInfo_Extension_Version* msg) { + int64_t default_val = (int64_t)0ll; + int64_t ret; + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void cel_expr_SourceInfo_Extension_Version_set_major(cel_expr_SourceInfo_Extension_Version *msg, int64_t value) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void cel_expr_SourceInfo_Extension_Version_set_minor(cel_expr_SourceInfo_Extension_Version *msg, int64_t value) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* CEL_EXPR_SYNTAX_PROTO_UPB_H__UPB_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c new file mode 100644 index 00000000000..0977be53c36 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c @@ -0,0 +1,489 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/syntax.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#include +#include "upb/generated_code_support.h" +#include "cel/expr/syntax.upb_minitable.h" +#include "google/protobuf/duration.upb_minitable.h" +#include "google/protobuf/struct.upb_minitable.h" +#include "google/protobuf/timestamp.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); +static const upb_MiniTableSubInternal cel_expr_ParsedExpr__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__SourceInfo_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_ParsedExpr__fields[2] = { + {2, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__ParsedExpr_msg_init = { + &cel_expr_ParsedExpr__submsgs[0], + &cel_expr_ParsedExpr__fields[0], + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 0, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.ParsedExpr", +#endif +}; + +const upb_MiniTable* cel__expr__ParsedExpr_msg_init_ptr = &cel__expr__ParsedExpr_msg_init; +static const upb_MiniTableSubInternal cel_expr_Expr__submsgs[7] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Constant_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr__Ident_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr__Select_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr__Call_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr__CreateList_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr__CreateStruct_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr__Comprehension_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Expr__fields[8] = { + {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 24), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(12, 24), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(12, 24), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(12, 24), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(12, 24), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(12, 24), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(12, 24), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr_msg_init = { + &cel_expr_Expr__submsgs[0], + &cel_expr_Expr__fields[0], + UPB_SIZE(24, 32), 8, kUpb_ExtMode_NonExtendable, 0, UPB_FASTTABLE_MASK(120), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000010, &upb_psv8_1bt}, + {0x001800080300001a, &upb_pom_1bt_max64b}, + {0x0018000804010022, &upb_pom_1bt_max64b}, + {0x001800080502002a, &upb_pom_1bt_max64b}, + {0x0018000806030032, &upb_pom_1bt_max64b}, + {0x001800080704003a, &upb_pom_1bt_max64b}, + {0x0018000808050042, &upb_pom_1bt_max64b}, + {0x001800080906004a, &upb_pom_1bt_max128b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Expr_msg_init_ptr = &cel__expr__Expr_msg_init; +static const upb_MiniTableField cel_expr_Expr_Ident__fields[1] = { + {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr__Ident_msg_init = { + NULL, + &cel_expr_Expr_Ident__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr.Ident", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_pss_1bt}, + }) +}; + +const upb_MiniTable* cel__expr__Expr__Ident_msg_init_ptr = &cel__expr__Expr__Ident_msg_init; +static const upb_MiniTableSubInternal cel_expr_Expr_Select__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Expr_Select__fields[3] = { + {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr__Select_msg_init = { + &cel_expr_Expr_Select__submsgs[0], + &cel_expr_Expr_Select__fields[0], + UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr.Select", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000012, &upb_pss_1bt}, + {0x000900003f000018, &upb_psb1_1bt}, + }) +}; + +const upb_MiniTable* cel__expr__Expr__Select_msg_init_ptr = &cel__expr__Expr__Select_msg_init; +static const upb_MiniTableSubInternal cel_expr_Expr_Call__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Expr_Call__fields[3] = { + {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr__Call_msg_init = { + &cel_expr_Expr_Call__submsgs[0], + &cel_expr_Expr_Call__fields[0], + UPB_SIZE(32, 48), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr.Call", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000012, &upb_pss_1bt}, + {0x002800003f01001a, &upb_prm_1bt_max64b}, + }) +}; + +const upb_MiniTable* cel__expr__Expr__Call_msg_init_ptr = &cel__expr__Expr__Call_msg_init; +static const upb_MiniTableSubInternal cel_expr_Expr_CreateList__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Expr_CreateList__fields[2] = { + {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr__CreateList_msg_init = { + &cel_expr_Expr_CreateList__submsgs[0], + &cel_expr_Expr_CreateList__fields[0], + UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr.CreateList", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_prm_1bt_max64b}, + {0x001000003f000012, &upb_ppv4_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Expr__CreateList_msg_init_ptr = &cel__expr__Expr__CreateList_msg_init; +static const upb_MiniTableSubInternal cel_expr_Expr_CreateStruct__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr__CreateStruct__Entry_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Expr_CreateStruct__fields[2] = { + {1, UPB_SIZE(12, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(8, 24), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr__CreateStruct_msg_init = { + &cel_expr_Expr_CreateStruct__submsgs[0], + &cel_expr_Expr_CreateStruct__fields[0], + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr.CreateStruct", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_pss_1bt}, + {0x001800003f000012, &upb_prm_1bt_max64b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Expr__CreateStruct_msg_init_ptr = &cel__expr__Expr__CreateStruct_msg_init; +static const upb_MiniTableSubInternal cel_expr_Expr_CreateStruct_Entry__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Expr_CreateStruct_Entry__fields[5] = { + {1, 32, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 16), UPB_SIZE(-17, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(12, 40), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr__CreateStruct__Entry_msg_init = { + &cel_expr_Expr_CreateStruct_Entry__submsgs[0], + &cel_expr_Expr_CreateStruct_Entry__fields[0], + UPB_SIZE(40, 48), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr.CreateStruct.Entry", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x002000003f000008, &upb_psv8_1bt}, + {0x0010000c02000012, &upb_pos_1bt}, + {0x0010000c0300001a, &upb_pom_1bt_max64b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000900003f000028, &upb_psb1_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Expr__CreateStruct__Entry_msg_init_ptr = &cel__expr__Expr__CreateStruct__Entry_msg_init; +static const upb_MiniTableSubInternal cel_expr_Expr_Comprehension__submsgs[5] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Expr_Comprehension__fields[8] = { + {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(20, 80), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(24, 88), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(28, 96), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Expr__Comprehension_msg_init = { + &cel_expr_Expr_Comprehension__submsgs[0], + &cel_expr_Expr_Comprehension__fields[0], + UPB_SIZE(56, 104), 8, kUpb_ExtMode_NonExtendable, 8, UPB_FASTTABLE_MASK(120), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Expr.Comprehension", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x002000003f00001a, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x003000003f000042, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Expr__Comprehension_msg_init_ptr = &cel__expr__Expr__Comprehension_msg_init; +static const upb_MiniTableSubInternal cel_expr_Constant__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__Timestamp_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_Constant__fields[9] = { + {1, 16, -9, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {2, 16, -9, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {3, 16, -9, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {4, 16, -9, kUpb_NoSub, 4, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {5, 16, -9, kUpb_NoSub, 1, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {6, 16, -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {7, 16, -9, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {8, 16, -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, 16, -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__Constant_msg_init = { + &cel_expr_Constant__submsgs[0], + &cel_expr_Constant__fields[0], + UPB_SIZE(24, 32), 9, kUpb_ExtMode_NonExtendable, 9, UPB_FASTTABLE_MASK(120), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.Constant", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0010000801000008, &upb_pov4_1bt}, + {0x0010000802000010, &upb_pob1_1bt}, + {0x0010000803000018, &upb_pov8_1bt}, + {0x0010000804000020, &upb_pov8_1bt}, + {0x0010000805000029, &upb_pof8_1bt}, + {0x0010000806000032, &upb_pos_1bt}, + {0x001000080700003a, &upb_pob_1bt}, + {0x0010000808000042, &upb_pom_1bt_maxmaxb}, + {0x001000080901004a, &upb_pom_1bt_maxmaxb}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__Constant_msg_init_ptr = &cel__expr__Constant_msg_init; +static const upb_MiniTableSubInternal cel_expr_SourceInfo__submsgs[3] = { + {.UPB_PRIVATE(submsg) = &cel__expr__SourceInfo__PositionsEntry_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__SourceInfo__MacroCallsEntry_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__SourceInfo__Extension_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_SourceInfo__fields[6] = { + {1, UPB_SIZE(24, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(32, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(8, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__SourceInfo_msg_init = { + &cel_expr_SourceInfo__submsgs[0], + &cel_expr_SourceInfo__fields[0], + UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.SourceInfo", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_pss_1bt}, + {0x001800003f000012, &upb_pss_1bt}, + {0x002800003f00001a, &upb_ppv4_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x004000003f020032, &upb_prm_1bt_max64b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__SourceInfo_msg_init_ptr = &cel__expr__SourceInfo_msg_init; +static const upb_MiniTableField cel_expr_SourceInfo_PositionsEntry__fields[2] = { + {1, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {2, 32, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__SourceInfo__PositionsEntry_msg_init = { + NULL, + &cel_expr_SourceInfo_PositionsEntry__fields[0], + 48, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.SourceInfo.PositionsEntry", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000008, &upb_psv8_1bt}, + {0x002000003f000010, &upb_psv4_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__SourceInfo__PositionsEntry_msg_init_ptr = &cel__expr__SourceInfo__PositionsEntry_msg_init; +static const upb_MiniTableSubInternal cel_expr_SourceInfo_MacroCallsEntry__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__Expr_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_SourceInfo_MacroCallsEntry__fields[2] = { + {1, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {2, 32, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__SourceInfo__MacroCallsEntry_msg_init = { + &cel_expr_SourceInfo_MacroCallsEntry__submsgs[0], + &cel_expr_SourceInfo_MacroCallsEntry__fields[0], + 48, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.SourceInfo.MacroCallsEntry", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000008, &upb_psv8_1bt}, + }) +}; + +const upb_MiniTable* cel__expr__SourceInfo__MacroCallsEntry_msg_init_ptr = &cel__expr__SourceInfo__MacroCallsEntry_msg_init; +static const upb_MiniTableSubInternal cel_expr_SourceInfo_Extension__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &cel__expr__SourceInfo__Extension__Version_msg_init_ptr}, +}; + +static const upb_MiniTableField cel_expr_SourceInfo_Extension__fields[3] = { + {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 40), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__SourceInfo__Extension_msg_init = { + &cel_expr_SourceInfo_Extension__submsgs[0], + &cel_expr_SourceInfo_Extension__fields[0], + UPB_SIZE(32, 48), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.SourceInfo.Extension", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + {0x002000003f000012, &upb_ppv4_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__SourceInfo__Extension_msg_init_ptr = &cel__expr__SourceInfo__Extension_msg_init; +static const upb_MiniTableField cel_expr_SourceInfo_Extension_Version__fields[2] = { + {1, 8, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, + {2, 16, 0, kUpb_NoSub, 3, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable cel__expr__SourceInfo__Extension__Version_msg_init = { + NULL, + &cel_expr_SourceInfo_Extension_Version__fields[0], + 24, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "cel.expr.SourceInfo.Extension.Version", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f000008, &upb_psv8_1bt}, + {0x001000003f000010, &upb_psv8_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* cel__expr__SourceInfo__Extension__Version_msg_init_ptr = &cel__expr__SourceInfo__Extension__Version_msg_init; +static const upb_MiniTable *messages_layout[15] = { + &cel__expr__ParsedExpr_msg_init, + &cel__expr__Expr_msg_init, + &cel__expr__Expr__Ident_msg_init, + &cel__expr__Expr__Select_msg_init, + &cel__expr__Expr__Call_msg_init, + &cel__expr__Expr__CreateList_msg_init, + &cel__expr__Expr__CreateStruct_msg_init, + &cel__expr__Expr__CreateStruct__Entry_msg_init, + &cel__expr__Expr__Comprehension_msg_init, + &cel__expr__Constant_msg_init, + &cel__expr__SourceInfo_msg_init, + &cel__expr__SourceInfo__PositionsEntry_msg_init, + &cel__expr__SourceInfo__MacroCallsEntry_msg_init, + &cel__expr__SourceInfo__Extension_msg_init, + &cel__expr__SourceInfo__Extension__Version_msg_init, +}; + +const upb_MiniTableFile cel_expr_syntax_proto_upb_file_layout = { + messages_layout, + NULL, + NULL, + 15, + 0, + 0, +}; + +#include "upb/port/undef.inc" + diff --git a/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h new file mode 100644 index 00000000000..c1718f9108c --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h @@ -0,0 +1,60 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/syntax.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef CEL_EXPR_SYNTAX_PROTO_UPB_H__UPB_MINITABLE_H_ +#define CEL_EXPR_SYNTAX_PROTO_UPB_H__UPB_MINITABLE_H_ + +#include "upb/generated_code_support.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const upb_MiniTable cel__expr__ParsedExpr_msg_init; +extern const upb_MiniTable* cel__expr__ParsedExpr_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr_msg_init; +extern const upb_MiniTable* cel__expr__Expr_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr__Ident_msg_init; +extern const upb_MiniTable* cel__expr__Expr__Ident_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr__Select_msg_init; +extern const upb_MiniTable* cel__expr__Expr__Select_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr__Call_msg_init; +extern const upb_MiniTable* cel__expr__Expr__Call_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr__CreateList_msg_init; +extern const upb_MiniTable* cel__expr__Expr__CreateList_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr__CreateStruct_msg_init; +extern const upb_MiniTable* cel__expr__Expr__CreateStruct_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr__CreateStruct__Entry_msg_init; +extern const upb_MiniTable* cel__expr__Expr__CreateStruct__Entry_msg_init_ptr; +extern const upb_MiniTable cel__expr__Expr__Comprehension_msg_init; +extern const upb_MiniTable* cel__expr__Expr__Comprehension_msg_init_ptr; +extern const upb_MiniTable cel__expr__Constant_msg_init; +extern const upb_MiniTable* cel__expr__Constant_msg_init_ptr; +extern const upb_MiniTable cel__expr__SourceInfo_msg_init; +extern const upb_MiniTable* cel__expr__SourceInfo_msg_init_ptr; +extern const upb_MiniTable cel__expr__SourceInfo__PositionsEntry_msg_init; +extern const upb_MiniTable* cel__expr__SourceInfo__PositionsEntry_msg_init_ptr; +extern const upb_MiniTable cel__expr__SourceInfo__MacroCallsEntry_msg_init; +extern const upb_MiniTable* cel__expr__SourceInfo__MacroCallsEntry_msg_init_ptr; +extern const upb_MiniTable cel__expr__SourceInfo__Extension_msg_init; +extern const upb_MiniTable* cel__expr__SourceInfo__Extension_msg_init_ptr; +extern const upb_MiniTable cel__expr__SourceInfo__Extension__Version_msg_init; +extern const upb_MiniTable* cel__expr__SourceInfo__Extension__Version_msg_init_ptr; + +extern const upb_MiniTableFile cel_expr_syntax_proto_upb_file_layout; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* CEL_EXPR_SYNTAX_PROTO_UPB_H__UPB_MINITABLE_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h index 3122710d709..5087b1e5906 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h @@ -57,7 +57,8 @@ struct google_protobuf_BoolValue; typedef enum { envoy_config_accesslog_v3_ComparisonFilter_EQ = 0, envoy_config_accesslog_v3_ComparisonFilter_GE = 1, - envoy_config_accesslog_v3_ComparisonFilter_LE = 2 + envoy_config_accesslog_v3_ComparisonFilter_LE = 2, + envoy_config_accesslog_v3_ComparisonFilter_NE = 3 } envoy_config_accesslog_v3_ComparisonFilter_Op; typedef enum { diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h index 498fc0dd291..aa2b30694e1 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h @@ -27,6 +27,7 @@ #include "envoy/config/overload/v3/overload.upb_minitable.h" #include "envoy/config/trace/v3/http_tracer.upb_minitable.h" #include "envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h" +#include "envoy/type/matcher/v3/string.upb_minitable.h" #include "envoy/type/v3/percent.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/struct.upb_minitable.h" @@ -84,6 +85,7 @@ struct envoy_config_metrics_v3_StatsSink; struct envoy_config_overload_v3_OverloadManager; struct envoy_config_trace_v3_Tracing; struct envoy_extensions_transport_sockets_tls_v3_Secret; +struct envoy_type_matcher_v3_StringMatcher; struct envoy_type_v3_Percent; struct google_protobuf_Duration; struct google_protobuf_Struct; @@ -155,6 +157,19 @@ UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_flush(envoy_conf const upb_MiniTableField field = {29, 14, UPB_SIZE(-145, -17), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__bootstrap__v3__Bootstrap_msg_init, &field); } +typedef enum { + envoy_config_bootstrap_v3_Bootstrap_stats_eviction_stats_eviction_interval = 42, + envoy_config_bootstrap_v3_Bootstrap_stats_eviction_NOT_SET = 0 +} envoy_config_bootstrap_v3_Bootstrap_stats_eviction_oneofcases; +UPB_INLINE envoy_config_bootstrap_v3_Bootstrap_stats_eviction_oneofcases envoy_config_bootstrap_v3_Bootstrap_stats_eviction_case(const envoy_config_bootstrap_v3_Bootstrap* msg) { + const upb_MiniTableField field = {42, UPB_SIZE(152, 344), UPB_SIZE(-149, -21), 31, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (envoy_config_bootstrap_v3_Bootstrap_stats_eviction_oneofcases)upb_Message_WhichOneofFieldNumber( + UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_eviction(envoy_config_bootstrap_v3_Bootstrap* msg) { + const upb_MiniTableField field = {42, UPB_SIZE(152, 344), UPB_SIZE(-149, -21), 31, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__bootstrap__v3__Bootstrap_msg_init, &field); +} UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_node(envoy_config_bootstrap_v3_Bootstrap* msg) { const upb_MiniTableField field = {1, UPB_SIZE(16, 88), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); @@ -224,13 +239,13 @@ UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_cluster_manager(const en return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_flags_path(envoy_config_bootstrap_v3_Bootstrap* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(148, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(156, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_flags_path(const envoy_config_bootstrap_v3_Bootstrap* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {5, UPB_SIZE(148, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(156, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -419,13 +434,13 @@ UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_layered_runtime(const en return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_header_prefix(envoy_config_bootstrap_v3_Bootstrap* msg) { - const upb_MiniTableField field = {18, UPB_SIZE(156, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {18, UPB_SIZE(164, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_header_prefix(const envoy_config_bootstrap_v3_Bootstrap* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {18, UPB_SIZE(156, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {18, UPB_SIZE(164, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -547,13 +562,13 @@ UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_default_config_source(co return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_default_socket_interface(envoy_config_bootstrap_v3_Bootstrap* msg) { - const upb_MiniTableField field = {24, UPB_SIZE(164, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {24, UPB_SIZE(172, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_default_socket_interface(const envoy_config_bootstrap_v3_Bootstrap* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {24, UPB_SIZE(164, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {24, UPB_SIZE(172, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -771,13 +786,13 @@ UPB_INLINE upb_Array* _envoy_config_bootstrap_v3_Bootstrap_inline_headers_mutabl return arr; } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_perf_tracing_file_path(envoy_config_bootstrap_v3_Bootstrap* msg) { - const upb_MiniTableField field = {33, UPB_SIZE(172, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {33, UPB_SIZE(180, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_perf_tracing_file_path(const envoy_config_bootstrap_v3_Bootstrap* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {33, UPB_SIZE(172, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {33, UPB_SIZE(180, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -918,6 +933,23 @@ UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_memory_allocator_manager const upb_MiniTableField field = {41, UPB_SIZE(140, 336), 88, 30, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_eviction_interval(envoy_config_bootstrap_v3_Bootstrap* msg) { + const upb_MiniTableField field = {42, UPB_SIZE(152, 344), UPB_SIZE(-149, -21), 31, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Duration* envoy_config_bootstrap_v3_Bootstrap_stats_eviction_interval(const envoy_config_bootstrap_v3_Bootstrap* msg) { + const struct google_protobuf_Duration* default_val = NULL; + const struct google_protobuf_Duration* ret; + const upb_MiniTableField field = {42, UPB_SIZE(152, 344), UPB_SIZE(-149, -21), 31, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_eviction_interval(const envoy_config_bootstrap_v3_Bootstrap* msg) { + const upb_MiniTableField field = {42, UPB_SIZE(152, 344), UPB_SIZE(-149, -21), 31, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_node(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_core_v3_Node* value) { const upb_MiniTableField field = {1, UPB_SIZE(16, 88), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -972,7 +1004,7 @@ UPB_INLINE struct envoy_config_bootstrap_v3_ClusterManager* envoy_config_bootstr return sub; } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_flags_path(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) { - const upb_MiniTableField field = {5, UPB_SIZE(148, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(156, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE struct envoy_config_metrics_v3_StatsSink** envoy_config_bootstrap_v3_Bootstrap_mutable_stats_sinks(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* size) { @@ -1116,7 +1148,7 @@ UPB_INLINE struct envoy_config_bootstrap_v3_LayeredRuntime* envoy_config_bootstr return sub; } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_header_prefix(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) { - const upb_MiniTableField field = {18, UPB_SIZE(156, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {18, UPB_SIZE(164, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_stats_server_version_override(envoy_config_bootstrap_v3_Bootstrap *msg, struct google_protobuf_UInt64Value* value) { @@ -1214,7 +1246,7 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_B return sub; } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_default_socket_interface(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) { - const upb_MiniTableField field = {24, UPB_SIZE(164, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {24, UPB_SIZE(172, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_clear(envoy_config_bootstrap_v3_Bootstrap* msg) { @@ -1374,7 +1406,7 @@ UPB_INLINE struct envoy_config_bootstrap_v3_CustomInlineHeader* envoy_config_boo return sub; } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_perf_tracing_file_path(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) { - const upb_MiniTableField field = {33, UPB_SIZE(172, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {33, UPB_SIZE(180, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_default_regex_engine(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) { @@ -1481,6 +1513,19 @@ UPB_INLINE struct envoy_config_bootstrap_v3_MemoryAllocatorManager* envoy_config } return sub; } +UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_stats_eviction_interval(envoy_config_bootstrap_v3_Bootstrap *msg, struct google_protobuf_Duration* value) { + const upb_MiniTableField field = {42, UPB_SIZE(152, 344), UPB_SIZE(-149, -21), 31, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Bootstrap_mutable_stats_eviction_interval(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) { + struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_bootstrap_v3_Bootstrap_stats_eviction_interval(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Duration*)_upb_Message_New(&google__protobuf__Duration_msg_init, arena); + if (sub) envoy_config_bootstrap_v3_Bootstrap_set_stats_eviction_interval(msg, sub); + } + return sub; +} /* envoy.config.bootstrap.v3.Bootstrap.StaticResources */ @@ -2210,25 +2255,25 @@ UPB_INLINE char* envoy_config_bootstrap_v3_Admin_serialize_ex(const envoy_config return ptr; } UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_access_log_path(envoy_config_bootstrap_v3_Admin* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Admin_access_log_path(const envoy_config_bootstrap_v3_Admin* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_profile_path(envoy_config_bootstrap_v3_Admin* msg) { - const upb_MiniTableField field = {2, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Admin_profile_path(const envoy_config_bootstrap_v3_Admin* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {2, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -2332,13 +2377,48 @@ UPB_INLINE bool envoy_config_bootstrap_v3_Admin_ignore_global_conn_limit(const e &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_allow_paths(envoy_config_bootstrap_v3_Admin* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* const* envoy_config_bootstrap_v3_Admin_allow_paths(const envoy_config_bootstrap_v3_Admin* msg, size_t* size) { + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct envoy_type_matcher_v3_StringMatcher* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_bootstrap_v3_Admin_allow_paths_upb_array(const envoy_config_bootstrap_v3_Admin* msg, size_t* size) { + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_bootstrap_v3_Admin_allow_paths_mutable_upb_array(envoy_config_bootstrap_v3_Admin* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_config_bootstrap_v3_Admin_set_access_log_path(envoy_config_bootstrap_v3_Admin *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_bootstrap_v3_Admin_set_profile_path(envoy_config_bootstrap_v3_Admin *msg, upb_StringView value) { - const upb_MiniTableField field = {2, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_bootstrap_v3_Admin_set_address(envoy_config_bootstrap_v3_Admin *msg, struct envoy_config_core_v3_Address* value) { @@ -2422,6 +2502,38 @@ UPB_INLINE void envoy_config_bootstrap_v3_Admin_set_ignore_global_conn_limit(env const upb_MiniTableField field = {6, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_bootstrap_v3_Admin_mutable_allow_paths(envoy_config_bootstrap_v3_Admin* msg, size_t* size) { + upb_MiniTableField field = {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct envoy_type_matcher_v3_StringMatcher**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_bootstrap_v3_Admin_resize_allow_paths(envoy_config_bootstrap_v3_Admin* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct envoy_type_matcher_v3_StringMatcher**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_bootstrap_v3_Admin_add_allow_paths(envoy_config_bootstrap_v3_Admin* msg, upb_Arena* arena) { + upb_MiniTableField field = {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy__type__matcher__v3__StringMatcher_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} /* envoy.config.bootstrap.v3.ClusterManager */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c index 0e08424a754..43d21bbd2aa 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c @@ -23,6 +23,7 @@ #include "envoy/config/overload/v3/overload.upb_minitable.h" #include "envoy/config/trace/v3/http_tracer.upb_minitable.h" #include "envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h" +#include "envoy/type/matcher/v3/string.upb_minitable.h" #include "envoy/type/v3/percent.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/struct.upb_minitable.h" @@ -38,7 +39,7 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_config_bootstrap_v3_Bootstrap__submsgs[31] = { +static const upb_MiniTableSubInternal envoy_config_bootstrap_v3_Bootstrap__submsgs[32] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__Node_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__bootstrap__v3__Bootstrap__StaticResources_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__bootstrap__v3__Bootstrap__DynamicResources_msg_init_ptr}, @@ -70,14 +71,15 @@ static const upb_MiniTableSubInternal envoy_config_bootstrap_v3_Bootstrap__subms {.UPB_PRIVATE(submsg) = &envoy__config__bootstrap__v3__Bootstrap__DeferredStatOptions_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__bootstrap__v3__Bootstrap__GrpcAsyncClientManagerConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__bootstrap__v3__MemoryAllocatorManager_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_bootstrap_v3_Bootstrap__fields[39] = { +static const upb_MiniTableField envoy_config_bootstrap_v3_Bootstrap__fields[40] = { {1, UPB_SIZE(16, 88), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(20, 96), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(24, 104), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(28, 112), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {5, UPB_SIZE(148, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(156, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {6, UPB_SIZE(32, 120), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {7, UPB_SIZE(36, 128), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {8, UPB_SIZE(40, 136), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -88,13 +90,13 @@ static const upb_MiniTableField envoy_config_bootstrap_v3_Bootstrap__fields[39] {15, UPB_SIZE(60, 176), 74, 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {16, 12, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {17, UPB_SIZE(64, 184), 75, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {18, UPB_SIZE(156, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {18, UPB_SIZE(164, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {19, UPB_SIZE(68, 192), 76, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {20, 13, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {21, UPB_SIZE(72, 200), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {22, UPB_SIZE(76, 208), 0, 15, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {23, UPB_SIZE(80, 216), 77, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {24, UPB_SIZE(164, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {24, UPB_SIZE(172, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {25, UPB_SIZE(84, 224), 0, 17, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {26, UPB_SIZE(88, 232), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {27, UPB_SIZE(92, 240), 78, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -103,7 +105,7 @@ static const upb_MiniTableField envoy_config_bootstrap_v3_Bootstrap__fields[39] {30, UPB_SIZE(100, 256), 79, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {31, UPB_SIZE(104, 264), 80, 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {32, UPB_SIZE(108, 272), 0, 22, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {33, UPB_SIZE(172, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {33, UPB_SIZE(180, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {34, UPB_SIZE(112, 280), 81, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {35, UPB_SIZE(116, 288), 82, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {36, UPB_SIZE(120, 296), 83, 25, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -112,12 +114,13 @@ static const upb_MiniTableField envoy_config_bootstrap_v3_Bootstrap__fields[39] {39, UPB_SIZE(132, 320), 86, 28, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {40, UPB_SIZE(136, 328), 87, 29, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {41, UPB_SIZE(140, 336), 88, 30, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {42, UPB_SIZE(152, 344), UPB_SIZE(-149, -21), 31, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__bootstrap__v3__Bootstrap_msg_init = { &envoy_config_bootstrap_v3_Bootstrap__submsgs[0], &envoy_config_bootstrap_v3_Bootstrap__fields[0], - UPB_SIZE(184, 344), 39, kUpb_ExtMode_NonExtendable, 9, UPB_FASTTABLE_MASK(248), 0, + UPB_SIZE(192, 352), 40, kUpb_ExtMode_NonExtendable, 9, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.bootstrap.v3.Bootstrap", #endif @@ -322,25 +325,27 @@ const upb_MiniTable envoy__config__bootstrap__v3__Bootstrap__CertificateProvider }; const upb_MiniTable* envoy__config__bootstrap__v3__Bootstrap__CertificateProviderInstancesEntry_msg_init_ptr = &envoy__config__bootstrap__v3__Bootstrap__CertificateProviderInstancesEntry_msg_init; -static const upb_MiniTableSubInternal envoy_config_bootstrap_v3_Admin__submsgs[3] = { +static const upb_MiniTableSubInternal envoy_config_bootstrap_v3_Admin__submsgs[4] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__Address_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__SocketOption_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__accesslog__v3__AccessLog_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__StringMatcher_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_bootstrap_v3_Admin__fields[6] = { - {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {2, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_bootstrap_v3_Admin__fields[7] = { + {1, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(20, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {6, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__bootstrap__v3__Admin_msg_init = { &envoy_config_bootstrap_v3_Admin__submsgs[0], &envoy_config_bootstrap_v3_Admin__fields[0], - UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(48, 80), 7, kUpb_ExtMode_NonExtendable, 7, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.bootstrap.v3.Admin", #endif @@ -352,7 +357,7 @@ const upb_MiniTable envoy__config__bootstrap__v3__Admin_msg_init = { {0x003800003f010022, &upb_prm_1bt_maxmaxb}, {0x004000003f02002a, &upb_prm_1bt_maxmaxb}, {0x000900003f000030, &upb_psb1_1bt}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x004800003f03003a, &upb_prm_1bt_maxmaxb}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h index 0d3f240f250..b2ecac96d16 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h @@ -31,6 +31,7 @@ #include "google/protobuf/struct.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "xds/core/v3/collection_entry.upb_minitable.h" +#include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/security.upb_minitable.h" @@ -98,6 +99,7 @@ struct google_protobuf_Struct; struct google_protobuf_UInt32Value; struct google_protobuf_UInt64Value; struct xds_core_v3_CollectionEntry; +struct xds_type_matcher_v3_Matcher; typedef enum { envoy_config_cluster_v3_Cluster_USE_CONFIGURED_PROTOCOL = 0, @@ -272,12 +274,12 @@ typedef enum { envoy_config_cluster_v3_Cluster_cluster_discovery_type_NOT_SET = 0 } envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases; UPB_INLINE envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases envoy_config_cluster_v3_Cluster_cluster_discovery_type_case(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; return (envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_cluster_discovery_type(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__cluster__v3__Cluster_msg_init, &field); } typedef enum { @@ -289,40 +291,40 @@ typedef enum { envoy_config_cluster_v3_Cluster_lb_config_NOT_SET = 0 } envoy_config_cluster_v3_Cluster_lb_config_oneofcases; UPB_INLINE envoy_config_cluster_v3_Cluster_lb_config_oneofcases envoy_config_cluster_v3_Cluster_lb_config_case(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {23, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_cluster_v3_Cluster_lb_config_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_lb_config(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {23, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__cluster__v3__Cluster_msg_init, &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_name(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(188, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(192, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_name(const envoy_config_cluster_v3_Cluster* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(188, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(192, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_type(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_type(const envoy_config_cluster_v3_Cluster* msg) { int32_t default_val = 0; int32_t ret; - const upb_MiniTableField field = {2, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_type(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_eds_cluster_config(envoy_config_cluster_v3_Cluster* msg) { @@ -624,20 +626,20 @@ UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_lb_subset_config(const envoy return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_ring_hash_lb_config(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {23, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_cluster_v3_Cluster_RingHashLbConfig* envoy_config_cluster_v3_Cluster_ring_hash_lb_config(const envoy_config_cluster_v3_Cluster* msg) { const envoy_config_cluster_v3_Cluster_RingHashLbConfig* default_val = NULL; const envoy_config_cluster_v3_Cluster_RingHashLbConfig* ret; - const upb_MiniTableField field = {23, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__RingHashLbConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_ring_hash_lb_config(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {23, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_transport_socket(envoy_config_cluster_v3_Cluster* msg) { @@ -704,13 +706,13 @@ UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_common_lb_config(const envoy return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_alt_stat_name(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {28, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(200, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_alt_stat_name(const envoy_config_cluster_v3_Cluster* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {28, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(200, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -791,20 +793,20 @@ UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_load_assignment(const envoy_ return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_original_dst_lb_config(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {34, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* envoy_config_cluster_v3_Cluster_original_dst_lb_config(const envoy_config_cluster_v3_Cluster* msg) { const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* default_val = NULL; const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* ret; - const upb_MiniTableField field = {34, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__OriginalDstLbConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_original_dst_lb_config(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {34, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_typed_extension_protocol_options(envoy_config_cluster_v3_Cluster* msg) { @@ -851,37 +853,37 @@ UPB_INLINE upb_Map* _envoy_config_cluster_v3_Cluster_typed_extension_protocol_op return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, 0, sizeof(struct google_protobuf_Any*), a); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_least_request_lb_config(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {37, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_config_cluster_v3_Cluster_least_request_lb_config(const envoy_config_cluster_v3_Cluster* msg) { const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* default_val = NULL; const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* ret; - const upb_MiniTableField field = {37, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__LeastRequestLbConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_least_request_lb_config(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {37, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_cluster_type(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {38, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {38, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_cluster_v3_Cluster_CustomClusterType* envoy_config_cluster_v3_Cluster_cluster_type(const envoy_config_cluster_v3_Cluster* msg) { const envoy_config_cluster_v3_Cluster_CustomClusterType* default_val = NULL; const envoy_config_cluster_v3_Cluster_CustomClusterType* ret; - const upb_MiniTableField field = {38, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {38, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__CustomClusterType_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_cluster_type(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {38, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {38, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_respect_dns_ttl(envoy_config_cluster_v3_Cluster* msg) { @@ -1122,20 +1124,20 @@ UPB_INLINE bool envoy_config_cluster_v3_Cluster_connection_pool_per_downstream_c return ret; } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_maglev_lb_config(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {52, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {52, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_cluster_v3_Cluster_MaglevLbConfig* envoy_config_cluster_v3_Cluster_maglev_lb_config(const envoy_config_cluster_v3_Cluster* msg) { const envoy_config_cluster_v3_Cluster_MaglevLbConfig* default_val = NULL; const envoy_config_cluster_v3_Cluster_MaglevLbConfig* ret; - const upb_MiniTableField field = {52, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {52, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__MaglevLbConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_maglev_lb_config(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {52, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {52, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_dns_resolution_config(envoy_config_cluster_v3_Cluster* msg) { @@ -1190,20 +1192,20 @@ UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_typed_dns_resolver_config(co return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_round_robin_lb_config(envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {56, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {56, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* envoy_config_cluster_v3_Cluster_round_robin_lb_config(const envoy_config_cluster_v3_Cluster* msg) { const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* default_val = NULL; const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* ret; - const upb_MiniTableField field = {56, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {56, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__RoundRobinLbConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_round_robin_lb_config(const envoy_config_cluster_v3_Cluster* msg) { - const upb_MiniTableField field = {56, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {56, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_lrs_report_endpoint_metrics(envoy_config_cluster_v3_Cluster* msg) { @@ -1255,13 +1257,30 @@ UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_jitter(const envoy_confi const upb_MiniTableField field = {58, UPB_SIZE(168, 344), 92, 39, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_transport_socket_matcher(envoy_config_cluster_v3_Cluster* msg) { + const upb_MiniTableField field = {59, UPB_SIZE(172, 352), 93, 40, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct xds_type_matcher_v3_Matcher* envoy_config_cluster_v3_Cluster_transport_socket_matcher(const envoy_config_cluster_v3_Cluster* msg) { + const struct xds_type_matcher_v3_Matcher* default_val = NULL; + const struct xds_type_matcher_v3_Matcher* ret; + const upb_MiniTableField field = {59, UPB_SIZE(172, 352), 93, 40, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__type__matcher__v3__Matcher_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_transport_socket_matcher(const envoy_config_cluster_v3_Cluster* msg) { + const upb_MiniTableField field = {59, UPB_SIZE(172, 352), 93, 40, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_cluster_v3_Cluster_set_name(envoy_config_cluster_v3_Cluster *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(188, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(192, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_type(envoy_config_cluster_v3_Cluster *msg, int32_t value) { - const upb_MiniTableField field = {2, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_eds_cluster_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_EdsClusterConfig* value) { @@ -1493,7 +1512,7 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_LbSubsetConfig* envoy_config_c return sub; } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_ring_hash_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_RingHashLbConfig* value) { - const upb_MiniTableField field = {23, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__RingHashLbConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1549,7 +1568,7 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig* envoy_config_c return sub; } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_alt_stat_name(envoy_config_cluster_v3_Cluster *msg, upb_StringView value) { - const upb_MiniTableField field = {28, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(200, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_common_http_protocol_options(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_HttpProtocolOptions* value) { @@ -1600,7 +1619,7 @@ UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment* envoy_config_c return sub; } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_original_dst_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* value) { - const upb_MiniTableField field = {34, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__OriginalDstLbConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1634,7 +1653,7 @@ UPB_INLINE bool envoy_config_cluster_v3_Cluster_typed_extension_protocol_options return _upb_Map_Delete(map, &key, 0, NULL); } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_least_request_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* value) { - const upb_MiniTableField field = {37, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__LeastRequestLbConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1647,7 +1666,7 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_co return sub; } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_cluster_type(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_CustomClusterType* value) { - const upb_MiniTableField field = {38, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {38, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__CustomClusterType_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1831,7 +1850,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_set_connection_pool_per_downstre upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_maglev_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_MaglevLbConfig* value) { - const upb_MiniTableField field = {52, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {52, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__MaglevLbConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1883,7 +1902,7 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluste return sub; } UPB_INLINE void envoy_config_cluster_v3_Cluster_set_round_robin_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* value) { - const upb_MiniTableField field = {56, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {56, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__cluster__v3__Cluster__RoundRobinLbConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1936,6 +1955,19 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_muta } return sub; } +UPB_INLINE void envoy_config_cluster_v3_Cluster_set_transport_socket_matcher(envoy_config_cluster_v3_Cluster *msg, struct xds_type_matcher_v3_Matcher* value) { + const upb_MiniTableField field = {59, UPB_SIZE(172, 352), 93, 40, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__type__matcher__v3__Matcher_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_config_cluster_v3_Cluster_mutable_transport_socket_matcher(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) { + struct xds_type_matcher_v3_Matcher* sub = (struct xds_type_matcher_v3_Matcher*)envoy_config_cluster_v3_Cluster_transport_socket_matcher(msg); + if (sub == NULL) { + sub = (struct xds_type_matcher_v3_Matcher*)_upb_Message_New(&xds__type__matcher__v3__Matcher_msg_init, arena); + if (sub) envoy_config_cluster_v3_Cluster_set_transport_socket_matcher(msg, sub); + } + return sub; +} /* envoy.config.cluster.v3.Cluster.TransportSocketMatch */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c index 255fc8ce166..69155b84e05 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c @@ -27,6 +27,7 @@ #include "google/protobuf/struct.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "xds/core/v3/collection_entry.upb_minitable.h" +#include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/security.upb_minitable.h" @@ -56,7 +57,7 @@ const upb_MiniTable envoy__config__cluster__v3__ClusterCollection_msg_init = { }; const upb_MiniTable* envoy__config__cluster__v3__ClusterCollection_msg_init_ptr = &envoy__config__cluster__v3__ClusterCollection_msg_init; -static const upb_MiniTableSubInternal envoy_config_cluster_v3_Cluster__submsgs[40] = { +static const upb_MiniTableSubInternal envoy_config_cluster_v3_Cluster__submsgs[41] = { {.UPB_PRIVATE(submsg) = &envoy__config__cluster__v3__Cluster__EdsClusterConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, @@ -97,11 +98,12 @@ static const upb_MiniTableSubInternal envoy_config_cluster_v3_Cluster__submsgs[4 {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__cluster__v3__Cluster__RoundRobinLbConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &xds__type__matcher__v3__Matcher_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_cluster_v3_Cluster__fields[53] = { - {1, UPB_SIZE(188, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_cluster_v3_Cluster__fields[54] = { + {1, UPB_SIZE(192, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(20, 72), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(24, 80), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(28, 88), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -118,21 +120,21 @@ static const upb_MiniTableField envoy_config_cluster_v3_Cluster__fields[53] = { {20, UPB_SIZE(72, 160), 73, 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {21, UPB_SIZE(76, 168), 74, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {22, UPB_SIZE(80, 176), 75, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {23, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {23, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {24, UPB_SIZE(84, 184), 76, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {25, UPB_SIZE(88, 192), 77, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {26, UPB_SIZE(92, 28), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {27, UPB_SIZE(96, 200), 78, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {28, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {28, UPB_SIZE(200, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {29, UPB_SIZE(100, 208), 79, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {30, UPB_SIZE(104, 216), 80, 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {31, 12, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {32, 13, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {33, UPB_SIZE(108, 224), 81, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {34, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {34, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {36, UPB_SIZE(112, 232), 0, 22, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {37, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {38, UPB_SIZE(176, 352), UPB_SIZE(-173, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {37, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {38, UPB_SIZE(180, 360), UPB_SIZE(-177, -33), 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {39, 14, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {40, UPB_SIZE(116, 240), 0, 25, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {41, UPB_SIZE(120, 248), 82, 26, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -146,26 +148,27 @@ static const upb_MiniTableField envoy_config_cluster_v3_Cluster__fields[53] = { {49, UPB_SIZE(144, 296), 87, 32, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {50, UPB_SIZE(148, 304), 88, 33, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {51, 17, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {52, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {52, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {53, UPB_SIZE(152, 312), 89, 35, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {54, UPB_SIZE(156, 320), 90, 36, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {55, UPB_SIZE(160, 328), 91, 37, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {56, UPB_SIZE(184, 360), UPB_SIZE(-181, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {56, UPB_SIZE(188, 368), UPB_SIZE(-185, -37), 38, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {57, UPB_SIZE(164, 336), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {58, UPB_SIZE(168, 344), 92, 39, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {59, UPB_SIZE(172, 352), 93, 40, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__cluster__v3__Cluster_msg_init = { &envoy_config_cluster_v3_Cluster__submsgs[0], &envoy_config_cluster_v3_Cluster__fields[0], - UPB_SIZE(208, 368), 53, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(248), 0, + UPB_SIZE(208, 376), 54, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.cluster.v3.Cluster", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x002800003f00000a, &upb_pss_1bt}, - {0x0160002002000010, &upb_pov4_1bt}, + {0x0168002002000010, &upb_pov4_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, @@ -183,10 +186,10 @@ const upb_MiniTable envoy__config__cluster__v3__Cluster_msg_init = { {0x001800003f000188, &upb_psv4_2bt}, {0x009000003f090192, &upb_prm_2bt_maxmaxb}, {0x001100003f000398, &upb_psb1_2bt}, - {0x01680024342203a2, &upb_pom_2bt_max64b}, - {0x01680024251702aa, &upb_pom_2bt_max64b}, - {0x01600020261802b2, &upb_pom_2bt_max64b}, - {0x01680024170e01ba, &upb_pom_2bt_max64b}, + {0x01700024342203a2, &upb_pom_2bt_max64b}, + {0x01700024251702aa, &upb_pom_2bt_max64b}, + {0x01680020261802b2, &upb_pom_2bt_max64b}, + {0x01700024170e01ba, &upb_pom_2bt_max64b}, {0x00f000003f1902c2, &upb_prm_2bt_maxmaxb}, {0x015000003f0003ca, &upb_prs_2bt}, {0x001c00003f0001d0, &upb_psv4_2bt}, diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h index 9dcef4cc59e..b0c1fcec2ef 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h @@ -230,51 +230,63 @@ typedef enum { envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_NOT_SET = 0 } envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases; UPB_INLINE envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_case(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_clear_on_match(envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__common__matcher__v3__Matcher__OnMatch_msg_init, &field); } UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_clear_matcher(envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_common_matcher_v3_Matcher* envoy_config_common_matcher_v3_Matcher_OnMatch_matcher(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { const envoy_config_common_matcher_v3_Matcher* default_val = NULL; const envoy_config_common_matcher_v3_Matcher* ret; - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__matcher__v3__Matcher_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_OnMatch_has_matcher(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_clear_action(envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_OnMatch_action(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { const struct envoy_config_core_v3_TypedExtensionConfig* default_val = NULL; const struct envoy_config_core_v3_TypedExtensionConfig* ret; - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_OnMatch_has_action(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_clear_keep_matching(envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { + const upb_MiniTableField field = {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_OnMatch_keep_matching(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_set_matcher(envoy_config_common_matcher_v3_Matcher_OnMatch *msg, envoy_config_common_matcher_v3_Matcher* value) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__matcher__v3__Matcher_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -287,7 +299,7 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher* envoy_config_common_ma return sub; } UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_set_action(envoy_config_common_matcher_v3_Matcher_OnMatch *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -299,6 +311,10 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common } return sub; } +UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_set_keep_matching(envoy_config_common_matcher_v3_Matcher_OnMatch *msg, bool value) { + const upb_MiniTableField field = {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.config.common.matcher.v3.Matcher.MatcherList */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c index 1c58a4354b6..8474ac05110 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c @@ -52,23 +52,24 @@ static const upb_MiniTableSubInternal envoy_config_common_matcher_v3_Matcher_OnM {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_common_matcher_v3_Matcher_OnMatch__fields[2] = { - {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_common_matcher_v3_Matcher_OnMatch__fields[3] = { + {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__common__matcher__v3__Matcher__OnMatch_msg_init = { &envoy_config_common_matcher_v3_Matcher_OnMatch__submsgs[0], &envoy_config_common_matcher_v3_Matcher_OnMatch__fields[0], - UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, + 24, 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.common.matcher.v3.Matcher.OnMatch", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x001000080100000a, &upb_pom_1bt_max64b}, - {0x0010000802010012, &upb_pom_1bt_maxmaxb}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0010000c0100000a, &upb_pom_1bt_max64b}, + {0x0010000c02010012, &upb_pom_1bt_maxmaxb}, + {0x000800003f000018, &upb_psb1_1bt}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h new file mode 100644 index 00000000000..e7c4bef84ae --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h @@ -0,0 +1,495 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/common/mutation_rules/v3/mutation_rules.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPB_H_ +#define ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPB_H_ + +#include "upb/generated_code_support.h" + +#include "envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h" + +#include "envoy/config/core/v3/base.upb_minitable.h" +#include "envoy/type/matcher/v3/regex.upb_minitable.h" +#include "envoy/type/matcher/v3/string.upb_minitable.h" +#include "google/protobuf/wrappers.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" +#include "validate/validate.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct envoy_config_common_mutation_rules_v3_HeaderMutationRules { upb_Message UPB_PRIVATE(base); } envoy_config_common_mutation_rules_v3_HeaderMutationRules; +typedef struct envoy_config_common_mutation_rules_v3_HeaderMutation { upb_Message UPB_PRIVATE(base); } envoy_config_common_mutation_rules_v3_HeaderMutation; +typedef struct envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch { upb_Message UPB_PRIVATE(base); } envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch; +struct envoy_config_core_v3_HeaderValueOption; +struct envoy_type_matcher_v3_RegexMatcher; +struct envoy_type_matcher_v3_StringMatcher; +struct google_protobuf_BoolValue; + + + +/* envoy.config.common.mutation_rules.v3.HeaderMutationRules */ + +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutationRules* envoy_config_common_mutation_rules_v3_HeaderMutationRules_new(upb_Arena* arena) { + return (envoy_config_common_mutation_rules_v3_HeaderMutationRules*)_upb_Message_New(&envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init, arena); +} +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutationRules* envoy_config_common_mutation_rules_v3_HeaderMutationRules_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_common_mutation_rules_v3_HeaderMutationRules* ret = envoy_config_common_mutation_rules_v3_HeaderMutationRules_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutationRules* envoy_config_common_mutation_rules_v3_HeaderMutationRules_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_common_mutation_rules_v3_HeaderMutationRules* ret = envoy_config_common_mutation_rules_v3_HeaderMutationRules_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_common_mutation_rules_v3_HeaderMutationRules_serialize(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_common_mutation_rules_v3_HeaderMutationRules_serialize_ex(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_clear_allow_all_routing(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_allow_all_routing(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const struct google_protobuf_BoolValue* default_val = NULL; + const struct google_protobuf_BoolValue* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutationRules_has_allow_all_routing(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_clear_allow_envoy(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_allow_envoy(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const struct google_protobuf_BoolValue* default_val = NULL; + const struct google_protobuf_BoolValue* ret; + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutationRules_has_allow_envoy(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_clear_disallow_system(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_system(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const struct google_protobuf_BoolValue* default_val = NULL; + const struct google_protobuf_BoolValue* ret; + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutationRules_has_disallow_system(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_clear_disallow_all(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_all(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const struct google_protobuf_BoolValue* default_val = NULL; + const struct google_protobuf_BoolValue* ret; + const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutationRules_has_disallow_all(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_clear_allow_expression(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_config_common_mutation_rules_v3_HeaderMutationRules_allow_expression(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const struct envoy_type_matcher_v3_RegexMatcher* default_val = NULL; + const struct envoy_type_matcher_v3_RegexMatcher* ret; + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatcher_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutationRules_has_allow_expression(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_clear_disallow_expression(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(32, 56), 69, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_expression(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const struct envoy_type_matcher_v3_RegexMatcher* default_val = NULL; + const struct envoy_type_matcher_v3_RegexMatcher* ret; + const upb_MiniTableField field = {6, UPB_SIZE(32, 56), 69, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatcher_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutationRules_has_disallow_expression(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(32, 56), 69, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_clear_disallow_is_error(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(36, 64), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_is_error(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const struct google_protobuf_BoolValue* default_val = NULL; + const struct google_protobuf_BoolValue* ret; + const upb_MiniTableField field = {7, UPB_SIZE(36, 64), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutationRules_has_disallow_is_error(const envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(36, 64), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_allow_all_routing(envoy_config_common_mutation_rules_v3_HeaderMutationRules *msg, struct google_protobuf_BoolValue* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_mutable_allow_all_routing(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena) { + struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_common_mutation_rules_v3_HeaderMutationRules_allow_all_routing(msg); + if (sub == NULL) { + sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google__protobuf__BoolValue_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_allow_all_routing(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_allow_envoy(envoy_config_common_mutation_rules_v3_HeaderMutationRules *msg, struct google_protobuf_BoolValue* value) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_mutable_allow_envoy(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena) { + struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_common_mutation_rules_v3_HeaderMutationRules_allow_envoy(msg); + if (sub == NULL) { + sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google__protobuf__BoolValue_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_allow_envoy(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_system(envoy_config_common_mutation_rules_v3_HeaderMutationRules *msg, struct google_protobuf_BoolValue* value) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_mutable_disallow_system(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena) { + struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_system(msg); + if (sub == NULL) { + sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google__protobuf__BoolValue_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_system(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_all(envoy_config_common_mutation_rules_v3_HeaderMutationRules *msg, struct google_protobuf_BoolValue* value) { + const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_mutable_disallow_all(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena) { + struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_all(msg); + if (sub == NULL) { + sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google__protobuf__BoolValue_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_all(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_allow_expression(envoy_config_common_mutation_rules_v3_HeaderMutationRules *msg, struct envoy_type_matcher_v3_RegexMatcher* value) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatcher_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_common_mutation_rules_v3_HeaderMutationRules_mutable_allow_expression(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena) { + struct envoy_type_matcher_v3_RegexMatcher* sub = (struct envoy_type_matcher_v3_RegexMatcher*)envoy_config_common_mutation_rules_v3_HeaderMutationRules_allow_expression(msg); + if (sub == NULL) { + sub = (struct envoy_type_matcher_v3_RegexMatcher*)_upb_Message_New(&envoy__type__matcher__v3__RegexMatcher_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_allow_expression(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_expression(envoy_config_common_mutation_rules_v3_HeaderMutationRules *msg, struct envoy_type_matcher_v3_RegexMatcher* value) { + const upb_MiniTableField field = {6, UPB_SIZE(32, 56), 69, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatcher_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_common_mutation_rules_v3_HeaderMutationRules_mutable_disallow_expression(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena) { + struct envoy_type_matcher_v3_RegexMatcher* sub = (struct envoy_type_matcher_v3_RegexMatcher*)envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_expression(msg); + if (sub == NULL) { + sub = (struct envoy_type_matcher_v3_RegexMatcher*)_upb_Message_New(&envoy__type__matcher__v3__RegexMatcher_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_expression(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_is_error(envoy_config_common_mutation_rules_v3_HeaderMutationRules *msg, struct google_protobuf_BoolValue* value) { + const upb_MiniTableField field = {7, UPB_SIZE(36, 64), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_BoolValue* envoy_config_common_mutation_rules_v3_HeaderMutationRules_mutable_disallow_is_error(envoy_config_common_mutation_rules_v3_HeaderMutationRules* msg, upb_Arena* arena) { + struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_common_mutation_rules_v3_HeaderMutationRules_disallow_is_error(msg); + if (sub == NULL) { + sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google__protobuf__BoolValue_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutationRules_set_disallow_is_error(msg, sub); + } + return sub; +} + +/* envoy.config.common.mutation_rules.v3.HeaderMutation */ + +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutation* envoy_config_common_mutation_rules_v3_HeaderMutation_new(upb_Arena* arena) { + return (envoy_config_common_mutation_rules_v3_HeaderMutation*)_upb_Message_New(&envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, arena); +} +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutation* envoy_config_common_mutation_rules_v3_HeaderMutation_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_common_mutation_rules_v3_HeaderMutation* ret = envoy_config_common_mutation_rules_v3_HeaderMutation_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutation* envoy_config_common_mutation_rules_v3_HeaderMutation_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_common_mutation_rules_v3_HeaderMutation* ret = envoy_config_common_mutation_rules_v3_HeaderMutation_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_common_mutation_rules_v3_HeaderMutation_serialize(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_common_mutation_rules_v3_HeaderMutation_serialize_ex(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, options, arena, &ptr, len); + return ptr; +} +typedef enum { + envoy_config_common_mutation_rules_v3_HeaderMutation_action_remove = 1, + envoy_config_common_mutation_rules_v3_HeaderMutation_action_append = 2, + envoy_config_common_mutation_rules_v3_HeaderMutation_action_remove_on_match = 3, + envoy_config_common_mutation_rules_v3_HeaderMutation_action_NOT_SET = 0 +} envoy_config_common_mutation_rules_v3_HeaderMutation_action_oneofcases; +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutation_action_oneofcases envoy_config_common_mutation_rules_v3_HeaderMutation_action_case(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return (envoy_config_common_mutation_rules_v3_HeaderMutation_action_oneofcases)upb_Message_WhichOneofFieldNumber( + UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_clear_action(envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_clear_remove(envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_common_mutation_rules_v3_HeaderMutation_remove(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutation_has_remove(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_clear_append(envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* envoy_config_common_mutation_rules_v3_HeaderMutation_append(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const struct envoy_config_core_v3_HeaderValueOption* default_val = NULL; + const struct envoy_config_core_v3_HeaderValueOption* ret; + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutation_has_append(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_clear_remove_on_match(envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* envoy_config_common_mutation_rules_v3_HeaderMutation_remove_on_match(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* default_val = NULL; + const envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* ret; + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutation_has_remove_on_match(const envoy_config_common_mutation_rules_v3_HeaderMutation* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_set_remove(envoy_config_common_mutation_rules_v3_HeaderMutation *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_set_append(envoy_config_common_mutation_rules_v3_HeaderMutation *msg, struct envoy_config_core_v3_HeaderValueOption* value) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_common_mutation_rules_v3_HeaderMutation_mutable_append(envoy_config_common_mutation_rules_v3_HeaderMutation* msg, upb_Arena* arena) { + struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)envoy_config_common_mutation_rules_v3_HeaderMutation_append(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy__config__core__v3__HeaderValueOption_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutation_set_append(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_set_remove_on_match(envoy_config_common_mutation_rules_v3_HeaderMutation *msg, envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* value) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* envoy_config_common_mutation_rules_v3_HeaderMutation_mutable_remove_on_match(envoy_config_common_mutation_rules_v3_HeaderMutation* msg, upb_Arena* arena) { + struct envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* sub = (struct envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch*)envoy_config_common_mutation_rules_v3_HeaderMutation_remove_on_match(msg); + if (sub == NULL) { + sub = (struct envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch*)_upb_Message_New(&envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutation_set_remove_on_match(msg, sub); + } + return sub; +} + +/* envoy.config.common.mutation_rules.v3.HeaderMutation.RemoveOnMatch */ + +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_new(upb_Arena* arena) { + return (envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch*)_upb_Message_New(&envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init, arena); +} +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* ret = envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* ret = envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_serialize(const envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_serialize_ex(const envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_clear_key_matcher(envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_key_matcher(const envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* msg) { + const struct envoy_type_matcher_v3_StringMatcher* default_val = NULL; + const struct envoy_type_matcher_v3_StringMatcher* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_has_key_matcher(const envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_set_key_matcher(envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch *msg, struct envoy_type_matcher_v3_StringMatcher* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_mutable_key_matcher(envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch* msg, upb_Arena* arena) { + struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_key_matcher(msg); + if (sub == NULL) { + sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy__type__matcher__v3__StringMatcher_msg_init, arena); + if (sub) envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_set_key_matcher(msg, sub); + } + return sub; +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPB_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c new file mode 100644 index 00000000000..ac76ac80e4d --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c @@ -0,0 +1,114 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/common/mutation_rules/v3/mutation_rules.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#include +#include "upb/generated_code_support.h" +#include "envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h" +#include "envoy/config/core/v3/base.upb_minitable.h" +#include "envoy/type/matcher/v3/regex.upb_minitable.h" +#include "envoy/type/matcher/v3/string.upb_minitable.h" +#include "google/protobuf/wrappers.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" +#include "validate/validate.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); +static const upb_MiniTableSubInternal envoy_config_common_mutation_rules_v3_HeaderMutationRules__submsgs[7] = { + {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__RegexMatcher_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__RegexMatcher_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_config_common_mutation_rules_v3_HeaderMutationRules__fields[7] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(28, 48), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(32, 56), 69, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(36, 64), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init = { + &envoy_config_common_mutation_rules_v3_HeaderMutationRules__submsgs[0], + &envoy_config_common_mutation_rules_v3_HeaderMutationRules__fields[0], + UPB_SIZE(40, 72), 7, kUpb_ExtMode_NonExtendable, 7, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.common.mutation_rules.v3.HeaderMutationRules", +#endif +}; + +const upb_MiniTable* envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init_ptr = &envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init; +static const upb_MiniTableSubInternal envoy_config_common_mutation_rules_v3_HeaderMutation__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__HeaderValueOption_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_config_common_mutation_rules_v3_HeaderMutation__fields[3] = { + {1, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init = { + &envoy_config_common_mutation_rules_v3_HeaderMutation__submsgs[0], + &envoy_config_common_mutation_rules_v3_HeaderMutation__fields[0], + UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.common.mutation_rules.v3.HeaderMutation", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000080100000a, &upb_pos_1bt}, + {0x0010000802000012, &upb_pom_1bt_maxmaxb}, + {0x001000080301001a, &upb_pom_1bt_max64b}, + }) +}; + +const upb_MiniTable* envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init_ptr = &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init; +static const upb_MiniTableSubInternal envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__StringMatcher_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch__fields[1] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init = { + &envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch__submsgs[0], + &envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.common.mutation_rules.v3.HeaderMutation.RemoveOnMatch", +#endif +}; + +const upb_MiniTable* envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init_ptr = &envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init; +static const upb_MiniTable *messages_layout[3] = { + &envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init, + &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, + &envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init, +}; + +const upb_MiniTableFile envoy_config_common_mutation_rules_v3_mutation_rules_proto_upb_file_layout = { + messages_layout, + NULL, + NULL, + 3, + 0, + 0, +}; + +#include "upb/port/undef.inc" + diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h new file mode 100644 index 00000000000..5ad3ad844d7 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h @@ -0,0 +1,36 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/common/mutation_rules/v3/mutation_rules.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPB_MINITABLE_H_ +#define ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPB_MINITABLE_H_ + +#include "upb/generated_code_support.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const upb_MiniTable envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init; +extern const upb_MiniTable* envoy__config__common__mutation_0rules__v3__HeaderMutationRules_msg_init_ptr; +extern const upb_MiniTable envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init; +extern const upb_MiniTable* envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init_ptr; +extern const upb_MiniTable envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init; +extern const upb_MiniTable* envoy__config__common__mutation_0rules__v3__HeaderMutation__RemoveOnMatch_msg_init_ptr; + +extern const upb_MiniTableFile envoy_config_common_mutation_rules_v3_mutation_rules_proto_upb_file_layout; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPB_MINITABLE_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h index f35923aef8c..e83ea902e3f 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h @@ -248,12 +248,12 @@ typedef enum { envoy_config_core_v3_SocketAddress_port_specifier_NOT_SET = 0 } envoy_config_core_v3_SocketAddress_port_specifier_oneofcases; UPB_INLINE envoy_config_core_v3_SocketAddress_port_specifier_oneofcases envoy_config_core_v3_SocketAddress_port_specifier_case(const envoy_config_core_v3_SocketAddress* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(36, 56), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(44, 72), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; return (envoy_config_core_v3_SocketAddress_port_specifier_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_port_specifier(envoy_config_core_v3_SocketAddress* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(36, 56), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(44, 72), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__core__v3__SocketAddress_msg_init, &field); } UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_protocol(envoy_config_core_v3_SocketAddress* msg) { @@ -281,35 +281,35 @@ UPB_INLINE upb_StringView envoy_config_core_v3_SocketAddress_address(const envoy return ret; } UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_port_value(envoy_config_core_v3_SocketAddress* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(36, 56), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(44, 72), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE uint32_t envoy_config_core_v3_SocketAddress_port_value(const envoy_config_core_v3_SocketAddress* msg) { uint32_t default_val = (uint32_t)0u; uint32_t ret; - const upb_MiniTableField field = {3, UPB_SIZE(36, 56), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(44, 72), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_core_v3_SocketAddress_has_port_value(const envoy_config_core_v3_SocketAddress* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(36, 56), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(44, 72), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_named_port(envoy_config_core_v3_SocketAddress* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(36, 56), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(44, 72), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_core_v3_SocketAddress_named_port(const envoy_config_core_v3_SocketAddress* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {4, UPB_SIZE(36, 56), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(44, 72), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_core_v3_SocketAddress_has_named_port(const envoy_config_core_v3_SocketAddress* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(36, 56), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(44, 72), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_resolver_name(envoy_config_core_v3_SocketAddress* msg) { @@ -336,6 +336,18 @@ UPB_INLINE bool envoy_config_core_v3_SocketAddress_ipv4_compat(const envoy_confi &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_network_namespace_filepath(envoy_config_core_v3_SocketAddress* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(36, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_core_v3_SocketAddress_network_namespace_filepath(const envoy_config_core_v3_SocketAddress* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {7, UPB_SIZE(36, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_core_v3_SocketAddress_set_protocol(envoy_config_core_v3_SocketAddress *msg, int32_t value) { const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; @@ -346,11 +358,11 @@ UPB_INLINE void envoy_config_core_v3_SocketAddress_set_address(envoy_config_core upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_SocketAddress_set_port_value(envoy_config_core_v3_SocketAddress *msg, uint32_t value) { - const upb_MiniTableField field = {3, UPB_SIZE(36, 56), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(44, 72), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_SocketAddress_set_named_port(envoy_config_core_v3_SocketAddress *msg, upb_StringView value) { - const upb_MiniTableField field = {4, UPB_SIZE(36, 56), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(44, 72), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_SocketAddress_set_resolver_name(envoy_config_core_v3_SocketAddress *msg, upb_StringView value) { @@ -361,6 +373,10 @@ UPB_INLINE void envoy_config_core_v3_SocketAddress_set_ipv4_compat(envoy_config_ const upb_MiniTableField field = {6, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_core_v3_SocketAddress_set_network_namespace_filepath(envoy_config_core_v3_SocketAddress *msg, upb_StringView value) { + const upb_MiniTableField field = {7, UPB_SIZE(36, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.config.core.v3.TcpKeepalive */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c index c097710f7f8..3dfa710b5d0 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c @@ -63,19 +63,20 @@ const upb_MiniTable envoy__config__core__v3__EnvoyInternalAddress_msg_init = { }; const upb_MiniTable* envoy__config__core__v3__EnvoyInternalAddress_msg_init_ptr = &envoy__config__core__v3__EnvoyInternalAddress_msg_init; -static const upb_MiniTableField envoy_config_core_v3_SocketAddress__fields[6] = { +static const upb_MiniTableField envoy_config_core_v3_SocketAddress__fields[7] = { {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(20, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(36, 56), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(36, 56), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(44, 72), -17, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(44, 72), -17, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(28, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {6, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(36, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__core__v3__SocketAddress_msg_init = { NULL, &envoy_config_core_v3_SocketAddress__fields[0], - UPB_SIZE(48, 72), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(56, 88), 7, kUpb_ExtMode_NonExtendable, 7, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.core.v3.SocketAddress", #endif @@ -83,11 +84,11 @@ const upb_MiniTable envoy__config__core__v3__SocketAddress_msg_init = { {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000c00003f000008, &upb_psv4_1bt}, {0x001800003f000012, &upb_pss_1bt}, - {0x0038001003000018, &upb_pov4_1bt}, - {0x0038001004000022, &upb_pos_1bt}, + {0x0048001003000018, &upb_pov4_1bt}, + {0x0048001004000022, &upb_pos_1bt}, {0x002800003f00002a, &upb_pss_1bt}, {0x000800003f000030, &upb_psb1_1bt}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x003800003f00003a, &upb_pss_1bt}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h new file mode 100644 index 00000000000..ead115fd1a0 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h @@ -0,0 +1,121 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/core/v3/cel.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPB_H_ +#define ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPB_H_ + +#include "upb/generated_code_support.h" + +#include "envoy/config/core/v3/cel.upb_minitable.h" + +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct envoy_config_core_v3_CelExpressionConfig { upb_Message UPB_PRIVATE(base); } envoy_config_core_v3_CelExpressionConfig; + + + +/* envoy.config.core.v3.CelExpressionConfig */ + +UPB_INLINE envoy_config_core_v3_CelExpressionConfig* envoy_config_core_v3_CelExpressionConfig_new(upb_Arena* arena) { + return (envoy_config_core_v3_CelExpressionConfig*)_upb_Message_New(&envoy__config__core__v3__CelExpressionConfig_msg_init, arena); +} +UPB_INLINE envoy_config_core_v3_CelExpressionConfig* envoy_config_core_v3_CelExpressionConfig_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_core_v3_CelExpressionConfig* ret = envoy_config_core_v3_CelExpressionConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__core__v3__CelExpressionConfig_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_core_v3_CelExpressionConfig* envoy_config_core_v3_CelExpressionConfig_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_core_v3_CelExpressionConfig* ret = envoy_config_core_v3_CelExpressionConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__core__v3__CelExpressionConfig_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_core_v3_CelExpressionConfig_serialize(const envoy_config_core_v3_CelExpressionConfig* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__core__v3__CelExpressionConfig_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_core_v3_CelExpressionConfig_serialize_ex(const envoy_config_core_v3_CelExpressionConfig* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__core__v3__CelExpressionConfig_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_config_core_v3_CelExpressionConfig_clear_enable_string_conversion(envoy_config_core_v3_CelExpressionConfig* msg) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool envoy_config_core_v3_CelExpressionConfig_enable_string_conversion(const envoy_config_core_v3_CelExpressionConfig* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_core_v3_CelExpressionConfig_clear_enable_string_concat(envoy_config_core_v3_CelExpressionConfig* msg) { + const upb_MiniTableField field = {2, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool envoy_config_core_v3_CelExpressionConfig_enable_string_concat(const envoy_config_core_v3_CelExpressionConfig* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {2, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_core_v3_CelExpressionConfig_clear_enable_string_functions(envoy_config_core_v3_CelExpressionConfig* msg) { + const upb_MiniTableField field = {3, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool envoy_config_core_v3_CelExpressionConfig_enable_string_functions(const envoy_config_core_v3_CelExpressionConfig* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {3, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void envoy_config_core_v3_CelExpressionConfig_set_enable_string_conversion(envoy_config_core_v3_CelExpressionConfig *msg, bool value) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_core_v3_CelExpressionConfig_set_enable_string_concat(envoy_config_core_v3_CelExpressionConfig *msg, bool value) { + const upb_MiniTableField field = {2, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_core_v3_CelExpressionConfig_set_enable_string_functions(envoy_config_core_v3_CelExpressionConfig *msg, bool value) { + const upb_MiniTableField field = {3, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPB_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c new file mode 100644 index 00000000000..630451428aa --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c @@ -0,0 +1,54 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/core/v3/cel.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#include +#include "upb/generated_code_support.h" +#include "envoy/config/core/v3/cel.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); +static const upb_MiniTableField envoy_config_core_v3_CelExpressionConfig__fields[3] = { + {1, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {2, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {3, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__core__v3__CelExpressionConfig_msg_init = { + NULL, + &envoy_config_core_v3_CelExpressionConfig__fields[0], + 16, 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.core.v3.CelExpressionConfig", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f000008, &upb_psb1_1bt}, + {0x000900003f000010, &upb_psb1_1bt}, + {0x000a00003f000018, &upb_psb1_1bt}, + }) +}; + +const upb_MiniTable* envoy__config__core__v3__CelExpressionConfig_msg_init_ptr = &envoy__config__core__v3__CelExpressionConfig_msg_init; +static const upb_MiniTable *messages_layout[1] = { + &envoy__config__core__v3__CelExpressionConfig_msg_init, +}; + +const upb_MiniTableFile envoy_config_core_v3_cel_proto_upb_file_layout = { + messages_layout, + NULL, + NULL, + 1, + 0, + 0, +}; + +#include "upb/port/undef.inc" + diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h new file mode 100644 index 00000000000..b7af053679e --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h @@ -0,0 +1,32 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/core/v3/cel.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPB_MINITABLE_H_ +#define ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPB_MINITABLE_H_ + +#include "upb/generated_code_support.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const upb_MiniTable envoy__config__core__v3__CelExpressionConfig_msg_init; +extern const upb_MiniTable* envoy__config__core__v3__CelExpressionConfig_msg_init_ptr; + +extern const upb_MiniTableFile envoy_config_core_v3_cel_proto_upb_file_layout; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPB_MINITABLE_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h index 3651d701e3e..a46fbdac7c4 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h @@ -477,13 +477,13 @@ UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_serialize_ex(const return ptr; } UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_target_uri(envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_target_uri(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -541,25 +541,25 @@ UPB_INLINE upb_Array* _envoy_config_core_v3_GrpcService_GoogleGrpc_call_credenti return arr; } UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_stat_prefix(envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_stat_prefix(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {4, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_credentials_factory_name(envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { - const upb_MiniTableField field = {5, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(56, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_credentials_factory_name(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {5, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(56, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -615,9 +615,79 @@ UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_channel_args(con const upb_MiniTableField field = {8, UPB_SIZE(28, 96), 67, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_channel_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Any* const* envoy_config_core_v3_GrpcService_GoogleGrpc_channel_credentials_plugin(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct google_protobuf_Any* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_core_v3_GrpcService_GoogleGrpc_channel_credentials_plugin_upb_array(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_core_v3_GrpcService_GoogleGrpc_channel_credentials_plugin_mutable_upb_array(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_call_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Any* const* envoy_config_core_v3_GrpcService_GoogleGrpc_call_credentials_plugin(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct google_protobuf_Any* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_core_v3_GrpcService_GoogleGrpc_call_credentials_plugin_upb_array(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_core_v3_GrpcService_GoogleGrpc_call_credentials_plugin_mutable_upb_array(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_target_uri(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_channel_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* value) { @@ -666,11 +736,11 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* e return sub; } UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_stat_prefix(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_StringView value) { - const upb_MiniTableField field = {4, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_credentials_factory_name(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_StringView value) { - const upb_MiniTableField field = {5, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(56, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_config(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, struct google_protobuf_Struct* value) { @@ -712,6 +782,70 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* envoy } return sub; } +UPB_INLINE struct google_protobuf_Any** envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_channel_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size) { + upb_MiniTableField field = {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct google_protobuf_Any**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct google_protobuf_Any** envoy_config_core_v3_GrpcService_GoogleGrpc_resize_channel_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct google_protobuf_Any**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_GrpcService_GoogleGrpc_add_channel_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena) { + upb_MiniTableField field = {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google__protobuf__Any_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} +UPB_INLINE struct google_protobuf_Any** envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_call_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* size) { + upb_MiniTableField field = {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct google_protobuf_Any**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct google_protobuf_Any** envoy_config_core_v3_GrpcService_GoogleGrpc_resize_call_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct google_protobuf_Any**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_GrpcService_GoogleGrpc_add_call_credentials_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena) { + upb_MiniTableField field = {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google__protobuf__Any_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} /* envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c index 0f7a3e1a2a8..44436d261f9 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c @@ -93,29 +93,33 @@ const upb_MiniTable envoy__config__core__v3__GrpcService__EnvoyGrpc_msg_init = { }; const upb_MiniTable* envoy__config__core__v3__GrpcService__EnvoyGrpc_msg_init_ptr = &envoy__config__core__v3__GrpcService__EnvoyGrpc_msg_init; -static const upb_MiniTableSubInternal envoy_config_core_v3_GrpcService_GoogleGrpc__submsgs[5] = { +static const upb_MiniTableSubInternal envoy_config_core_v3_GrpcService_GoogleGrpc__submsgs[7] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__GrpcService__GoogleGrpc__ChannelCredentials_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__GrpcService__GoogleGrpc__CallCredentials_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Struct_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__GrpcService__GoogleGrpc__ChannelArgs_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__Any_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__Any_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_core_v3_GrpcService_GoogleGrpc__fields[8] = { - {1, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_core_v3_GrpcService_GoogleGrpc__fields[10] = { + {1, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(16, 72), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(40, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {5, 48, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(56, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {6, UPB_SIZE(20, 80), 65, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {7, UPB_SIZE(24, 88), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {8, UPB_SIZE(28, 96), 67, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(32, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {10, UPB_SIZE(36, 112), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__core__v3__GrpcService__GoogleGrpc_msg_init = { &envoy_config_core_v3_GrpcService_GoogleGrpc__submsgs[0], &envoy_config_core_v3_GrpcService_GoogleGrpc__fields[0], - UPB_SIZE(56, 104), 8, kUpb_ExtMode_NonExtendable, 8, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(64, 120), 10, kUpb_ExtMode_NonExtendable, 10, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.core.v3.GrpcService.GoogleGrpc", #endif @@ -128,6 +132,14 @@ const upb_MiniTable envoy__config__core__v3__GrpcService__GoogleGrpc_msg_init = {0x003000003f00002a, &upb_pss_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x006800003f05004a, &upb_prm_1bt_maxmaxb}, + {0x007000003f060052, &upb_prm_1bt_maxmaxb}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h index 59dd778f7e2..b115c675014 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h @@ -14,6 +14,7 @@ #include "envoy/config/core/v3/protocol.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" +#include "envoy/type/matcher/v3/string.upb_minitable.h" #include "envoy/type/v3/percent.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" @@ -47,6 +48,7 @@ typedef struct envoy_config_core_v3_GrpcProtocolOptions { upb_Message UPB_PRIVAT typedef struct envoy_config_core_v3_Http3ProtocolOptions { upb_Message UPB_PRIVATE(base); } envoy_config_core_v3_Http3ProtocolOptions; typedef struct envoy_config_core_v3_SchemeHeaderTransformation { upb_Message UPB_PRIVATE(base); } envoy_config_core_v3_SchemeHeaderTransformation; struct envoy_config_core_v3_TypedExtensionConfig; +struct envoy_type_matcher_v3_StringMatcher; struct envoy_type_v3_Percent; struct google_protobuf_BoolValue; struct google_protobuf_Duration; @@ -1174,13 +1176,13 @@ UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_accept_http_10(const e return ret; } UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_default_host_for_http_10(envoy_config_core_v3_Http1ProtocolOptions* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(36, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_core_v3_Http1ProtocolOptions_default_host_for_http_10(const envoy_config_core_v3_Http1ProtocolOptions* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {3, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(36, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -1284,6 +1286,41 @@ UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_allow_custom_methods(c &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_ignore_http_11_upgrade(envoy_config_core_v3_Http1ProtocolOptions* msg) { + const upb_MiniTableField field = {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* const* envoy_config_core_v3_Http1ProtocolOptions_ignore_http_11_upgrade(const envoy_config_core_v3_Http1ProtocolOptions* msg, size_t* size) { + const upb_MiniTableField field = {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct envoy_type_matcher_v3_StringMatcher* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_core_v3_Http1ProtocolOptions_ignore_http_11_upgrade_upb_array(const envoy_config_core_v3_Http1ProtocolOptions* msg, size_t* size) { + const upb_MiniTableField field = {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_core_v3_Http1ProtocolOptions_ignore_http_11_upgrade_mutable_upb_array(envoy_config_core_v3_Http1ProtocolOptions* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_allow_absolute_url(envoy_config_core_v3_Http1ProtocolOptions *msg, struct google_protobuf_BoolValue* value) { const upb_MiniTableField field = {1, UPB_SIZE(16, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -1303,7 +1340,7 @@ UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_accept_http_10(env upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_default_host_for_http_10(envoy_config_core_v3_Http1ProtocolOptions *msg, upb_StringView value) { - const upb_MiniTableField field = {3, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(36, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_header_key_format(envoy_config_core_v3_Http1ProtocolOptions *msg, envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* value) { @@ -1361,6 +1398,38 @@ UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_allow_custom_metho const upb_MiniTableField field = {10, 13, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_core_v3_Http1ProtocolOptions_mutable_ignore_http_11_upgrade(envoy_config_core_v3_Http1ProtocolOptions* msg, size_t* size) { + upb_MiniTableField field = {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct envoy_type_matcher_v3_StringMatcher**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_core_v3_Http1ProtocolOptions_resize_ignore_http_11_upgrade(envoy_config_core_v3_Http1ProtocolOptions* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct envoy_type_matcher_v3_StringMatcher**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_core_v3_Http1ProtocolOptions_add_ignore_http_11_upgrade(envoy_config_core_v3_Http1ProtocolOptions* msg, upb_Arena* arena) { + upb_MiniTableField field = {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__StringMatcher_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy__type__matcher__v3__StringMatcher_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} /* envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat */ @@ -2416,37 +2485,37 @@ UPB_INLINE char* envoy_config_core_v3_Http3ProtocolOptions_serialize_ex(const en return ptr; } UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_quic_protocol_options(envoy_config_core_v3_Http3ProtocolOptions* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_core_v3_QuicProtocolOptions* envoy_config_core_v3_Http3ProtocolOptions_quic_protocol_options(const envoy_config_core_v3_Http3ProtocolOptions* msg) { const envoy_config_core_v3_QuicProtocolOptions* default_val = NULL; const envoy_config_core_v3_QuicProtocolOptions* ret; - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__QuicProtocolOptions_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_has_quic_protocol_options(const envoy_config_core_v3_Http3ProtocolOptions* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http3ProtocolOptions* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_Http3ProtocolOptions_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http3ProtocolOptions* msg) { const struct google_protobuf_BoolValue* default_val = NULL; const struct google_protobuf_BoolValue* ret; - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_has_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http3ProtocolOptions* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_allow_extended_connect(envoy_config_core_v3_Http3ProtocolOptions* msg) { @@ -2473,9 +2542,33 @@ UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_allow_metadata(const e &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_disable_qpack(envoy_config_core_v3_Http3ProtocolOptions* msg) { + const upb_MiniTableField field = {7, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_disable_qpack(const envoy_config_core_v3_Http3ProtocolOptions* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {7, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_disable_connection_flow_control_for_streams(envoy_config_core_v3_Http3ProtocolOptions* msg) { + const upb_MiniTableField field = {8, 12, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_disable_connection_flow_control_for_streams(const envoy_config_core_v3_Http3ProtocolOptions* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {8, 12, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_set_quic_protocol_options(envoy_config_core_v3_Http3ProtocolOptions *msg, envoy_config_core_v3_QuicProtocolOptions* value) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__QuicProtocolOptions_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -2488,7 +2581,7 @@ UPB_INLINE struct envoy_config_core_v3_QuicProtocolOptions* envoy_config_core_v3 return sub; } UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_set_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http3ProtocolOptions *msg, struct google_protobuf_BoolValue* value) { - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -2508,6 +2601,14 @@ UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_set_allow_metadata(env const upb_MiniTableField field = {6, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_set_disable_qpack(envoy_config_core_v3_Http3ProtocolOptions *msg, bool value) { + const upb_MiniTableField field = {7, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_set_disable_connection_flow_control_for_streams(envoy_config_core_v3_Http3ProtocolOptions *msg, bool value) { + const upb_MiniTableField field = {8, 12, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.config.core.v3.SchemeHeaderTransformation */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c index 0a5a392efc9..bfed7243858 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c @@ -10,6 +10,7 @@ #include "upb/generated_code_support.h" #include "envoy/config/core/v3/protocol.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" +#include "envoy/type/matcher/v3/string.upb_minitable.h" #include "envoy/type/v3/percent.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" @@ -211,17 +212,18 @@ const upb_MiniTable envoy__config__core__v3__HttpProtocolOptions_msg_init = { }; const upb_MiniTable* envoy__config__core__v3__HttpProtocolOptions_msg_init_ptr = &envoy__config__core__v3__HttpProtocolOptions_msg_init; -static const upb_MiniTableSubInternal envoy_config_core_v3_Http1ProtocolOptions__submsgs[4] = { +static const upb_MiniTableSubInternal envoy_config_core_v3_Http1ProtocolOptions__submsgs[5] = { {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__Http1ProtocolOptions__HeaderKeyFormat_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__StringMatcher_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_core_v3_Http1ProtocolOptions__fields[10] = { +static const upb_MiniTableField envoy_config_core_v3_Http1ProtocolOptions__fields[11] = { {1, UPB_SIZE(16, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(36, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(20, 40), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {6, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, @@ -229,12 +231,13 @@ static const upb_MiniTableField envoy_config_core_v3_Http1ProtocolOptions__field {8, 12, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {9, UPB_SIZE(28, 56), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {10, 13, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {11, UPB_SIZE(32, 64), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__core__v3__Http1ProtocolOptions_msg_init = { &envoy_config_core_v3_Http1ProtocolOptions__submsgs[0], &envoy_config_core_v3_Http1ProtocolOptions__fields[0], - UPB_SIZE(40, 64), 10, kUpb_ExtMode_NonExtendable, 10, UPB_FASTTABLE_MASK(120), 0, + UPB_SIZE(48, 72), 11, kUpb_ExtMode_NonExtendable, 11, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.core.v3.Http1ProtocolOptions", #endif @@ -250,7 +253,7 @@ const upb_MiniTable envoy__config__core__v3__Http1ProtocolOptions_msg_init = { {0x000c00003f000040, &upb_psb1_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000d00003f000050, &upb_psb1_1bt}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x004000003f04005a, &upb_prm_1bt_maxmaxb}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, @@ -439,17 +442,19 @@ static const upb_MiniTableSubInternal envoy_config_core_v3_Http3ProtocolOptions_ {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_core_v3_Http3ProtocolOptions__fields[4] = { - {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_core_v3_Http3ProtocolOptions__fields[6] = { + {1, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {6, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {7, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {8, 12, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__core__v3__Http3ProtocolOptions_msg_init = { &envoy_config_core_v3_Http3ProtocolOptions__submsgs[0], &envoy_config_core_v3_Http3ProtocolOptions__fields[0], - UPB_SIZE(24, 32), 4, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(24, 32), 6, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.core.v3.Http3ProtocolOptions", #endif @@ -461,6 +466,14 @@ const upb_MiniTable envoy__config__core__v3__Http3ProtocolOptions_msg_init = { {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000900003f000028, &upb_psb1_1bt}, {0x000a00003f000030, &upb_psb1_1bt}, + {0x000b00003f000038, &upb_psb1_1bt}, + {0x000c00003f000040, &upb_psb1_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h index 433b249b965..3c048c99891 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h @@ -13,6 +13,7 @@ #include "envoy/config/core/v3/proxy_protocol.upb_minitable.h" +#include "envoy/config/core/v3/substitution_format_string.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -24,7 +25,10 @@ extern "C" { #endif typedef struct envoy_config_core_v3_ProxyProtocolPassThroughTLVs { upb_Message UPB_PRIVATE(base); } envoy_config_core_v3_ProxyProtocolPassThroughTLVs; +typedef struct envoy_config_core_v3_TlvEntry { upb_Message UPB_PRIVATE(base); } envoy_config_core_v3_TlvEntry; typedef struct envoy_config_core_v3_ProxyProtocolConfig { upb_Message UPB_PRIVATE(base); } envoy_config_core_v3_ProxyProtocolConfig; +typedef struct envoy_config_core_v3_PerHostConfig { upb_Message UPB_PRIVATE(base); } envoy_config_core_v3_PerHostConfig; +struct envoy_config_core_v3_SubstitutionFormatString; typedef enum { envoy_config_core_v3_ProxyProtocolConfig_V1 = 0, @@ -152,6 +156,106 @@ UPB_INLINE bool envoy_config_core_v3_ProxyProtocolPassThroughTLVs_add_tlv_type(e return true; } +/* envoy.config.core.v3.TlvEntry */ + +UPB_INLINE envoy_config_core_v3_TlvEntry* envoy_config_core_v3_TlvEntry_new(upb_Arena* arena) { + return (envoy_config_core_v3_TlvEntry*)_upb_Message_New(&envoy__config__core__v3__TlvEntry_msg_init, arena); +} +UPB_INLINE envoy_config_core_v3_TlvEntry* envoy_config_core_v3_TlvEntry_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_core_v3_TlvEntry* ret = envoy_config_core_v3_TlvEntry_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__core__v3__TlvEntry_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_core_v3_TlvEntry* envoy_config_core_v3_TlvEntry_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_core_v3_TlvEntry* ret = envoy_config_core_v3_TlvEntry_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__core__v3__TlvEntry_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_core_v3_TlvEntry_serialize(const envoy_config_core_v3_TlvEntry* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__core__v3__TlvEntry_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_core_v3_TlvEntry_serialize_ex(const envoy_config_core_v3_TlvEntry* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__core__v3__TlvEntry_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_config_core_v3_TlvEntry_clear_type(envoy_config_core_v3_TlvEntry* msg) { + const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE uint32_t envoy_config_core_v3_TlvEntry_type(const envoy_config_core_v3_TlvEntry* msg) { + uint32_t default_val = (uint32_t)0u; + uint32_t ret; + const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_core_v3_TlvEntry_clear_value(envoy_config_core_v3_TlvEntry* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_core_v3_TlvEntry_value(const envoy_config_core_v3_TlvEntry* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_core_v3_TlvEntry_clear_format_string(envoy_config_core_v3_TlvEntry* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_SubstitutionFormatString* envoy_config_core_v3_TlvEntry_format_string(const envoy_config_core_v3_TlvEntry* msg) { + const struct envoy_config_core_v3_SubstitutionFormatString* default_val = NULL; + const struct envoy_config_core_v3_SubstitutionFormatString* ret; + const upb_MiniTableField field = {3, UPB_SIZE(16, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__SubstitutionFormatString_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_core_v3_TlvEntry_has_format_string(const envoy_config_core_v3_TlvEntry* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_config_core_v3_TlvEntry_set_type(envoy_config_core_v3_TlvEntry *msg, uint32_t value) { + const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_core_v3_TlvEntry_set_value(envoy_config_core_v3_TlvEntry *msg, upb_StringView value) { + const upb_MiniTableField field = {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_core_v3_TlvEntry_set_format_string(envoy_config_core_v3_TlvEntry *msg, struct envoy_config_core_v3_SubstitutionFormatString* value) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__SubstitutionFormatString_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_SubstitutionFormatString* envoy_config_core_v3_TlvEntry_mutable_format_string(envoy_config_core_v3_TlvEntry* msg, upb_Arena* arena) { + struct envoy_config_core_v3_SubstitutionFormatString* sub = (struct envoy_config_core_v3_SubstitutionFormatString*)envoy_config_core_v3_TlvEntry_format_string(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_SubstitutionFormatString*)_upb_Message_New(&envoy__config__core__v3__SubstitutionFormatString_msg_init, arena); + if (sub) envoy_config_core_v3_TlvEntry_set_format_string(msg, sub); + } + return sub; +} + /* envoy.config.core.v3.ProxyProtocolConfig */ UPB_INLINE envoy_config_core_v3_ProxyProtocolConfig* envoy_config_core_v3_ProxyProtocolConfig_new(upb_Arena* arena) { @@ -217,6 +321,41 @@ UPB_INLINE bool envoy_config_core_v3_ProxyProtocolConfig_has_pass_through_tlvs(c const upb_MiniTableField field = {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_core_v3_ProxyProtocolConfig_clear_added_tlvs(envoy_config_core_v3_ProxyProtocolConfig* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_config_core_v3_TlvEntry* const* envoy_config_core_v3_ProxyProtocolConfig_added_tlvs(const envoy_config_core_v3_ProxyProtocolConfig* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const envoy_config_core_v3_TlvEntry* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_core_v3_ProxyProtocolConfig_added_tlvs_upb_array(const envoy_config_core_v3_ProxyProtocolConfig* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_core_v3_ProxyProtocolConfig_added_tlvs_mutable_upb_array(envoy_config_core_v3_ProxyProtocolConfig* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_config_core_v3_ProxyProtocolConfig_set_version(envoy_config_core_v3_ProxyProtocolConfig *msg, int32_t value) { const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; @@ -235,6 +374,143 @@ UPB_INLINE struct envoy_config_core_v3_ProxyProtocolPassThroughTLVs* envoy_confi } return sub; } +UPB_INLINE envoy_config_core_v3_TlvEntry** envoy_config_core_v3_ProxyProtocolConfig_mutable_added_tlvs(envoy_config_core_v3_ProxyProtocolConfig* msg, size_t* size) { + upb_MiniTableField field = {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (envoy_config_core_v3_TlvEntry**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE envoy_config_core_v3_TlvEntry** envoy_config_core_v3_ProxyProtocolConfig_resize_added_tlvs(envoy_config_core_v3_ProxyProtocolConfig* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (envoy_config_core_v3_TlvEntry**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_config_core_v3_TlvEntry* envoy_config_core_v3_ProxyProtocolConfig_add_added_tlvs(envoy_config_core_v3_ProxyProtocolConfig* msg, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_config_core_v3_TlvEntry* sub = (struct envoy_config_core_v3_TlvEntry*)_upb_Message_New(&envoy__config__core__v3__TlvEntry_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} + +/* envoy.config.core.v3.PerHostConfig */ + +UPB_INLINE envoy_config_core_v3_PerHostConfig* envoy_config_core_v3_PerHostConfig_new(upb_Arena* arena) { + return (envoy_config_core_v3_PerHostConfig*)_upb_Message_New(&envoy__config__core__v3__PerHostConfig_msg_init, arena); +} +UPB_INLINE envoy_config_core_v3_PerHostConfig* envoy_config_core_v3_PerHostConfig_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_core_v3_PerHostConfig* ret = envoy_config_core_v3_PerHostConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__core__v3__PerHostConfig_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_core_v3_PerHostConfig* envoy_config_core_v3_PerHostConfig_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_core_v3_PerHostConfig* ret = envoy_config_core_v3_PerHostConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__core__v3__PerHostConfig_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_core_v3_PerHostConfig_serialize(const envoy_config_core_v3_PerHostConfig* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__core__v3__PerHostConfig_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_core_v3_PerHostConfig_serialize_ex(const envoy_config_core_v3_PerHostConfig* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__core__v3__PerHostConfig_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_config_core_v3_PerHostConfig_clear_added_tlvs(envoy_config_core_v3_PerHostConfig* msg) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_config_core_v3_TlvEntry* const* envoy_config_core_v3_PerHostConfig_added_tlvs(const envoy_config_core_v3_PerHostConfig* msg, size_t* size) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const envoy_config_core_v3_TlvEntry* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_core_v3_PerHostConfig_added_tlvs_upb_array(const envoy_config_core_v3_PerHostConfig* msg, size_t* size) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_core_v3_PerHostConfig_added_tlvs_mutable_upb_array(envoy_config_core_v3_PerHostConfig* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} + +UPB_INLINE envoy_config_core_v3_TlvEntry** envoy_config_core_v3_PerHostConfig_mutable_added_tlvs(envoy_config_core_v3_PerHostConfig* msg, size_t* size) { + upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (envoy_config_core_v3_TlvEntry**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE envoy_config_core_v3_TlvEntry** envoy_config_core_v3_PerHostConfig_resize_added_tlvs(envoy_config_core_v3_PerHostConfig* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (envoy_config_core_v3_TlvEntry**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_config_core_v3_TlvEntry* envoy_config_core_v3_PerHostConfig_add_added_tlvs(envoy_config_core_v3_PerHostConfig* msg, upb_Arena* arena) { + upb_MiniTableField field = {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TlvEntry_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_config_core_v3_TlvEntry* sub = (struct envoy_config_core_v3_TlvEntry*)_upb_Message_New(&envoy__config__core__v3__TlvEntry_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c index 5193d9d6be2..51906238a26 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c @@ -9,6 +9,7 @@ #include #include "upb/generated_code_support.h" #include "envoy/config/core/v3/proxy_protocol.upb_minitable.h" +#include "envoy/config/core/v3/substitution_format_string.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -37,39 +38,93 @@ const upb_MiniTable envoy__config__core__v3__ProxyProtocolPassThroughTLVs_msg_in }; const upb_MiniTable* envoy__config__core__v3__ProxyProtocolPassThroughTLVs_msg_init_ptr = &envoy__config__core__v3__ProxyProtocolPassThroughTLVs_msg_init; -static const upb_MiniTableSubInternal envoy_config_core_v3_ProxyProtocolConfig__submsgs[1] = { +static const upb_MiniTableSubInternal envoy_config_core_v3_TlvEntry__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__SubstitutionFormatString_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_config_core_v3_TlvEntry__fields[3] = { + {1, 12, 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(20, 16), 0, kUpb_NoSub, 12, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__core__v3__TlvEntry_msg_init = { + &envoy_config_core_v3_TlvEntry__submsgs[0], + &envoy_config_core_v3_TlvEntry__fields[0], + UPB_SIZE(32, 40), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.core.v3.TlvEntry", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000c00003f000008, &upb_psv4_1bt}, + {0x001000003f000012, &upb_psb_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* envoy__config__core__v3__TlvEntry_msg_init_ptr = &envoy__config__core__v3__TlvEntry_msg_init; +static const upb_MiniTableSubInternal envoy_config_core_v3_ProxyProtocolConfig__submsgs[2] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__ProxyProtocolPassThroughTLVs_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TlvEntry_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_core_v3_ProxyProtocolConfig__fields[2] = { +static const upb_MiniTableField envoy_config_core_v3_ProxyProtocolConfig__fields[3] = { {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__core__v3__ProxyProtocolConfig_msg_init = { &envoy_config_core_v3_ProxyProtocolConfig__submsgs[0], &envoy_config_core_v3_ProxyProtocolConfig__fields[0], - 24, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, + UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.core.v3.ProxyProtocolConfig", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000c00003f000008, &upb_psv4_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001800003f01001a, &upb_prm_1bt_max64b}, }) }; const upb_MiniTable* envoy__config__core__v3__ProxyProtocolConfig_msg_init_ptr = &envoy__config__core__v3__ProxyProtocolConfig_msg_init; -static const upb_MiniTable *messages_layout[2] = { +static const upb_MiniTableSubInternal envoy_config_core_v3_PerHostConfig__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TlvEntry_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_config_core_v3_PerHostConfig__fields[1] = { + {1, 8, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__core__v3__PerHostConfig_msg_init = { + &envoy_config_core_v3_PerHostConfig__submsgs[0], + &envoy_config_core_v3_PerHostConfig__fields[0], + 16, 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.core.v3.PerHostConfig", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_prm_1bt_max64b}, + }) +}; + +const upb_MiniTable* envoy__config__core__v3__PerHostConfig_msg_init_ptr = &envoy__config__core__v3__PerHostConfig_msg_init; +static const upb_MiniTable *messages_layout[4] = { &envoy__config__core__v3__ProxyProtocolPassThroughTLVs_msg_init, + &envoy__config__core__v3__TlvEntry_msg_init, &envoy__config__core__v3__ProxyProtocolConfig_msg_init, + &envoy__config__core__v3__PerHostConfig_msg_init, }; const upb_MiniTableFile envoy_config_core_v3_proxy_protocol_proto_upb_file_layout = { messages_layout, NULL, NULL, - 2, + 4, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h index 691a3a276db..4e21056fa1a 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h @@ -20,8 +20,12 @@ extern "C" { extern const upb_MiniTable envoy__config__core__v3__ProxyProtocolPassThroughTLVs_msg_init; extern const upb_MiniTable* envoy__config__core__v3__ProxyProtocolPassThroughTLVs_msg_init_ptr; +extern const upb_MiniTable envoy__config__core__v3__TlvEntry_msg_init; +extern const upb_MiniTable* envoy__config__core__v3__TlvEntry_msg_init_ptr; extern const upb_MiniTable envoy__config__core__v3__ProxyProtocolConfig_msg_init; extern const upb_MiniTable* envoy__config__core__v3__ProxyProtocolConfig_msg_init_ptr; +extern const upb_MiniTable envoy__config__core__v3__PerHostConfig_msg_init; +extern const upb_MiniTable* envoy__config__core__v3__PerHostConfig_msg_init_ptr; extern const upb_MiniTableFile envoy_config_core_v3_proxy_protocol_proto_upb_file_layout; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h index ab8fc6a1f39..79efd16b1b4 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h @@ -18,6 +18,8 @@ #include "envoy/config/core/v3/config_source.upb_minitable.h" #include "envoy/config/core/v3/health_check.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" +#include "xds/core/v3/collection_entry.upb_minitable.h" +#include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "udpa/annotations/versioning.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -33,6 +35,7 @@ typedef struct envoy_config_endpoint_v3_Endpoint { upb_Message UPB_PRIVATE(base) typedef struct envoy_config_endpoint_v3_Endpoint_HealthCheckConfig { upb_Message UPB_PRIVATE(base); } envoy_config_endpoint_v3_Endpoint_HealthCheckConfig; typedef struct envoy_config_endpoint_v3_Endpoint_AdditionalAddress { upb_Message UPB_PRIVATE(base); } envoy_config_endpoint_v3_Endpoint_AdditionalAddress; typedef struct envoy_config_endpoint_v3_LbEndpoint { upb_Message UPB_PRIVATE(base); } envoy_config_endpoint_v3_LbEndpoint; +typedef struct envoy_config_endpoint_v3_LbEndpointCollection { upb_Message UPB_PRIVATE(base); } envoy_config_endpoint_v3_LbEndpointCollection; typedef struct envoy_config_endpoint_v3_LedsClusterLocalityConfig { upb_Message UPB_PRIVATE(base); } envoy_config_endpoint_v3_LedsClusterLocalityConfig; typedef struct envoy_config_endpoint_v3_LocalityLbEndpoints { upb_Message UPB_PRIVATE(base); } envoy_config_endpoint_v3_LocalityLbEndpoints; typedef struct envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList { upb_Message UPB_PRIVATE(base); } envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList; @@ -41,6 +44,7 @@ struct envoy_config_core_v3_ConfigSource; struct envoy_config_core_v3_Locality; struct envoy_config_core_v3_Metadata; struct google_protobuf_UInt32Value; +struct xds_core_v3_CollectionEntry; @@ -587,6 +591,74 @@ UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_set_endpoint_name(envoy_conf upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +/* envoy.config.endpoint.v3.LbEndpointCollection */ + +UPB_INLINE envoy_config_endpoint_v3_LbEndpointCollection* envoy_config_endpoint_v3_LbEndpointCollection_new(upb_Arena* arena) { + return (envoy_config_endpoint_v3_LbEndpointCollection*)_upb_Message_New(&envoy__config__endpoint__v3__LbEndpointCollection_msg_init, arena); +} +UPB_INLINE envoy_config_endpoint_v3_LbEndpointCollection* envoy_config_endpoint_v3_LbEndpointCollection_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_endpoint_v3_LbEndpointCollection* ret = envoy_config_endpoint_v3_LbEndpointCollection_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__endpoint__v3__LbEndpointCollection_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_endpoint_v3_LbEndpointCollection* envoy_config_endpoint_v3_LbEndpointCollection_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_endpoint_v3_LbEndpointCollection* ret = envoy_config_endpoint_v3_LbEndpointCollection_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__endpoint__v3__LbEndpointCollection_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_endpoint_v3_LbEndpointCollection_serialize(const envoy_config_endpoint_v3_LbEndpointCollection* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__endpoint__v3__LbEndpointCollection_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_endpoint_v3_LbEndpointCollection_serialize_ex(const envoy_config_endpoint_v3_LbEndpointCollection* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__endpoint__v3__LbEndpointCollection_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_config_endpoint_v3_LbEndpointCollection_clear_entries(envoy_config_endpoint_v3_LbEndpointCollection* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct xds_core_v3_CollectionEntry* envoy_config_endpoint_v3_LbEndpointCollection_entries(const envoy_config_endpoint_v3_LbEndpointCollection* msg) { + const struct xds_core_v3_CollectionEntry* default_val = NULL; + const struct xds_core_v3_CollectionEntry* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__core__v3__CollectionEntry_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_endpoint_v3_LbEndpointCollection_has_entries(const envoy_config_endpoint_v3_LbEndpointCollection* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_config_endpoint_v3_LbEndpointCollection_set_entries(envoy_config_endpoint_v3_LbEndpointCollection *msg, struct xds_core_v3_CollectionEntry* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__core__v3__CollectionEntry_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct xds_core_v3_CollectionEntry* envoy_config_endpoint_v3_LbEndpointCollection_mutable_entries(envoy_config_endpoint_v3_LbEndpointCollection* msg, upb_Arena* arena) { + struct xds_core_v3_CollectionEntry* sub = (struct xds_core_v3_CollectionEntry*)envoy_config_endpoint_v3_LbEndpointCollection_entries(msg); + if (sub == NULL) { + sub = (struct xds_core_v3_CollectionEntry*)_upb_Message_New(&xds__core__v3__CollectionEntry_msg_init, arena); + if (sub) envoy_config_endpoint_v3_LbEndpointCollection_set_entries(msg, sub); + } + return sub; +} + /* envoy.config.endpoint.v3.LedsClusterLocalityConfig */ UPB_INLINE envoy_config_endpoint_v3_LedsClusterLocalityConfig* envoy_config_endpoint_v3_LedsClusterLocalityConfig_new(upb_Arena* arena) { diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c index 9c486cb6af4..7807202dda0 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c @@ -14,6 +14,8 @@ #include "envoy/config/core/v3/config_source.upb_minitable.h" #include "envoy/config/core/v3/health_check.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" +#include "xds/core/v3/collection_entry.upb_minitable.h" +#include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "udpa/annotations/versioning.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -138,6 +140,24 @@ const upb_MiniTable envoy__config__endpoint__v3__LbEndpoint_msg_init = { }; const upb_MiniTable* envoy__config__endpoint__v3__LbEndpoint_msg_init_ptr = &envoy__config__endpoint__v3__LbEndpoint_msg_init; +static const upb_MiniTableSubInternal envoy_config_endpoint_v3_LbEndpointCollection__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &xds__core__v3__CollectionEntry_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_config_endpoint_v3_LbEndpointCollection__fields[1] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__endpoint__v3__LbEndpointCollection_msg_init = { + &envoy_config_endpoint_v3_LbEndpointCollection__submsgs[0], + &envoy_config_endpoint_v3_LbEndpointCollection__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.endpoint.v3.LbEndpointCollection", +#endif +}; + +const upb_MiniTable* envoy__config__endpoint__v3__LbEndpointCollection_msg_init_ptr = &envoy__config__endpoint__v3__LbEndpointCollection_msg_init; static const upb_MiniTableSubInternal envoy_config_endpoint_v3_LedsClusterLocalityConfig__submsgs[1] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__ConfigSource_msg_init_ptr}, }; @@ -234,11 +254,12 @@ const upb_MiniTable envoy__config__endpoint__v3__LocalityLbEndpoints__LbEndpoint }; const upb_MiniTable* envoy__config__endpoint__v3__LocalityLbEndpoints__LbEndpointList_msg_init_ptr = &envoy__config__endpoint__v3__LocalityLbEndpoints__LbEndpointList_msg_init; -static const upb_MiniTable *messages_layout[7] = { +static const upb_MiniTable *messages_layout[8] = { &envoy__config__endpoint__v3__Endpoint_msg_init, &envoy__config__endpoint__v3__Endpoint__HealthCheckConfig_msg_init, &envoy__config__endpoint__v3__Endpoint__AdditionalAddress_msg_init, &envoy__config__endpoint__v3__LbEndpoint_msg_init, + &envoy__config__endpoint__v3__LbEndpointCollection_msg_init, &envoy__config__endpoint__v3__LedsClusterLocalityConfig_msg_init, &envoy__config__endpoint__v3__LocalityLbEndpoints_msg_init, &envoy__config__endpoint__v3__LocalityLbEndpoints__LbEndpointList_msg_init, @@ -248,7 +269,7 @@ const upb_MiniTableFile envoy_config_endpoint_v3_endpoint_components_proto_upb_f messages_layout, NULL, NULL, - 7, + 8, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h index b1df0cfea0b..93bb4adeac5 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h @@ -26,6 +26,8 @@ extern const upb_MiniTable envoy__config__endpoint__v3__Endpoint__AdditionalAddr extern const upb_MiniTable* envoy__config__endpoint__v3__Endpoint__AdditionalAddress_msg_init_ptr; extern const upb_MiniTable envoy__config__endpoint__v3__LbEndpoint_msg_init; extern const upb_MiniTable* envoy__config__endpoint__v3__LbEndpoint_msg_init_ptr; +extern const upb_MiniTable envoy__config__endpoint__v3__LbEndpointCollection_msg_init; +extern const upb_MiniTable* envoy__config__endpoint__v3__LbEndpointCollection_msg_init_ptr; extern const upb_MiniTable envoy__config__endpoint__v3__LedsClusterLocalityConfig_msg_init; extern const upb_MiniTable* envoy__config__endpoint__v3__LedsClusterLocalityConfig_msg_init_ptr; extern const upb_MiniTable envoy__config__endpoint__v3__LocalityLbEndpoints_msg_init; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h index a457c981ebd..6aaa394e338 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h @@ -16,6 +16,7 @@ #include "envoy/config/accesslog/v3/accesslog.upb_minitable.h" #include "envoy/config/core/v3/address.upb_minitable.h" #include "envoy/config/core/v3/base.upb_minitable.h" +#include "envoy/config/core/v3/config_source.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/socket_option.upb_minitable.h" #include "envoy/config/listener/v3/api_listener.upb_minitable.h" @@ -23,7 +24,6 @@ #include "envoy/config/listener/v3/udp_listener_config.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/core/v3/collection_entry.upb_minitable.h" #include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" @@ -46,11 +46,13 @@ typedef struct envoy_config_listener_v3_Listener_DeprecatedV1 { upb_Message UPB_ typedef struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig { upb_Message UPB_PRIVATE(base); } envoy_config_listener_v3_Listener_ConnectionBalanceConfig; typedef struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance { upb_Message UPB_PRIVATE(base); } envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance; typedef struct envoy_config_listener_v3_Listener_InternalListenerConfig { upb_Message UPB_PRIVATE(base); } envoy_config_listener_v3_Listener_InternalListenerConfig; +typedef struct envoy_config_listener_v3_Listener_FcdsConfig { upb_Message UPB_PRIVATE(base); } envoy_config_listener_v3_Listener_FcdsConfig; typedef struct envoy_config_listener_v3_ListenerManager { upb_Message UPB_PRIVATE(base); } envoy_config_listener_v3_ListenerManager; typedef struct envoy_config_listener_v3_ValidationListenerManager { upb_Message UPB_PRIVATE(base); } envoy_config_listener_v3_ValidationListenerManager; typedef struct envoy_config_listener_v3_ApiListenerManager { upb_Message UPB_PRIVATE(base); } envoy_config_listener_v3_ApiListenerManager; struct envoy_config_accesslog_v3_AccessLog; struct envoy_config_core_v3_Address; +struct envoy_config_core_v3_ConfigSource; struct envoy_config_core_v3_Metadata; struct envoy_config_core_v3_SocketOption; struct envoy_config_core_v3_SocketOptionsOverride; @@ -316,22 +318,22 @@ typedef enum { envoy_config_listener_v3_Listener_listener_specifier_NOT_SET = 0 } envoy_config_listener_v3_Listener_listener_specifier_oneofcases; UPB_INLINE envoy_config_listener_v3_Listener_listener_specifier_oneofcases envoy_config_listener_v3_Listener_listener_specifier_case(const envoy_config_listener_v3_Listener* msg) { - const upb_MiniTableField field = {27, UPB_SIZE(120, 248), UPB_SIZE(-117, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(124, 256), UPB_SIZE(-121, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_listener_v3_Listener_listener_specifier_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_listener_v3_Listener_clear_listener_specifier(envoy_config_listener_v3_Listener* msg) { - const upb_MiniTableField field = {27, UPB_SIZE(120, 248), UPB_SIZE(-117, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(124, 256), UPB_SIZE(-121, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__listener__v3__Listener_msg_init, &field); } UPB_INLINE void envoy_config_listener_v3_Listener_clear_name(envoy_config_listener_v3_Listener* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(124, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(128, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_listener_v3_Listener_name(const envoy_config_listener_v3_Listener* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(124, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(128, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -780,30 +782,30 @@ UPB_INLINE bool envoy_config_listener_v3_Listener_has_bind_to_port(const envoy_c return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_listener_v3_Listener_clear_internal_listener(envoy_config_listener_v3_Listener* msg) { - const upb_MiniTableField field = {27, UPB_SIZE(120, 248), UPB_SIZE(-117, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(124, 256), UPB_SIZE(-121, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_listener_v3_Listener_InternalListenerConfig* envoy_config_listener_v3_Listener_internal_listener(const envoy_config_listener_v3_Listener* msg) { const envoy_config_listener_v3_Listener_InternalListenerConfig* default_val = NULL; const envoy_config_listener_v3_Listener_InternalListenerConfig* ret; - const upb_MiniTableField field = {27, UPB_SIZE(120, 248), UPB_SIZE(-117, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(124, 256), UPB_SIZE(-121, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__listener__v3__Listener__InternalListenerConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_listener_v3_Listener_has_internal_listener(const envoy_config_listener_v3_Listener* msg) { - const upb_MiniTableField field = {27, UPB_SIZE(120, 248), UPB_SIZE(-117, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(124, 256), UPB_SIZE(-121, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_listener_v3_Listener_clear_stat_prefix(envoy_config_listener_v3_Listener* msg) { - const upb_MiniTableField field = {28, UPB_SIZE(132, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(136, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_listener_v3_Listener_stat_prefix(const envoy_config_listener_v3_Listener* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {28, UPB_SIZE(132, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(136, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -930,9 +932,26 @@ UPB_INLINE bool envoy_config_listener_v3_Listener_bypass_overload_manager(const &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_listener_v3_Listener_clear_fcds_config(envoy_config_listener_v3_Listener* msg) { + const upb_MiniTableField field = {36, UPB_SIZE(116, 248), 82, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_config_listener_v3_Listener_FcdsConfig* envoy_config_listener_v3_Listener_fcds_config(const envoy_config_listener_v3_Listener* msg) { + const envoy_config_listener_v3_Listener_FcdsConfig* default_val = NULL; + const envoy_config_listener_v3_Listener_FcdsConfig* ret; + const upb_MiniTableField field = {36, UPB_SIZE(116, 248), 82, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__listener__v3__Listener__FcdsConfig_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_listener_v3_Listener_has_fcds_config(const envoy_config_listener_v3_Listener* msg) { + const upb_MiniTableField field = {36, UPB_SIZE(116, 248), 82, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_listener_v3_Listener_set_name(envoy_config_listener_v3_Listener *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(124, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(128, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_listener_v3_Listener_set_address(envoy_config_listener_v3_Listener *msg, struct envoy_config_core_v3_Address* value) { @@ -1275,7 +1294,7 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_m return sub; } UPB_INLINE void envoy_config_listener_v3_Listener_set_internal_listener(envoy_config_listener_v3_Listener *msg, envoy_config_listener_v3_Listener_InternalListenerConfig* value) { - const upb_MiniTableField field = {27, UPB_SIZE(120, 248), UPB_SIZE(-117, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(124, 256), UPB_SIZE(-121, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__listener__v3__Listener__InternalListenerConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1288,7 +1307,7 @@ UPB_INLINE struct envoy_config_listener_v3_Listener_InternalListenerConfig* envo return sub; } UPB_INLINE void envoy_config_listener_v3_Listener_set_stat_prefix(envoy_config_listener_v3_Listener *msg, upb_StringView value) { - const upb_MiniTableField field = {28, UPB_SIZE(132, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(136, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_listener_v3_Listener_set_enable_reuse_port(envoy_config_listener_v3_Listener *msg, struct google_protobuf_BoolValue* value) { @@ -1374,6 +1393,19 @@ UPB_INLINE void envoy_config_listener_v3_Listener_set_bypass_overload_manager(en const upb_MiniTableField field = {35, 15, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_listener_v3_Listener_set_fcds_config(envoy_config_listener_v3_Listener *msg, envoy_config_listener_v3_Listener_FcdsConfig* value) { + const upb_MiniTableField field = {36, UPB_SIZE(116, 248), 82, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__listener__v3__Listener__FcdsConfig_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_listener_v3_Listener_FcdsConfig* envoy_config_listener_v3_Listener_mutable_fcds_config(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) { + struct envoy_config_listener_v3_Listener_FcdsConfig* sub = (struct envoy_config_listener_v3_Listener_FcdsConfig*)envoy_config_listener_v3_Listener_fcds_config(msg); + if (sub == NULL) { + sub = (struct envoy_config_listener_v3_Listener_FcdsConfig*)_upb_Message_New(&envoy__config__listener__v3__Listener__FcdsConfig_msg_init, arena); + if (sub) envoy_config_listener_v3_Listener_set_fcds_config(msg, sub); + } + return sub; +} /* envoy.config.listener.v3.Listener.DeprecatedV1 */ @@ -1631,6 +1663,90 @@ UPB_INLINE char* envoy_config_listener_v3_Listener_InternalListenerConfig_serial } +/* envoy.config.listener.v3.Listener.FcdsConfig */ + +UPB_INLINE envoy_config_listener_v3_Listener_FcdsConfig* envoy_config_listener_v3_Listener_FcdsConfig_new(upb_Arena* arena) { + return (envoy_config_listener_v3_Listener_FcdsConfig*)_upb_Message_New(&envoy__config__listener__v3__Listener__FcdsConfig_msg_init, arena); +} +UPB_INLINE envoy_config_listener_v3_Listener_FcdsConfig* envoy_config_listener_v3_Listener_FcdsConfig_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_config_listener_v3_Listener_FcdsConfig* ret = envoy_config_listener_v3_Listener_FcdsConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__listener__v3__Listener__FcdsConfig_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_config_listener_v3_Listener_FcdsConfig* envoy_config_listener_v3_Listener_FcdsConfig_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_config_listener_v3_Listener_FcdsConfig* ret = envoy_config_listener_v3_Listener_FcdsConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__config__listener__v3__Listener__FcdsConfig_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_config_listener_v3_Listener_FcdsConfig_serialize(const envoy_config_listener_v3_Listener_FcdsConfig* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__listener__v3__Listener__FcdsConfig_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_config_listener_v3_Listener_FcdsConfig_serialize_ex(const envoy_config_listener_v3_Listener_FcdsConfig* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__config__listener__v3__Listener__FcdsConfig_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_config_listener_v3_Listener_FcdsConfig_clear_name(envoy_config_listener_v3_Listener_FcdsConfig* msg) { + const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_listener_v3_Listener_FcdsConfig_name(const envoy_config_listener_v3_Listener_FcdsConfig* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_listener_v3_Listener_FcdsConfig_clear_config_source(envoy_config_listener_v3_Listener_FcdsConfig* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_listener_v3_Listener_FcdsConfig_config_source(const envoy_config_listener_v3_Listener_FcdsConfig* msg) { + const struct envoy_config_core_v3_ConfigSource* default_val = NULL; + const struct envoy_config_core_v3_ConfigSource* ret; + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__ConfigSource_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_listener_v3_Listener_FcdsConfig_has_config_source(const envoy_config_listener_v3_Listener_FcdsConfig* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_config_listener_v3_Listener_FcdsConfig_set_name(envoy_config_listener_v3_Listener_FcdsConfig *msg, upb_StringView value) { + const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_listener_v3_Listener_FcdsConfig_set_config_source(envoy_config_listener_v3_Listener_FcdsConfig *msg, struct envoy_config_core_v3_ConfigSource* value) { + const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__ConfigSource_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_listener_v3_Listener_FcdsConfig_mutable_config_source(envoy_config_listener_v3_Listener_FcdsConfig* msg, upb_Arena* arena) { + struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_listener_v3_Listener_FcdsConfig_config_source(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy__config__core__v3__ConfigSource_msg_init, arena); + if (sub) envoy_config_listener_v3_Listener_FcdsConfig_set_config_source(msg, sub); + } + return sub; +} + /* envoy.config.listener.v3.ListenerManager */ UPB_INLINE envoy_config_listener_v3_ListenerManager* envoy_config_listener_v3_ListenerManager_new(upb_Arena* arena) { diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c index d29aec36b02..f1593014cf7 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c @@ -12,6 +12,7 @@ #include "envoy/config/accesslog/v3/accesslog.upb_minitable.h" #include "envoy/config/core/v3/address.upb_minitable.h" #include "envoy/config/core/v3/base.upb_minitable.h" +#include "envoy/config/core/v3/config_source.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/socket_option.upb_minitable.h" #include "envoy/config/listener/v3/api_listener.upb_minitable.h" @@ -19,7 +20,6 @@ #include "envoy/config/listener/v3/udp_listener_config.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/core/v3/collection_entry.upb_minitable.h" #include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" @@ -74,7 +74,7 @@ const upb_MiniTable envoy__config__listener__v3__ListenerCollection_msg_init = { }; const upb_MiniTable* envoy__config__listener__v3__ListenerCollection_msg_init_ptr = &envoy__config__listener__v3__ListenerCollection_msg_init; -static const upb_MiniTableSubInternal envoy_config_listener_v3_Listener__submsgs[24] = { +static const upb_MiniTableSubInternal envoy_config_listener_v3_Listener__submsgs[25] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__Address_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__listener__v3__FilterChain_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, @@ -99,10 +99,11 @@ static const upb_MiniTableSubInternal envoy_config_listener_v3_Listener__submsgs {.UPB_PRIVATE(submsg) = &xds__type__matcher__v3__Matcher_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__listener__v3__AdditionalAddress_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__listener__v3__Listener__FcdsConfig_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_listener_v3_Listener__fields[33] = { - {1, UPB_SIZE(124, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_listener_v3_Listener__fields[34] = { + {1, UPB_SIZE(128, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(20, 72), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(24, 80), 65, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -126,8 +127,8 @@ static const upb_MiniTableField envoy_config_listener_v3_Listener__fields[33] = {24, UPB_SIZE(88, 192), 76, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {25, UPB_SIZE(92, 200), 77, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {26, UPB_SIZE(96, 208), 78, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {27, UPB_SIZE(120, 248), UPB_SIZE(-117, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {28, UPB_SIZE(132, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {27, UPB_SIZE(124, 256), UPB_SIZE(-121, -25), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {28, UPB_SIZE(136, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {29, UPB_SIZE(100, 216), 79, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {30, 13, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {31, 14, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, @@ -135,12 +136,13 @@ static const upb_MiniTableField envoy_config_listener_v3_Listener__fields[33] = {33, UPB_SIZE(108, 232), 0, 22, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {34, UPB_SIZE(112, 240), 81, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {35, 15, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {36, UPB_SIZE(116, 248), 82, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__listener__v3__Listener_msg_init = { &envoy_config_listener_v3_Listener__submsgs[0], &envoy_config_listener_v3_Listener__fields[0], - UPB_SIZE(144, 256), 33, kUpb_ExtMode_NonExtendable, 13, UPB_FASTTABLE_MASK(248), 0, + UPB_SIZE(144, 264), 34, kUpb_ExtMode_NonExtendable, 13, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.listener.v3.Listener", #endif @@ -172,7 +174,7 @@ const upb_MiniTable envoy__config__listener__v3__Listener_msg_init = { {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x00f800181b1301da, &upb_pom_2bt_max64b}, + {0x010000181b1301da, &upb_pom_2bt_max64b}, {0x003000003f0001e2, &upb_pss_2bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000d00003f0001f0, &upb_psb1_2bt}, @@ -245,6 +247,29 @@ const upb_MiniTable envoy__config__listener__v3__Listener__InternalListenerConfi }; const upb_MiniTable* envoy__config__listener__v3__Listener__InternalListenerConfig_msg_init_ptr = &envoy__config__listener__v3__Listener__InternalListenerConfig_msg_init; +static const upb_MiniTableSubInternal envoy_config_listener_v3_Listener_FcdsConfig__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__ConfigSource_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_config_listener_v3_Listener_FcdsConfig__fields[2] = { + {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__config__listener__v3__Listener__FcdsConfig_msg_init = { + &envoy_config_listener_v3_Listener_FcdsConfig__submsgs[0], + &envoy_config_listener_v3_Listener_FcdsConfig__fields[0], + UPB_SIZE(24, 40), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.config.listener.v3.Listener.FcdsConfig", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + }) +}; + +const upb_MiniTable* envoy__config__listener__v3__Listener__FcdsConfig_msg_init_ptr = &envoy__config__listener__v3__Listener__FcdsConfig_msg_init; const upb_MiniTable envoy__config__listener__v3__ListenerManager_msg_init = { NULL, NULL, @@ -275,7 +300,7 @@ const upb_MiniTable envoy__config__listener__v3__ApiListenerManager_msg_init = { }; const upb_MiniTable* envoy__config__listener__v3__ApiListenerManager_msg_init_ptr = &envoy__config__listener__v3__ApiListenerManager_msg_init; -static const upb_MiniTable *messages_layout[10] = { +static const upb_MiniTable *messages_layout[11] = { &envoy__config__listener__v3__AdditionalAddress_msg_init, &envoy__config__listener__v3__ListenerCollection_msg_init, &envoy__config__listener__v3__Listener_msg_init, @@ -283,6 +308,7 @@ static const upb_MiniTable *messages_layout[10] = { &envoy__config__listener__v3__Listener__ConnectionBalanceConfig_msg_init, &envoy__config__listener__v3__Listener__ConnectionBalanceConfig__ExactBalance_msg_init, &envoy__config__listener__v3__Listener__InternalListenerConfig_msg_init, + &envoy__config__listener__v3__Listener__FcdsConfig_msg_init, &envoy__config__listener__v3__ListenerManager_msg_init, &envoy__config__listener__v3__ValidationListenerManager_msg_init, &envoy__config__listener__v3__ApiListenerManager_msg_init, @@ -292,7 +318,7 @@ const upb_MiniTableFile envoy_config_listener_v3_listener_proto_upb_file_layout messages_layout, NULL, NULL, - 10, + 11, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h index dd211947753..07013c8275b 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h @@ -32,6 +32,8 @@ extern const upb_MiniTable envoy__config__listener__v3__Listener__ConnectionBala extern const upb_MiniTable* envoy__config__listener__v3__Listener__ConnectionBalanceConfig__ExactBalance_msg_init_ptr; extern const upb_MiniTable envoy__config__listener__v3__Listener__InternalListenerConfig_msg_init; extern const upb_MiniTable* envoy__config__listener__v3__Listener__InternalListenerConfig_msg_init_ptr; +extern const upb_MiniTable envoy__config__listener__v3__Listener__FcdsConfig_msg_init; +extern const upb_MiniTable* envoy__config__listener__v3__Listener__FcdsConfig_msg_init_ptr; extern const upb_MiniTable envoy__config__listener__v3__ListenerManager_msg_init; extern const upb_MiniTable* envoy__config__listener__v3__ListenerManager_msg_init_ptr; extern const upb_MiniTable envoy__config__listener__v3__ValidationListenerManager_msg_init; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h index 6ddcbde5464..c1a8bf16a35 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h @@ -312,6 +312,23 @@ UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_reject_new_connecti &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_max_sessions_per_event_loop(envoy_config_listener_v3_QuicProtocolOptions* msg) { + const upb_MiniTableField field = {14, UPB_SIZE(60, 112), 75, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_listener_v3_QuicProtocolOptions_max_sessions_per_event_loop(const envoy_config_listener_v3_QuicProtocolOptions* msg) { + const struct google_protobuf_UInt32Value* default_val = NULL; + const struct google_protobuf_UInt32Value* ret; + const upb_MiniTableField field = {14, UPB_SIZE(60, 112), 75, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_max_sessions_per_event_loop(const envoy_config_listener_v3_QuicProtocolOptions* msg) { + const upb_MiniTableField field = {14, UPB_SIZE(60, 112), 75, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_quic_protocol_options(envoy_config_listener_v3_QuicProtocolOptions *msg, struct envoy_config_core_v3_QuicProtocolOptions* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -492,6 +509,19 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_reject_new_conn const upb_MiniTableField field = {13, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_max_sessions_per_event_loop(envoy_config_listener_v3_QuicProtocolOptions *msg, struct google_protobuf_UInt32Value* value) { + const upb_MiniTableField field = {14, UPB_SIZE(60, 112), 75, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_QuicProtocolOptions_mutable_max_sessions_per_event_loop(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) { + struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_listener_v3_QuicProtocolOptions_max_sessions_per_event_loop(msg); + if (sub == NULL) { + sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google__protobuf__UInt32Value_msg_init, arena); + if (sub) envoy_config_listener_v3_QuicProtocolOptions_set_max_sessions_per_event_loop(msg, sub); + } + return sub; +} #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c index c3f20c4b52b..ab306b7943d 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c @@ -24,7 +24,7 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_config_listener_v3_QuicProtocolOptions__submsgs[12] = { +static const upb_MiniTableSubInternal envoy_config_listener_v3_QuicProtocolOptions__submsgs[13] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__QuicProtocolOptions_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, @@ -37,9 +37,10 @@ static const upb_MiniTableSubInternal envoy_config_listener_v3_QuicProtocolOptio {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__SocketCmsgHeaders_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_listener_v3_QuicProtocolOptions__fields[13] = { +static const upb_MiniTableField envoy_config_listener_v3_QuicProtocolOptions__fields[14] = { {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -53,12 +54,13 @@ static const upb_MiniTableField envoy_config_listener_v3_QuicProtocolOptions__fi {11, UPB_SIZE(52, 96), 74, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {12, UPB_SIZE(56, 104), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {13, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {14, UPB_SIZE(60, 112), 75, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__listener__v3__QuicProtocolOptions_msg_init = { &envoy_config_listener_v3_QuicProtocolOptions__submsgs[0], &envoy_config_listener_v3_QuicProtocolOptions__fields[0], - UPB_SIZE(64, 112), 13, kUpb_ExtMode_NonExtendable, 13, UPB_FASTTABLE_MASK(120), 0, + UPB_SIZE(64, 120), 14, kUpb_ExtMode_NonExtendable, 14, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.listener.v3.QuicProtocolOptions", #endif diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h index 4734ba2cdda..fb175b712ef 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h @@ -145,6 +145,18 @@ UPB_INLINE int32_t envoy_config_metrics_v3_MetricsServiceConfig_histogram_emit_m &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_clear_batch_size(envoy_config_metrics_v3_MetricsServiceConfig* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 20), 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE uint32_t envoy_config_metrics_v3_MetricsServiceConfig_batch_size(const envoy_config_metrics_v3_MetricsServiceConfig* msg) { + uint32_t default_val = (uint32_t)0u; + uint32_t ret; + const upb_MiniTableField field = {6, UPB_SIZE(28, 20), 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_set_grpc_service(envoy_config_metrics_v3_MetricsServiceConfig *msg, struct envoy_config_core_v3_GrpcService* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 24), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -184,6 +196,10 @@ UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_set_histogram_emit_ const upb_MiniTableField field = {5, UPB_SIZE(24, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_set_batch_size(envoy_config_metrics_v3_MetricsServiceConfig *msg, uint32_t value) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 20), 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c index c3d3b858f4b..e2519a8d665 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c @@ -25,18 +25,19 @@ static const upb_MiniTableSubInternal envoy_config_metrics_v3_MetricsServiceConf {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_metrics_v3_MetricsServiceConfig__fields[5] = { +static const upb_MiniTableField envoy_config_metrics_v3_MetricsServiceConfig__fields[6] = { {1, UPB_SIZE(12, 24), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 32), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(20, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {4, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(24, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(28, 20), 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__metrics__v3__MetricsServiceConfig_msg_init = { &envoy_config_metrics_v3_MetricsServiceConfig__submsgs[0], &envoy_config_metrics_v3_MetricsServiceConfig__fields[0], - UPB_SIZE(32, 40), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(32, 40), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.metrics.v3.MetricsServiceConfig", #endif @@ -47,7 +48,7 @@ const upb_MiniTable envoy__config__metrics__v3__MetricsServiceConfig_msg_init = {0x000c00003f000018, &upb_psv4_1bt}, {0x000900003f000020, &upb_psb1_1bt}, {0x001000003f000028, &upb_psv4_1bt}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001400003f000030, &upb_psv4_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h index f0be58b6143..17f846bc8c6 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h @@ -41,6 +41,7 @@ struct envoy_type_matcher_v3_ListStringMatcher; struct envoy_type_matcher_v3_StringMatcher; struct google_protobuf_Any; struct google_protobuf_BoolValue; +struct google_protobuf_UInt32Value; struct google_protobuf_UInt64Value; @@ -700,6 +701,23 @@ UPB_INLINE upb_Array* _envoy_config_metrics_v3_HistogramBucketSettings_buckets_m } return arr; } +UPB_INLINE void envoy_config_metrics_v3_HistogramBucketSettings_clear_bins(envoy_config_metrics_v3_HistogramBucketSettings* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_metrics_v3_HistogramBucketSettings_bins(const envoy_config_metrics_v3_HistogramBucketSettings* msg) { + const struct google_protobuf_UInt32Value* default_val = NULL; + const struct google_protobuf_UInt32Value* ret; + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_metrics_v3_HistogramBucketSettings_has_bins(const envoy_config_metrics_v3_HistogramBucketSettings* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_metrics_v3_HistogramBucketSettings_set_match(envoy_config_metrics_v3_HistogramBucketSettings *msg, struct envoy_type_matcher_v3_StringMatcher* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -742,6 +760,19 @@ UPB_INLINE bool envoy_config_metrics_v3_HistogramBucketSettings_add_buckets(envo (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); return true; } +UPB_INLINE void envoy_config_metrics_v3_HistogramBucketSettings_set_bins(envoy_config_metrics_v3_HistogramBucketSettings *msg, struct google_protobuf_UInt32Value* value) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_metrics_v3_HistogramBucketSettings_mutable_bins(envoy_config_metrics_v3_HistogramBucketSettings* msg, upb_Arena* arena) { + struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_metrics_v3_HistogramBucketSettings_bins(msg); + if (sub == NULL) { + sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google__protobuf__UInt32Value_msg_init, arena); + if (sub) envoy_config_metrics_v3_HistogramBucketSettings_set_bins(msg, sub); + } + return sub; +} /* envoy.config.metrics.v3.StatsdSink */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c index aab623facbd..8161ccec276 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c @@ -129,19 +129,21 @@ const upb_MiniTable envoy__config__metrics__v3__TagSpecifier_msg_init = { }; const upb_MiniTable* envoy__config__metrics__v3__TagSpecifier_msg_init_ptr = &envoy__config__metrics__v3__TagSpecifier_msg_init; -static const upb_MiniTableSubInternal envoy_config_metrics_v3_HistogramBucketSettings__submsgs[1] = { +static const upb_MiniTableSubInternal envoy_config_metrics_v3_HistogramBucketSettings__submsgs[2] = { {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__StringMatcher_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_metrics_v3_HistogramBucketSettings__fields[2] = { +static const upb_MiniTableField envoy_config_metrics_v3_HistogramBucketSettings__fields[3] = { {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 24), 0, kUpb_NoSub, 1, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 32), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__metrics__v3__HistogramBucketSettings_msg_init = { &envoy_config_metrics_v3_HistogramBucketSettings__submsgs[0], &envoy_config_metrics_v3_HistogramBucketSettings__fields[0], - UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, + UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.metrics.v3.HistogramBucketSettings", #endif diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h index f0b03c9d459..effe8474e4d 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h @@ -46,7 +46,8 @@ typedef enum { envoy_config_overload_v3_ScaleTimersOverloadActionConfig_HTTP_DOWNSTREAM_CONNECTION_IDLE = 1, envoy_config_overload_v3_ScaleTimersOverloadActionConfig_HTTP_DOWNSTREAM_STREAM_IDLE = 2, envoy_config_overload_v3_ScaleTimersOverloadActionConfig_TRANSPORT_SOCKET_CONNECT = 3, - envoy_config_overload_v3_ScaleTimersOverloadActionConfig_HTTP_DOWNSTREAM_CONNECTION_MAX = 4 + envoy_config_overload_v3_ScaleTimersOverloadActionConfig_HTTP_DOWNSTREAM_CONNECTION_MAX = 4, + envoy_config_overload_v3_ScaleTimersOverloadActionConfig_HTTP_DOWNSTREAM_STREAM_FLUSH = 5 } envoy_config_overload_v3_ScaleTimersOverloadActionConfig_TimerType; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h index 3e58068db0b..be246d0a1da 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h @@ -14,6 +14,7 @@ #include "envoy/config/rbac/v3/rbac.upb_minitable.h" #include "envoy/config/core/v3/address.upb_minitable.h" +#include "envoy/config/core/v3/cel.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/route/v3/route_components.upb_minitable.h" #include "envoy/type/matcher/v3/filter_state.upb_minitable.h" @@ -47,6 +48,7 @@ typedef struct envoy_config_rbac_v3_Principal { upb_Message UPB_PRIVATE(base); } typedef struct envoy_config_rbac_v3_Principal_Set { upb_Message UPB_PRIVATE(base); } envoy_config_rbac_v3_Principal_Set; typedef struct envoy_config_rbac_v3_Principal_Authenticated { upb_Message UPB_PRIVATE(base); } envoy_config_rbac_v3_Principal_Authenticated; typedef struct envoy_config_rbac_v3_Action { upb_Message UPB_PRIVATE(base); } envoy_config_rbac_v3_Action; +struct envoy_config_core_v3_CelExpressionConfig; struct envoy_config_core_v3_CidrRange; struct envoy_config_core_v3_TypedExtensionConfig; struct envoy_config_route_v3_HeaderMatcher; @@ -571,6 +573,23 @@ UPB_INLINE bool envoy_config_rbac_v3_Policy_has_checked_condition(const envoy_co const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_rbac_v3_Policy_clear_cel_config(envoy_config_rbac_v3_Policy* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_CelExpressionConfig* envoy_config_rbac_v3_Policy_cel_config(const envoy_config_rbac_v3_Policy* msg) { + const struct envoy_config_core_v3_CelExpressionConfig* default_val = NULL; + const struct envoy_config_core_v3_CelExpressionConfig* ret; + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__CelExpressionConfig_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_rbac_v3_Policy_has_cel_config(const envoy_config_rbac_v3_Policy* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Policy_mutable_permissions(envoy_config_rbac_v3_Policy* msg, size_t* size) { upb_MiniTableField field = {1, UPB_SIZE(12, 16), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -662,6 +681,19 @@ UPB_INLINE struct google_api_expr_v1alpha1_CheckedExpr* envoy_config_rbac_v3_Pol } return sub; } +UPB_INLINE void envoy_config_rbac_v3_Policy_set_cel_config(envoy_config_rbac_v3_Policy *msg, struct envoy_config_core_v3_CelExpressionConfig* value) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 48), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__CelExpressionConfig_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_CelExpressionConfig* envoy_config_rbac_v3_Policy_mutable_cel_config(envoy_config_rbac_v3_Policy* msg, upb_Arena* arena) { + struct envoy_config_core_v3_CelExpressionConfig* sub = (struct envoy_config_core_v3_CelExpressionConfig*)envoy_config_rbac_v3_Policy_cel_config(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_CelExpressionConfig*)_upb_Message_New(&envoy__config__core__v3__CelExpressionConfig_msg_init, arena); + if (sub) envoy_config_rbac_v3_Policy_set_cel_config(msg, sub); + } + return sub; +} /* envoy.config.rbac.v3.SourcedMetadata */ @@ -1366,6 +1398,7 @@ typedef enum { envoy_config_rbac_v3_Principal_identifier_filter_state = 12, envoy_config_rbac_v3_Principal_identifier_not_id = 8, envoy_config_rbac_v3_Principal_identifier_sourced_metadata = 13, + envoy_config_rbac_v3_Principal_identifier_custom = 14, envoy_config_rbac_v3_Principal_identifier_NOT_SET = 0 } envoy_config_rbac_v3_Principal_identifier_oneofcases; UPB_INLINE envoy_config_rbac_v3_Principal_identifier_oneofcases envoy_config_rbac_v3_Principal_identifier_case(const envoy_config_rbac_v3_Principal* msg) { @@ -1597,6 +1630,23 @@ UPB_INLINE bool envoy_config_rbac_v3_Principal_has_sourced_metadata(const envoy_ const upb_MiniTableField field = {13, UPB_SIZE(12, 16), -9, 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_rbac_v3_Principal_clear_custom(envoy_config_rbac_v3_Principal* msg) { + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_rbac_v3_Principal_custom(const envoy_config_rbac_v3_Principal* msg) { + const struct envoy_config_core_v3_TypedExtensionConfig* default_val = NULL; + const struct envoy_config_core_v3_TypedExtensionConfig* ret; + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_rbac_v3_Principal_has_custom(const envoy_config_rbac_v3_Principal* msg) { + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_rbac_v3_Principal_set_and_ids(envoy_config_rbac_v3_Principal *msg, envoy_config_rbac_v3_Principal_Set* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -1758,6 +1808,19 @@ UPB_INLINE struct envoy_config_rbac_v3_SourcedMetadata* envoy_config_rbac_v3_Pri } return sub; } +UPB_INLINE void envoy_config_rbac_v3_Principal_set_custom(envoy_config_rbac_v3_Principal *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) { + const upb_MiniTableField field = {14, UPB_SIZE(12, 16), -9, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_rbac_v3_Principal_mutable_custom(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) { + struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_rbac_v3_Principal_custom(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy__config__core__v3__TypedExtensionConfig_msg_init, arena); + if (sub) envoy_config_rbac_v3_Principal_set_custom(msg, sub); + } + return sub; +} /* envoy.config.rbac.v3.Principal.Set */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c index b91c743c0be..714c975ffec 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c @@ -10,6 +10,7 @@ #include "upb/generated_code_support.h" #include "envoy/config/rbac/v3/rbac.upb_minitable.h" #include "envoy/config/core/v3/address.upb_minitable.h" +#include "envoy/config/core/v3/cel.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/route/v3/route_components.upb_minitable.h" #include "envoy/type/matcher/v3/filter_state.upb_minitable.h" @@ -127,24 +128,26 @@ const upb_MiniTable envoy__config__rbac__v3__RBAC__PoliciesEntry_msg_init = { }; const upb_MiniTable* envoy__config__rbac__v3__RBAC__PoliciesEntry_msg_init_ptr = &envoy__config__rbac__v3__RBAC__PoliciesEntry_msg_init; -static const upb_MiniTableSubInternal envoy_config_rbac_v3_Policy__submsgs[4] = { +static const upb_MiniTableSubInternal envoy_config_rbac_v3_Policy__submsgs[5] = { {.UPB_PRIVATE(submsg) = &envoy__config__rbac__v3__Permission_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__rbac__v3__Principal_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__api__expr__v1alpha1__Expr_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__api__expr__v1alpha1__CheckedExpr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__CelExpressionConfig_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_rbac_v3_Policy__fields[4] = { +static const upb_MiniTableField envoy_config_rbac_v3_Policy__fields[5] = { {1, UPB_SIZE(12, 16), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(20, 32), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(24, 40), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(28, 48), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__rbac__v3__Policy_msg_init = { &envoy_config_rbac_v3_Policy__submsgs[0], &envoy_config_rbac_v3_Policy__fields[0], - UPB_SIZE(32, 48), 4, kUpb_ExtMode_NonExtendable, 4, UPB_FASTTABLE_MASK(24), 0, + UPB_SIZE(32, 56), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(24), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.rbac.v3.Policy", #endif @@ -264,7 +267,7 @@ const upb_MiniTable envoy__config__rbac__v3__Permission__Set_msg_init = { }; const upb_MiniTable* envoy__config__rbac__v3__Permission__Set_msg_init_ptr = &envoy__config__rbac__v3__Permission__Set_msg_init; -static const upb_MiniTableSubInternal envoy_config_rbac_v3_Principal__submsgs[12] = { +static const upb_MiniTableSubInternal envoy_config_rbac_v3_Principal__submsgs[13] = { {.UPB_PRIVATE(submsg) = &envoy__config__rbac__v3__Principal__Set_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__rbac__v3__Principal__Set_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__rbac__v3__Principal__Authenticated_msg_init_ptr}, @@ -277,9 +280,10 @@ static const upb_MiniTableSubInternal envoy_config_rbac_v3_Principal__submsgs[12 {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__CidrRange_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__FilterStateMatcher_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__rbac__v3__SourcedMetadata_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_rbac_v3_Principal__fields[13] = { +static const upb_MiniTableField envoy_config_rbac_v3_Principal__fields[14] = { {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(12, 16), -9, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, @@ -293,12 +297,13 @@ static const upb_MiniTableField envoy_config_rbac_v3_Principal__fields[13] = { {11, UPB_SIZE(12, 16), -9, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {12, UPB_SIZE(12, 16), -9, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {13, UPB_SIZE(12, 16), -9, 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {14, UPB_SIZE(12, 16), -9, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__rbac__v3__Principal_msg_init = { &envoy_config_rbac_v3_Principal__submsgs[0], &envoy_config_rbac_v3_Principal__fields[0], - UPB_SIZE(16, 24), 13, kUpb_ExtMode_NonExtendable, 13, UPB_FASTTABLE_MASK(120), 0, + UPB_SIZE(16, 24), 14, kUpb_ExtMode_NonExtendable, 14, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.rbac.v3.Principal", #endif @@ -317,7 +322,7 @@ const upb_MiniTable envoy__config__rbac__v3__Principal_msg_init = { {0x001000080b09005a, &upb_pom_1bt_maxmaxb}, {0x001000080c0a0062, &upb_pom_1bt_maxmaxb}, {0x001000080d0b006a, &upb_pom_1bt_max64b}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000080e0c0072, &upb_pom_1bt_maxmaxb}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h index 11ac0953103..560e526dc6b 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h @@ -91,11 +91,11 @@ UPB_INLINE upb_StringView envoy_config_route_v3_RouteConfiguration_name(const en return ret; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_virtual_hosts(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_route_v3_VirtualHost* const* envoy_config_route_v3_RouteConfiguration_virtual_hosts(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__VirtualHost_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -107,7 +107,7 @@ UPB_INLINE const struct envoy_config_route_v3_VirtualHost* const* envoy_config_r } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_virtual_hosts_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__VirtualHost_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -116,7 +116,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_virtual_ho return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_virtual_hosts_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__VirtualHost_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -126,11 +126,11 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_virtual_hosts_mu return arr; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_internal_only_headers(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_internal_only_headers(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { if (size) *size = arr->UPB_PRIVATE(size); @@ -141,7 +141,7 @@ UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_intern } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_internal_only_headers_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { *size = arr ? arr->UPB_PRIVATE(size) : 0; @@ -149,7 +149,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_internal_o return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_internal_only_headers_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); if (size) { @@ -158,11 +158,11 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_internal_only_he return arr; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_response_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_RouteConfiguration_response_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -174,7 +174,7 @@ UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_con } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_response_headers_to_add_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -183,7 +183,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_response_h return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_response_headers_to_add_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -193,11 +193,11 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_response_headers return arr; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_response_headers_to_remove(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { if (size) *size = arr->UPB_PRIVATE(size); @@ -208,7 +208,7 @@ UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_respon } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_response_headers_to_remove_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { *size = arr ? arr->UPB_PRIVATE(size) : 0; @@ -216,7 +216,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_response_h return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_response_headers_to_remove_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); if (size) { @@ -225,11 +225,11 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_response_headers return arr; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_request_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_RouteConfiguration_request_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -241,7 +241,7 @@ UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_con } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_request_headers_to_add_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -250,7 +250,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_request_he return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_request_headers_to_add_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -260,28 +260,28 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_request_headers_ return arr; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_validate_clusters(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(32, 72), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(32, 88), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteConfiguration_validate_clusters(const envoy_config_route_v3_RouteConfiguration* msg) { const struct google_protobuf_BoolValue* default_val = NULL; const struct google_protobuf_BoolValue* ret; - const upb_MiniTableField field = {7, UPB_SIZE(32, 72), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(32, 88), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_validate_clusters(const envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(32, 72), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(32, 88), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_request_headers_to_remove(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { if (size) *size = arr->UPB_PRIVATE(size); @@ -292,7 +292,7 @@ UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_reques } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_request_headers_to_remove_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { *size = arr ? arr->UPB_PRIVATE(size) : 0; @@ -300,7 +300,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_request_he return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_request_headers_to_remove_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); if (size) { @@ -309,20 +309,20 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_request_headers_ return arr; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_vhds(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {9, UPB_SIZE(40, 88), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(40, 104), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_Vhds* envoy_config_route_v3_RouteConfiguration_vhds(const envoy_config_route_v3_RouteConfiguration* msg) { const envoy_config_route_v3_Vhds* default_val = NULL; const envoy_config_route_v3_Vhds* ret; - const upb_MiniTableField field = {9, UPB_SIZE(40, 88), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(40, 104), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__Vhds_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_vhds(const envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {9, UPB_SIZE(40, 88), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(40, 104), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_most_specific_header_mutations_wins(envoy_config_route_v3_RouteConfiguration* msg) { @@ -338,28 +338,28 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_most_specific_header_mu return ret; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_max_direct_response_body_size_bytes(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {11, UPB_SIZE(44, 96), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {11, UPB_SIZE(44, 112), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteConfiguration_max_direct_response_body_size_bytes(const envoy_config_route_v3_RouteConfiguration* msg) { const struct google_protobuf_UInt32Value* default_val = NULL; const struct google_protobuf_UInt32Value* ret; - const upb_MiniTableField field = {11, UPB_SIZE(44, 96), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {11, UPB_SIZE(44, 112), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_max_direct_response_body_size_bytes(const envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {11, UPB_SIZE(44, 96), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {11, UPB_SIZE(44, 112), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_route_v3_ClusterSpecifierPlugin* const* envoy_config_route_v3_RouteConfiguration_cluster_specifier_plugins(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__ClusterSpecifierPlugin_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -371,7 +371,7 @@ UPB_INLINE const struct envoy_config_route_v3_ClusterSpecifierPlugin* const* env } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_cluster_specifier_plugins_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__ClusterSpecifierPlugin_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -380,7 +380,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_cluster_sp return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_cluster_specifier_plugins_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__ClusterSpecifierPlugin_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -390,11 +390,11 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_cluster_specifie return arr; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_request_mirror_policies(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* envoy_config_route_v3_RouteConfiguration_request_mirror_policies(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -406,7 +406,7 @@ UPB_INLINE const struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* c } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_request_mirror_policies_upb_array(const envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - const upb_MiniTableField field = {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -415,7 +415,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteConfiguration_request_mi return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteConfiguration_request_mirror_policies_mutable_upb_array(envoy_config_route_v3_RouteConfiguration* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -449,16 +449,16 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_ignore_path_parameters_ return ret; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_typed_per_filter_config(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE size_t envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_size(const envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); return map ? _upb_Map_Size(map) : 0; } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_get(const envoy_config_route_v3_RouteConfiguration* msg, upb_StringView key, struct google_protobuf_Any** val) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteConfiguration__TypedPerFilterConfigEntry_msg_init); UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); @@ -467,7 +467,7 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_typed_per_filter_config } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_next(const envoy_config_route_v3_RouteConfiguration* msg, upb_StringView* key, const struct google_protobuf_Any** val, size_t* iter) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteConfiguration__TypedPerFilterConfigEntry_msg_init); UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); @@ -480,41 +480,53 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_typed_per_filter_config return true; } UPB_INLINE const upb_Map* _envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_upb_map(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteConfiguration__TypedPerFilterConfigEntry_msg_init); UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); return upb_Message_GetMap(UPB_UPCAST(msg), &field); } UPB_INLINE upb_Map* _envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_mutable_upb_map(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* a) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteConfiguration__TypedPerFilterConfigEntry_msg_init); UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, 0, sizeof(struct google_protobuf_Any*), a); } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_metadata(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {17, UPB_SIZE(60, 128), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 144), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteConfiguration_metadata(const envoy_config_route_v3_RouteConfiguration* msg) { const struct envoy_config_core_v3_Metadata* default_val = NULL; const struct envoy_config_core_v3_Metadata* ret; - const upb_MiniTableField field = {17, UPB_SIZE(60, 128), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 144), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__Metadata_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_metadata(const envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {17, UPB_SIZE(60, 128), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 144), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_vhost_header(envoy_config_route_v3_RouteConfiguration* msg) { + const upb_MiniTableField field = {18, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_route_v3_RouteConfiguration_vhost_header(const envoy_config_route_v3_RouteConfiguration* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {18, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_name(envoy_config_route_v3_RouteConfiguration *msg, upb_StringView value) { const upb_MiniTableField field = {1, UPB_SIZE(64, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE struct envoy_config_route_v3_VirtualHost** envoy_config_route_v3_RouteConfiguration_mutable_virtual_hosts(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__VirtualHost_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -526,12 +538,12 @@ UPB_INLINE struct envoy_config_route_v3_VirtualHost** envoy_config_route_v3_Rout } } UPB_INLINE struct envoy_config_route_v3_VirtualHost** envoy_config_route_v3_RouteConfiguration_resize_virtual_hosts(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (struct envoy_config_route_v3_VirtualHost**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_route_v3_VirtualHost* envoy_config_route_v3_RouteConfiguration_add_virtual_hosts(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) { - upb_MiniTableField field = {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__VirtualHost_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -546,7 +558,7 @@ UPB_INLINE struct envoy_config_route_v3_VirtualHost* envoy_config_route_v3_Route return sub; } UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_internal_only_headers(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { if (size) *size = arr->UPB_PRIVATE(size); @@ -557,12 +569,12 @@ UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_inte } } UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_internal_only_headers(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (upb_StringView*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_internal_only_headers(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView val, upb_Arena* arena) { - upb_MiniTableField field = {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( @@ -574,7 +586,7 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_internal_only_heade return true; } UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_mutable_response_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -586,12 +598,12 @@ UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3 } } UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_resize_response_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (struct envoy_config_core_v3_HeaderValueOption**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_RouteConfiguration_add_response_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) { - upb_MiniTableField field = {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -606,7 +618,7 @@ UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_ return sub; } UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { if (size) *size = arr->UPB_PRIVATE(size); @@ -617,12 +629,12 @@ UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_resp } } UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (upb_StringView*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView val, upb_Arena* arena) { - upb_MiniTableField field = {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( @@ -634,7 +646,7 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_response_headers_to return true; } UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_mutable_request_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -646,12 +658,12 @@ UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3 } } UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_resize_request_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (struct envoy_config_core_v3_HeaderValueOption**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_RouteConfiguration_add_request_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) { - upb_MiniTableField field = {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HeaderValueOption_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -666,7 +678,7 @@ UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_ return sub; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_validate_clusters(envoy_config_route_v3_RouteConfiguration *msg, struct google_protobuf_BoolValue* value) { - const upb_MiniTableField field = {7, UPB_SIZE(32, 72), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(32, 88), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -679,7 +691,7 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteConfigur return sub; } UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { if (size) *size = arr->UPB_PRIVATE(size); @@ -690,12 +702,12 @@ UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_requ } } UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (upb_StringView*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView val, upb_Arena* arena) { - upb_MiniTableField field = {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( @@ -707,7 +719,7 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_request_headers_to_ return true; } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_vhds(envoy_config_route_v3_RouteConfiguration *msg, envoy_config_route_v3_Vhds* value) { - const upb_MiniTableField field = {9, UPB_SIZE(40, 88), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(40, 104), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__Vhds_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -724,7 +736,7 @@ UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_most_specific_heade upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_max_direct_response_body_size_bytes(envoy_config_route_v3_RouteConfiguration *msg, struct google_protobuf_UInt32Value* value) { - const upb_MiniTableField field = {11, UPB_SIZE(44, 96), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {11, UPB_SIZE(44, 112), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -737,7 +749,7 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteConfig return sub; } UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin** envoy_config_route_v3_RouteConfiguration_mutable_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__ClusterSpecifierPlugin_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -749,12 +761,12 @@ UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin** envoy_config_ro } } UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin** envoy_config_route_v3_RouteConfiguration_resize_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (struct envoy_config_route_v3_ClusterSpecifierPlugin**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_RouteConfiguration_add_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) { - upb_MiniTableField field = {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__ClusterSpecifierPlugin_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -769,7 +781,7 @@ UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_rou return sub; } UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteConfiguration_mutable_request_mirror_policies(envoy_config_route_v3_RouteConfiguration* msg, size_t* size) { - upb_MiniTableField field = {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -781,12 +793,12 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_ } } UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteConfiguration_resize_request_mirror_policies(envoy_config_route_v3_RouteConfiguration* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_config_route_v3_RouteConfiguration_add_request_mirror_policies(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) { - upb_MiniTableField field = {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -809,13 +821,13 @@ UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_ignore_path_paramet upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_clear(envoy_config_route_v3_RouteConfiguration* msg) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); if (!map) return; _upb_Map_Clear(map); } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_set(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena* a) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteConfiguration__TypedPerFilterConfigEntry_msg_init); UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); upb_Map* map = _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), @@ -824,13 +836,13 @@ UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_typed_per_filter_config kUpb_MapInsertStatus_OutOfMemory; } UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_typed_per_filter_config_delete(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView key) { - const upb_MiniTableField field = {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); if (!map) return false; return _upb_Map_Delete(map, &key, 0, NULL); } UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_metadata(envoy_config_route_v3_RouteConfiguration *msg, struct envoy_config_core_v3_Metadata* value) { - const upb_MiniTableField field = {17, UPB_SIZE(60, 128), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 144), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__Metadata_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -842,6 +854,10 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteConf } return sub; } +UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_vhost_header(envoy_config_route_v3_RouteConfiguration *msg, upb_StringView value) { + const upb_MiniTableField field = {18, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.config.route.v3.Vhds */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c index d525e5177a4..6c0fd357ff0 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c @@ -35,50 +35,67 @@ static const upb_MiniTableSubInternal envoy_config_route_v3_RouteConfiguration__ {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__Metadata_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_RouteConfiguration__fields[17] = { +static const upb_MiniTableField envoy_config_route_v3_RouteConfiguration__fields[18] = { {1, UPB_SIZE(64, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(12, 32), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(16, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(20, 48), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {5, UPB_SIZE(24, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {6, UPB_SIZE(28, 64), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {7, UPB_SIZE(32, 72), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {8, UPB_SIZE(36, 80), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {9, UPB_SIZE(40, 88), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(20, 64), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(24, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(28, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(32, 88), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(40, 104), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {10, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {11, UPB_SIZE(44, 96), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {12, UPB_SIZE(48, 104), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {13, UPB_SIZE(52, 112), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {11, UPB_SIZE(44, 112), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {12, UPB_SIZE(48, 120), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {13, UPB_SIZE(52, 128), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {14, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {15, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {16, UPB_SIZE(56, 120), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {17, UPB_SIZE(60, 128), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {16, UPB_SIZE(56, 136), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {17, UPB_SIZE(60, 144), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {18, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__RouteConfiguration_msg_init = { &envoy_config_route_v3_RouteConfiguration__submsgs[0], &envoy_config_route_v3_RouteConfiguration__fields[0], - UPB_SIZE(72, 136), 17, kUpb_ExtMode_NonExtendable, 17, UPB_FASTTABLE_MASK(120), 0, + UPB_SIZE(80, 152), 18, kUpb_ExtMode_NonExtendable, 18, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.RouteConfiguration", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x001000003f00000a, &upb_pss_1bt}, - {0x002000003f000012, &upb_prm_1bt_maxmaxb}, - {0x002800003f00001a, &upb_prs_1bt}, - {0x003000003f010022, &upb_prm_1bt_maxmaxb}, - {0x003800003f00002a, &upb_prs_1bt}, - {0x004000003f020032, &upb_prm_1bt_maxmaxb}, + {0x003000003f000012, &upb_prm_1bt_maxmaxb}, + {0x003800003f00001a, &upb_prs_1bt}, + {0x004000003f010022, &upb_prm_1bt_maxmaxb}, + {0x004800003f00002a, &upb_prs_1bt}, + {0x005000003f020032, &upb_prm_1bt_maxmaxb}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x005000003f000042, &upb_prs_1bt}, + {0x006000003f000042, &upb_prs_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000900003f000050, &upb_psb1_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x006800003f060062, &upb_prm_1bt_maxmaxb}, - {0x007000003f07006a, &upb_prm_1bt_maxmaxb}, + {0x007800003f060062, &upb_prm_1bt_maxmaxb}, + {0x008000003f07006a, &upb_prm_1bt_maxmaxb}, {0x000a00003f000070, &upb_psb1_1bt}, {0x000b00003f000078, &upb_psb1_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x002000003f000192, &upb_pss_2bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h index 3924f7ef755..7f440eab2bc 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h @@ -13,9 +13,12 @@ #include "envoy/config/route/v3/route_components.upb_minitable.h" +#include "envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h" #include "envoy/config/core/v3/base.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/proxy_protocol.upb_minitable.h" +#include "envoy/config/core/v3/substitution_format_string.upb_minitable.h" +#include "envoy/type/matcher/v3/filter_state.upb_minitable.h" #include "envoy/type/matcher/v3/metadata.upb_minitable.h" #include "envoy/type/matcher/v3/regex.upb_minitable.h" #include "envoy/type/matcher/v3/string.upb_minitable.h" @@ -97,12 +100,15 @@ typedef struct envoy_config_route_v3_HeaderMatcher { upb_Message UPB_PRIVATE(bas typedef struct envoy_config_route_v3_QueryParameterMatcher { upb_Message UPB_PRIVATE(base); } envoy_config_route_v3_QueryParameterMatcher; typedef struct envoy_config_route_v3_InternalRedirectPolicy { upb_Message UPB_PRIVATE(base); } envoy_config_route_v3_InternalRedirectPolicy; typedef struct envoy_config_route_v3_FilterConfig { upb_Message UPB_PRIVATE(base); } envoy_config_route_v3_FilterConfig; +struct envoy_config_common_mutation_rules_v3_HeaderMutation; struct envoy_config_core_v3_DataSource; struct envoy_config_core_v3_HeaderValueOption; struct envoy_config_core_v3_Metadata; struct envoy_config_core_v3_ProxyProtocolConfig; struct envoy_config_core_v3_RuntimeFractionalPercent; +struct envoy_config_core_v3_SubstitutionFormatString; struct envoy_config_core_v3_TypedExtensionConfig; +struct envoy_type_matcher_v3_FilterStateMatcher; struct envoy_type_matcher_v3_MetadataMatcher; struct envoy_type_matcher_v3_RegexMatchAndSubstitute; struct envoy_type_matcher_v3_RegexMatcher; @@ -192,13 +198,13 @@ UPB_INLINE char* envoy_config_route_v3_VirtualHost_serialize_ex(const envoy_conf return ptr; } UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_name(envoy_config_route_v3_VirtualHost* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(84, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(88, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_VirtualHost_name(const envoy_config_route_v3_VirtualHost* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(84, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(88, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -719,9 +725,26 @@ UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_metadata(const envoy_confi const upb_MiniTableField field = {24, UPB_SIZE(80, 160), 70, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_request_body_buffer_limit(envoy_config_route_v3_VirtualHost* msg) { + const upb_MiniTableField field = {25, UPB_SIZE(84, 168), 71, 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_route_v3_VirtualHost_request_body_buffer_limit(const envoy_config_route_v3_VirtualHost* msg) { + const struct google_protobuf_UInt64Value* default_val = NULL; + const struct google_protobuf_UInt64Value* ret; + const upb_MiniTableField field = {25, UPB_SIZE(84, 168), 71, 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt64Value_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_request_body_buffer_limit(const envoy_config_route_v3_VirtualHost* msg) { + const upb_MiniTableField field = {25, UPB_SIZE(84, 168), 71, 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_route_v3_VirtualHost_set_name(envoy_config_route_v3_VirtualHost *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(84, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(88, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_mutable_domains(envoy_config_route_v3_VirtualHost* msg, size_t* size) { @@ -1128,6 +1151,19 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_VirtualHo } return sub; } +UPB_INLINE void envoy_config_route_v3_VirtualHost_set_request_body_buffer_limit(envoy_config_route_v3_VirtualHost *msg, struct google_protobuf_UInt64Value* value) { + const upb_MiniTableField field = {25, UPB_SIZE(84, 168), 71, 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt64Value_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_route_v3_VirtualHost_mutable_request_body_buffer_limit(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) { + struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_route_v3_VirtualHost_request_body_buffer_limit(msg); + if (sub == NULL) { + sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google__protobuf__UInt64Value_msg_init, arena); + if (sub) envoy_config_route_v3_VirtualHost_set_request_body_buffer_limit(msg, sub); + } + return sub; +} /* envoy.config.route.v3.FilterAction */ @@ -1347,12 +1383,12 @@ typedef enum { envoy_config_route_v3_Route_action_NOT_SET = 0 } envoy_config_route_v3_Route_action_oneofcases; UPB_INLINE envoy_config_route_v3_Route_action_oneofcases envoy_config_route_v3_Route_action_case(const envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_Route_action_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_action(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__route__v3__Route_msg_init, &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_match(envoy_config_route_v3_Route* msg) { @@ -1373,37 +1409,37 @@ UPB_INLINE bool envoy_config_route_v3_Route_has_match(const envoy_config_route_v return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_route(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RouteAction* envoy_config_route_v3_Route_route(const envoy_config_route_v3_Route* msg) { const envoy_config_route_v3_RouteAction* default_val = NULL; const envoy_config_route_v3_RouteAction* ret; - const upb_MiniTableField field = {2, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Route_has_route(const envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_redirect(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RedirectAction* envoy_config_route_v3_Route_redirect(const envoy_config_route_v3_Route* msg) { const envoy_config_route_v3_RedirectAction* default_val = NULL; const envoy_config_route_v3_RedirectAction* ret; - const upb_MiniTableField field = {3, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RedirectAction_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Route_has_redirect(const envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_metadata(envoy_config_route_v3_Route* msg) { @@ -1441,20 +1477,20 @@ UPB_INLINE bool envoy_config_route_v3_Route_has_decorator(const envoy_config_rou return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_direct_response(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_DirectResponseAction* envoy_config_route_v3_Route_direct_response(const envoy_config_route_v3_Route* msg) { const envoy_config_route_v3_DirectResponseAction* default_val = NULL; const envoy_config_route_v3_DirectResponseAction* ret; - const upb_MiniTableField field = {7, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__DirectResponseAction_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Route_has_direct_response(const envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_request_headers_to_add(envoy_config_route_v3_Route* msg) { @@ -1635,13 +1671,13 @@ UPB_INLINE upb_Map* _envoy_config_route_v3_Route_typed_per_filter_config_mutable return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, 0, sizeof(struct google_protobuf_Any*), a); } UPB_INLINE void envoy_config_route_v3_Route_clear_name(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {14, UPB_SIZE(60, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(64, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_Route_name(const envoy_config_route_v3_Route* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {14, UPB_SIZE(60, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(64, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -1681,51 +1717,68 @@ UPB_INLINE bool envoy_config_route_v3_Route_has_per_request_buffer_limit_bytes(c return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_filter_action(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {17, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_FilterAction* envoy_config_route_v3_Route_filter_action(const envoy_config_route_v3_Route* msg) { const envoy_config_route_v3_FilterAction* default_val = NULL; const envoy_config_route_v3_FilterAction* ret; - const upb_MiniTableField field = {17, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__FilterAction_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Route_has_filter_action(const envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {17, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_non_forwarding_action(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {18, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {18, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_NonForwardingAction* envoy_config_route_v3_Route_non_forwarding_action(const envoy_config_route_v3_Route* msg) { const envoy_config_route_v3_NonForwardingAction* default_val = NULL; const envoy_config_route_v3_NonForwardingAction* ret; - const upb_MiniTableField field = {18, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {18, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__NonForwardingAction_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Route_has_non_forwarding_action(const envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {18, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {18, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Route_clear_stat_prefix(envoy_config_route_v3_Route* msg) { - const upb_MiniTableField field = {19, UPB_SIZE(68, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {19, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_Route_stat_prefix(const envoy_config_route_v3_Route* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {19, UPB_SIZE(68, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {19, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_route_v3_Route_clear_request_body_buffer_limit(envoy_config_route_v3_Route* msg) { + const upb_MiniTableField field = {20, UPB_SIZE(52, 128), 69, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_route_v3_Route_request_body_buffer_limit(const envoy_config_route_v3_Route* msg) { + const struct google_protobuf_UInt64Value* default_val = NULL; + const struct google_protobuf_UInt64Value* ret; + const upb_MiniTableField field = {20, UPB_SIZE(52, 128), 69, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt64Value_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } +UPB_INLINE bool envoy_config_route_v3_Route_has_request_body_buffer_limit(const envoy_config_route_v3_Route* msg) { + const upb_MiniTableField field = {20, UPB_SIZE(52, 128), 69, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_route_v3_Route_set_match(envoy_config_route_v3_Route *msg, envoy_config_route_v3_RouteMatch* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -1741,7 +1794,7 @@ UPB_INLINE struct envoy_config_route_v3_RouteMatch* envoy_config_route_v3_Route_ return sub; } UPB_INLINE void envoy_config_route_v3_Route_set_route(envoy_config_route_v3_Route *msg, envoy_config_route_v3_RouteAction* value) { - const upb_MiniTableField field = {2, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1754,7 +1807,7 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction* envoy_config_route_v3_Route return sub; } UPB_INLINE void envoy_config_route_v3_Route_set_redirect(envoy_config_route_v3_Route *msg, envoy_config_route_v3_RedirectAction* value) { - const upb_MiniTableField field = {3, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RedirectAction_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1793,7 +1846,7 @@ UPB_INLINE struct envoy_config_route_v3_Decorator* envoy_config_route_v3_Route_m return sub; } UPB_INLINE void envoy_config_route_v3_Route_set_direct_response(envoy_config_route_v3_Route *msg, envoy_config_route_v3_DirectResponseAction* value) { - const upb_MiniTableField field = {7, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__DirectResponseAction_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1947,7 +2000,7 @@ UPB_INLINE bool envoy_config_route_v3_Route_typed_per_filter_config_delete(envoy return _upb_Map_Delete(map, &key, 0, NULL); } UPB_INLINE void envoy_config_route_v3_Route_set_name(envoy_config_route_v3_Route *msg, upb_StringView value) { - const upb_MiniTableField field = {14, UPB_SIZE(60, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(64, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_Route_set_tracing(envoy_config_route_v3_Route *msg, envoy_config_route_v3_Tracing* value) { @@ -1977,7 +2030,7 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_Route_mutab return sub; } UPB_INLINE void envoy_config_route_v3_Route_set_filter_action(envoy_config_route_v3_Route *msg, envoy_config_route_v3_FilterAction* value) { - const upb_MiniTableField field = {17, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__FilterAction_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1990,7 +2043,7 @@ UPB_INLINE struct envoy_config_route_v3_FilterAction* envoy_config_route_v3_Rout return sub; } UPB_INLINE void envoy_config_route_v3_Route_set_non_forwarding_action(envoy_config_route_v3_Route *msg, envoy_config_route_v3_NonForwardingAction* value) { - const upb_MiniTableField field = {18, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {18, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__NonForwardingAction_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -2003,9 +2056,22 @@ UPB_INLINE struct envoy_config_route_v3_NonForwardingAction* envoy_config_route_ return sub; } UPB_INLINE void envoy_config_route_v3_Route_set_stat_prefix(envoy_config_route_v3_Route *msg, upb_StringView value) { - const upb_MiniTableField field = {19, UPB_SIZE(68, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {19, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_route_v3_Route_set_request_body_buffer_limit(envoy_config_route_v3_Route *msg, struct google_protobuf_UInt64Value* value) { + const upb_MiniTableField field = {20, UPB_SIZE(52, 128), 69, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt64Value_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_route_v3_Route_mutable_request_body_buffer_limit(envoy_config_route_v3_Route* msg, upb_Arena* arena) { + struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_route_v3_Route_request_body_buffer_limit(msg); + if (sub == NULL) { + sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google__protobuf__UInt64Value_msg_init, arena); + if (sub) envoy_config_route_v3_Route_set_request_body_buffer_limit(msg, sub); + } + return sub; +} /* envoy.config.route.v3.WeightedCluster */ @@ -2045,6 +2111,7 @@ UPB_INLINE char* envoy_config_route_v3_WeightedCluster_serialize_ex(const envoy_ } typedef enum { envoy_config_route_v3_WeightedCluster_random_value_specifier_header_name = 4, + envoy_config_route_v3_WeightedCluster_random_value_specifier_use_hash_policy = 5, envoy_config_route_v3_WeightedCluster_random_value_specifier_NOT_SET = 0 } envoy_config_route_v3_WeightedCluster_random_value_specifier_oneofcases; UPB_INLINE envoy_config_route_v3_WeightedCluster_random_value_specifier_oneofcases envoy_config_route_v3_WeightedCluster_random_value_specifier_case(const envoy_config_route_v3_WeightedCluster* msg) { @@ -2136,6 +2203,23 @@ UPB_INLINE bool envoy_config_route_v3_WeightedCluster_has_header_name(const envo const upb_MiniTableField field = {4, 32, UPB_SIZE(-21, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_route_v3_WeightedCluster_clear_use_hash_policy(envoy_config_route_v3_WeightedCluster* msg) { + const upb_MiniTableField field = {5, 32, UPB_SIZE(-21, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_WeightedCluster_use_hash_policy(const envoy_config_route_v3_WeightedCluster* msg) { + const struct google_protobuf_BoolValue* default_val = NULL; + const struct google_protobuf_BoolValue* ret; + const upb_MiniTableField field = {5, 32, UPB_SIZE(-21, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_route_v3_WeightedCluster_has_use_hash_policy(const envoy_config_route_v3_WeightedCluster* msg) { + const upb_MiniTableField field = {5, 32, UPB_SIZE(-21, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight** envoy_config_route_v3_WeightedCluster_mutable_clusters(envoy_config_route_v3_WeightedCluster* msg, size_t* size) { upb_MiniTableField field = {1, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -2190,6 +2274,19 @@ UPB_INLINE void envoy_config_route_v3_WeightedCluster_set_header_name(envoy_conf const upb_MiniTableField field = {4, 32, UPB_SIZE(-21, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_route_v3_WeightedCluster_set_use_hash_policy(envoy_config_route_v3_WeightedCluster *msg, struct google_protobuf_BoolValue* value) { + const upb_MiniTableField field = {5, 32, UPB_SIZE(-21, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_WeightedCluster_mutable_use_hash_policy(envoy_config_route_v3_WeightedCluster* msg, upb_Arena* arena) { + struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_WeightedCluster_use_hash_policy(msg); + if (sub == NULL) { + sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google__protobuf__BoolValue_msg_init, arena); + if (sub) envoy_config_route_v3_WeightedCluster_set_use_hash_policy(msg, sub); + } + return sub; +} /* envoy.config.route.v3.WeightedCluster.ClusterWeight */ @@ -2802,44 +2899,44 @@ typedef enum { envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET = 0 } envoy_config_route_v3_RouteMatch_path_specifier_oneofcases; UPB_INLINE envoy_config_route_v3_RouteMatch_path_specifier_oneofcases envoy_config_route_v3_RouteMatch_path_specifier_case(const envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_RouteMatch_path_specifier_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_path_specifier(envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__route__v3__RouteMatch_msg_init, &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_prefix(envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_prefix(const envoy_config_route_v3_RouteMatch* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_prefix(const envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_path(envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_path(const envoy_config_route_v3_RouteMatch* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {2, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_path(const envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_case_sensitive(envoy_config_route_v3_RouteMatch* msg) { @@ -2964,20 +3061,20 @@ UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_runtime_fraction(const envo return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_safe_regex(envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {10, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_RouteMatch_safe_regex(const envoy_config_route_v3_RouteMatch* msg) { const struct envoy_type_matcher_v3_RegexMatcher* default_val = NULL; const struct envoy_type_matcher_v3_RegexMatcher* ret; - const upb_MiniTableField field = {10, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatcher_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_safe_regex(const envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {10, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_tls_context(envoy_config_route_v3_RouteMatch* msg) { @@ -2998,20 +3095,20 @@ UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_tls_context(const envoy_con return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_connect_matcher(envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {12, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RouteMatch_ConnectMatcher* envoy_config_route_v3_RouteMatch_connect_matcher(const envoy_config_route_v3_RouteMatch* msg) { const envoy_config_route_v3_RouteMatch_ConnectMatcher* default_val = NULL; const envoy_config_route_v3_RouteMatch_ConnectMatcher* ret; - const upb_MiniTableField field = {12, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteMatch__ConnectMatcher_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_connect_matcher(const envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {12, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_dynamic_metadata(envoy_config_route_v3_RouteMatch* msg) { @@ -3050,45 +3147,80 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteMatch_dynamic_metadata_mutable return arr; } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_path_separated_prefix(envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {14, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_path_separated_prefix(const envoy_config_route_v3_RouteMatch* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {14, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_path_separated_prefix(const envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {14, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_path_match_policy(envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {15, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RouteMatch_path_match_policy(const envoy_config_route_v3_RouteMatch* msg) { const struct envoy_config_core_v3_TypedExtensionConfig* default_val = NULL; const struct envoy_config_core_v3_TypedExtensionConfig* ret; - const upb_MiniTableField field = {15, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_path_match_policy(const envoy_config_route_v3_RouteMatch* msg) { - const upb_MiniTableField field = {15, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_filter_state(envoy_config_route_v3_RouteMatch* msg) { + const upb_MiniTableField field = {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_type_matcher_v3_FilterStateMatcher* const* envoy_config_route_v3_RouteMatch_filter_state(const envoy_config_route_v3_RouteMatch* msg, size_t* size) { + const upb_MiniTableField field = {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__FilterStateMatcher_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct envoy_type_matcher_v3_FilterStateMatcher* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteMatch_filter_state_upb_array(const envoy_config_route_v3_RouteMatch* msg, size_t* size) { + const upb_MiniTableField field = {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__FilterStateMatcher_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_route_v3_RouteMatch_filter_state_mutable_upb_array(envoy_config_route_v3_RouteMatch* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__FilterStateMatcher_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_config_route_v3_RouteMatch_set_prefix(envoy_config_route_v3_RouteMatch *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteMatch_set_path(envoy_config_route_v3_RouteMatch *msg, upb_StringView value) { - const upb_MiniTableField field = {2, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteMatch_set_case_sensitive(envoy_config_route_v3_RouteMatch *msg, struct google_protobuf_BoolValue* value) { @@ -3195,7 +3327,7 @@ UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_ro return sub; } UPB_INLINE void envoy_config_route_v3_RouteMatch_set_safe_regex(envoy_config_route_v3_RouteMatch *msg, struct envoy_type_matcher_v3_RegexMatcher* value) { - const upb_MiniTableField field = {10, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatcher_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -3221,7 +3353,7 @@ UPB_INLINE struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* envoy return sub; } UPB_INLINE void envoy_config_route_v3_RouteMatch_set_connect_matcher(envoy_config_route_v3_RouteMatch *msg, envoy_config_route_v3_RouteMatch_ConnectMatcher* value) { - const upb_MiniTableField field = {12, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {12, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteMatch__ConnectMatcher_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -3266,11 +3398,11 @@ UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_route_v3_R return sub; } UPB_INLINE void envoy_config_route_v3_RouteMatch_set_path_separated_prefix(envoy_config_route_v3_RouteMatch *msg, upb_StringView value) { - const upb_MiniTableField field = {14, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteMatch_set_path_match_policy(envoy_config_route_v3_RouteMatch *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) { - const upb_MiniTableField field = {15, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -3282,6 +3414,38 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_ } return sub; } +UPB_INLINE struct envoy_type_matcher_v3_FilterStateMatcher** envoy_config_route_v3_RouteMatch_mutable_filter_state(envoy_config_route_v3_RouteMatch* msg, size_t* size) { + upb_MiniTableField field = {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__FilterStateMatcher_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct envoy_type_matcher_v3_FilterStateMatcher**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct envoy_type_matcher_v3_FilterStateMatcher** envoy_config_route_v3_RouteMatch_resize_filter_state(envoy_config_route_v3_RouteMatch* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct envoy_type_matcher_v3_FilterStateMatcher**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_type_matcher_v3_FilterStateMatcher* envoy_config_route_v3_RouteMatch_add_filter_state(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) { + upb_MiniTableField field = {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__FilterStateMatcher_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_type_matcher_v3_FilterStateMatcher* sub = (struct envoy_type_matcher_v3_FilterStateMatcher*)_upb_Message_New(&envoy__type__matcher__v3__FilterStateMatcher_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} /* envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions */ @@ -3834,12 +3998,12 @@ typedef enum { envoy_config_route_v3_RouteAction_cluster_specifier_NOT_SET = 0 } envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases; UPB_INLINE envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases envoy_config_route_v3_RouteAction_cluster_specifier_case(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster_specifier(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__route__v3__RouteAction_msg_init, &field); } typedef enum { @@ -3847,160 +4011,161 @@ typedef enum { envoy_config_route_v3_RouteAction_host_rewrite_specifier_auto_host_rewrite = 7, envoy_config_route_v3_RouteAction_host_rewrite_specifier_host_rewrite_header = 29, envoy_config_route_v3_RouteAction_host_rewrite_specifier_host_rewrite_path_regex = 35, + envoy_config_route_v3_RouteAction_host_rewrite_specifier_host_rewrite = 44, envoy_config_route_v3_RouteAction_host_rewrite_specifier_NOT_SET = 0 } envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases; UPB_INLINE envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases envoy_config_route_v3_RouteAction_host_rewrite_specifier_case(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {6, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite_specifier(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {6, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__config__route__v3__RouteAction_msg_init, &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster(const envoy_config_route_v3_RouteAction* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster_header(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster_header(const envoy_config_route_v3_RouteAction* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {2, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster_header(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_weighted_clusters(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_RouteAction_weighted_clusters(const envoy_config_route_v3_RouteAction* msg) { const envoy_config_route_v3_WeightedCluster* default_val = NULL; const envoy_config_route_v3_WeightedCluster* ret; - const upb_MiniTableField field = {3, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__WeightedCluster_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_weighted_clusters(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_metadata_match(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 80), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 96), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteAction_metadata_match(const envoy_config_route_v3_RouteAction* msg) { const struct envoy_config_core_v3_Metadata* default_val = NULL; const struct envoy_config_core_v3_Metadata* ret; - const upb_MiniTableField field = {4, UPB_SIZE(12, 80), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 96), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__Metadata_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_metadata_match(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 80), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 96), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_prefix_rewrite(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(112, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(116, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_prefix_rewrite(const envoy_config_route_v3_RouteAction* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {5, UPB_SIZE(112, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(116, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite_literal(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {6, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_host_rewrite_literal(const envoy_config_route_v3_RouteAction* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {6, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_literal(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {6, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_auto_host_rewrite(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_auto_host_rewrite(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_BoolValue* default_val = NULL; const struct google_protobuf_BoolValue* ret; - const upb_MiniTableField field = {7, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_auto_host_rewrite(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_timeout(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {8, UPB_SIZE(16, 88), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(16, 104), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_timeout(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_Duration* default_val = NULL; const struct google_protobuf_Duration* ret; - const upb_MiniTableField field = {8, UPB_SIZE(16, 88), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(16, 104), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_timeout(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {8, UPB_SIZE(16, 88), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(16, 104), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_retry_policy(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {9, UPB_SIZE(20, 96), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(20, 112), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_RouteAction_retry_policy(const envoy_config_route_v3_RouteAction* msg) { const envoy_config_route_v3_RetryPolicy* default_val = NULL; const envoy_config_route_v3_RetryPolicy* ret; - const upb_MiniTableField field = {9, UPB_SIZE(20, 96), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(20, 112), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RetryPolicy_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_retry_policy(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {9, UPB_SIZE(20, 96), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(20, 112), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_priority(envoy_config_route_v3_RouteAction* msg) { @@ -4016,11 +4181,11 @@ UPB_INLINE int32_t envoy_config_route_v3_RouteAction_priority(const envoy_config return ret; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_rate_limits(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RateLimit* const* envoy_config_route_v3_RouteAction_rate_limits(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RateLimit_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4032,7 +4197,7 @@ UPB_INLINE const envoy_config_route_v3_RateLimit* const* envoy_config_route_v3_R } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_rate_limits_upb_array(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RateLimit_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -4041,7 +4206,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_rate_limits_upb_a return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_rate_limits_mutable_upb_array(envoy_config_route_v3_RouteAction* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RateLimit_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -4051,28 +4216,28 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_rate_limits_mutable_upb return arr; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_include_vh_rate_limits(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {14, UPB_SIZE(32, 112), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(32, 128), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_include_vh_rate_limits(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_BoolValue* default_val = NULL; const struct google_protobuf_BoolValue* ret; - const upb_MiniTableField field = {14, UPB_SIZE(32, 112), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(32, 128), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_include_vh_rate_limits(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {14, UPB_SIZE(32, 112), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(32, 128), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_hash_policy(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy* const* envoy_config_route_v3_RouteAction_hash_policy(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4084,7 +4249,7 @@ UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy* const* envoy_conf } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_hash_policy_upb_array(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -4093,7 +4258,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_hash_policy_upb_a return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_hash_policy_mutable_upb_array(envoy_config_route_v3_RouteAction* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -4103,20 +4268,20 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_hash_policy_mutable_upb return arr; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cors(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {17, UPB_SIZE(40, 128), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(40, 144), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_RouteAction_cors(const envoy_config_route_v3_RouteAction* msg) { const envoy_config_route_v3_CorsPolicy* default_val = NULL; const envoy_config_route_v3_CorsPolicy* ret; - const upb_MiniTableField field = {17, UPB_SIZE(40, 128), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(40, 144), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__CorsPolicy_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cors(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {17, UPB_SIZE(40, 128), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(40, 144), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster_not_found_response_code(envoy_config_route_v3_RouteAction* msg) { @@ -4132,45 +4297,45 @@ UPB_INLINE int32_t envoy_config_route_v3_RouteAction_cluster_not_found_response_ return ret; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_max_grpc_timeout(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {23, UPB_SIZE(48, 136), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(48, 152), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_max_grpc_timeout(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_Duration* default_val = NULL; const struct google_protobuf_Duration* ret; - const upb_MiniTableField field = {23, UPB_SIZE(48, 136), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(48, 152), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_grpc_timeout(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {23, UPB_SIZE(48, 136), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(48, 152), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_idle_timeout(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {24, UPB_SIZE(52, 144), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {24, UPB_SIZE(52, 160), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_idle_timeout(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_Duration* default_val = NULL; const struct google_protobuf_Duration* ret; - const upb_MiniTableField field = {24, UPB_SIZE(52, 144), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {24, UPB_SIZE(52, 160), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_idle_timeout(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {24, UPB_SIZE(52, 144), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {24, UPB_SIZE(52, 160), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_upgrade_configs(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RouteAction_UpgradeConfig* const* envoy_config_route_v3_RouteAction_upgrade_configs(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__UpgradeConfig_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4182,7 +4347,7 @@ UPB_INLINE const envoy_config_route_v3_RouteAction_UpgradeConfig* const* envoy_c } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_upgrade_configs_upb_array(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__UpgradeConfig_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -4191,7 +4356,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_upgrade_configs_u return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_upgrade_configs_mutable_upb_array(envoy_config_route_v3_RouteAction* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__UpgradeConfig_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -4213,61 +4378,61 @@ UPB_INLINE int32_t envoy_config_route_v3_RouteAction_internal_redirect_action(co return ret; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_hedge_policy(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {27, UPB_SIZE(64, 160), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(64, 176), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_RouteAction_hedge_policy(const envoy_config_route_v3_RouteAction* msg) { const envoy_config_route_v3_HedgePolicy* default_val = NULL; const envoy_config_route_v3_HedgePolicy* ret; - const upb_MiniTableField field = {27, UPB_SIZE(64, 160), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(64, 176), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__HedgePolicy_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_hedge_policy(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {27, UPB_SIZE(64, 160), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(64, 176), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_grpc_timeout_offset(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {28, UPB_SIZE(68, 168), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(68, 184), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_grpc_timeout_offset(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_Duration* default_val = NULL; const struct google_protobuf_Duration* ret; - const upb_MiniTableField field = {28, UPB_SIZE(68, 168), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(68, 184), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_grpc_timeout_offset(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {28, UPB_SIZE(68, 168), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(68, 184), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite_header(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {29, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {29, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_host_rewrite_header(const envoy_config_route_v3_RouteAction* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {29, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {29, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_header(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {29, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {29, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_request_mirror_policies(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* envoy_config_route_v3_RouteAction_request_mirror_policies(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4279,7 +4444,7 @@ UPB_INLINE const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* e } } UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_request_mirror_policies_upb_array(const envoy_config_route_v3_RouteAction* msg, size_t* size) { - const upb_MiniTableField field = {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -4288,7 +4453,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_request_mirror_po return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_request_mirror_policies_mutable_upb_array(envoy_config_route_v3_RouteAction* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -4298,197 +4463,242 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_request_mirror_policies return arr; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_max_internal_redirects(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {31, UPB_SIZE(76, 184), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(76, 200), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteAction_max_internal_redirects(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_UInt32Value* default_val = NULL; const struct google_protobuf_UInt32Value* ret; - const upb_MiniTableField field = {31, UPB_SIZE(76, 184), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(76, 200), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_internal_redirects(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {31, UPB_SIZE(76, 184), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(76, 200), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_regex_rewrite(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {32, UPB_SIZE(80, 192), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {32, UPB_SIZE(80, 208), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_regex_rewrite(const envoy_config_route_v3_RouteAction* msg) { const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* default_val = NULL; const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* ret; - const upb_MiniTableField field = {32, UPB_SIZE(80, 192), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {32, UPB_SIZE(80, 208), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatchAndSubstitute_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_regex_rewrite(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {32, UPB_SIZE(80, 192), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {32, UPB_SIZE(80, 208), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_retry_policy_typed_config(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {33, UPB_SIZE(84, 200), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {33, UPB_SIZE(84, 216), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_RouteAction_retry_policy_typed_config(const envoy_config_route_v3_RouteAction* msg) { const struct google_protobuf_Any* default_val = NULL; const struct google_protobuf_Any* ret; - const upb_MiniTableField field = {33, UPB_SIZE(84, 200), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {33, UPB_SIZE(84, 216), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_retry_policy_typed_config(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {33, UPB_SIZE(84, 200), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {33, UPB_SIZE(84, 216), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_internal_redirect_policy(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {34, UPB_SIZE(88, 208), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(88, 224), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_InternalRedirectPolicy* envoy_config_route_v3_RouteAction_internal_redirect_policy(const envoy_config_route_v3_RouteAction* msg) { const envoy_config_route_v3_InternalRedirectPolicy* default_val = NULL; const envoy_config_route_v3_InternalRedirectPolicy* ret; - const upb_MiniTableField field = {34, UPB_SIZE(88, 208), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(88, 224), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__InternalRedirectPolicy_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_internal_redirect_policy(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {34, UPB_SIZE(88, 208), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(88, 224), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite_path_regex(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {35, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {35, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_host_rewrite_path_regex(const envoy_config_route_v3_RouteAction* msg) { const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* default_val = NULL; const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* ret; - const upb_MiniTableField field = {35, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {35, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatchAndSubstitute_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_path_regex(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {35, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {35, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_max_stream_duration(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {36, UPB_SIZE(92, 216), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {36, UPB_SIZE(92, 232), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_RouteAction_MaxStreamDuration* envoy_config_route_v3_RouteAction_max_stream_duration(const envoy_config_route_v3_RouteAction* msg) { const envoy_config_route_v3_RouteAction_MaxStreamDuration* default_val = NULL; const envoy_config_route_v3_RouteAction_MaxStreamDuration* ret; - const upb_MiniTableField field = {36, UPB_SIZE(92, 216), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {36, UPB_SIZE(92, 232), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__MaxStreamDuration_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_stream_duration(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {36, UPB_SIZE(92, 216), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {36, UPB_SIZE(92, 232), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster_specifier_plugin(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {37, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {37, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {37, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_append_x_forwarded_host(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {38, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {38, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE bool envoy_config_route_v3_RouteAction_append_x_forwarded_host(const envoy_config_route_v3_RouteAction* msg) { bool default_val = false; bool ret; - const upb_MiniTableField field = {38, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {38, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_inline_cluster_specifier_plugin(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {39, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {39, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_RouteAction_inline_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) { const envoy_config_route_v3_ClusterSpecifierPlugin* default_val = NULL; const envoy_config_route_v3_ClusterSpecifierPlugin* ret; - const upb_MiniTableField field = {39, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {39, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__ClusterSpecifierPlugin_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_inline_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {39, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {39, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_early_data_policy(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {40, UPB_SIZE(96, 224), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {40, UPB_SIZE(96, 240), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RouteAction_early_data_policy(const envoy_config_route_v3_RouteAction* msg) { const struct envoy_config_core_v3_TypedExtensionConfig* default_val = NULL; const struct envoy_config_core_v3_TypedExtensionConfig* ret; - const upb_MiniTableField field = {40, UPB_SIZE(96, 224), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {40, UPB_SIZE(96, 240), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_early_data_policy(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {40, UPB_SIZE(96, 224), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {40, UPB_SIZE(96, 240), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_clear_path_rewrite_policy(envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {41, UPB_SIZE(100, 232), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {41, UPB_SIZE(100, 248), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RouteAction_path_rewrite_policy(const envoy_config_route_v3_RouteAction* msg) { const struct envoy_config_core_v3_TypedExtensionConfig* default_val = NULL; const struct envoy_config_core_v3_TypedExtensionConfig* ret; - const upb_MiniTableField field = {41, UPB_SIZE(100, 232), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {41, UPB_SIZE(100, 248), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_has_path_rewrite_policy(const envoy_config_route_v3_RouteAction* msg) { - const upb_MiniTableField field = {41, UPB_SIZE(100, 232), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {41, UPB_SIZE(100, 248), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_route_v3_RouteAction_clear_flush_timeout(envoy_config_route_v3_RouteAction* msg) { + const upb_MiniTableField field = {42, UPB_SIZE(104, 256), 80, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_flush_timeout(const envoy_config_route_v3_RouteAction* msg) { + const struct google_protobuf_Duration* default_val = NULL; + const struct google_protobuf_Duration* ret; + const upb_MiniTableField field = {42, UPB_SIZE(104, 256), 80, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_route_v3_RouteAction_has_flush_timeout(const envoy_config_route_v3_RouteAction* msg) { + const upb_MiniTableField field = {42, UPB_SIZE(104, 256), 80, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite(envoy_config_route_v3_RouteAction* msg) { + const upb_MiniTableField field = {44, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_host_rewrite(const envoy_config_route_v3_RouteAction* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {44, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite(const envoy_config_route_v3_RouteAction* msg) { + const upb_MiniTableField field = {44, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_config_route_v3_RouteAction_clear_path_rewrite(envoy_config_route_v3_RouteAction* msg) { + const upb_MiniTableField field = {45, UPB_SIZE(124, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_path_rewrite(const envoy_config_route_v3_RouteAction* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {45, UPB_SIZE(124, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster_header(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { - const upb_MiniTableField field = {2, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_weighted_clusters(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_WeightedCluster* value) { - const upb_MiniTableField field = {3, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__WeightedCluster_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4501,7 +4711,7 @@ UPB_INLINE struct envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_R return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_metadata_match(envoy_config_route_v3_RouteAction *msg, struct envoy_config_core_v3_Metadata* value) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 80), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 96), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__Metadata_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4514,15 +4724,15 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteActi return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_prefix_rewrite(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { - const upb_MiniTableField field = {5, UPB_SIZE(112, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(116, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_host_rewrite_literal(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { - const upb_MiniTableField field = {6, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_auto_host_rewrite(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_BoolValue* value) { - const upb_MiniTableField field = {7, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4535,7 +4745,7 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_m return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_timeout(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) { - const upb_MiniTableField field = {8, UPB_SIZE(16, 88), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(16, 104), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4548,7 +4758,7 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_retry_policy(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_RetryPolicy* value) { - const upb_MiniTableField field = {9, UPB_SIZE(20, 96), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(20, 112), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RetryPolicy_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4565,7 +4775,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_set_priority(envoy_config_rout upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_RouteAction_mutable_rate_limits(envoy_config_route_v3_RouteAction* msg, size_t* size) { - upb_MiniTableField field = {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RateLimit_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4577,12 +4787,12 @@ UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_RouteAction_m } } UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_RouteAction_resize_rate_limits(envoy_config_route_v3_RouteAction* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_RateLimit**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_route_v3_RateLimit* envoy_config_route_v3_RouteAction_add_rate_limits(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) { - upb_MiniTableField field = {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RateLimit_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -4597,7 +4807,7 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit* envoy_config_route_v3_RouteAc return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_include_vh_rate_limits(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_BoolValue* value) { - const upb_MiniTableField field = {14, UPB_SIZE(32, 112), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {14, UPB_SIZE(32, 128), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4610,7 +4820,7 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_m return sub; } UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy** envoy_config_route_v3_RouteAction_mutable_hash_policy(envoy_config_route_v3_RouteAction* msg, size_t* size) { - upb_MiniTableField field = {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4622,12 +4832,12 @@ UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy** envoy_config_route_v3_ } } UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy** envoy_config_route_v3_RouteAction_resize_hash_policy(envoy_config_route_v3_RouteAction* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_RouteAction_HashPolicy**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy* envoy_config_route_v3_RouteAction_add_hash_policy(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) { - upb_MiniTableField field = {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -4642,7 +4852,7 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy* envoy_config_rou return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_cors(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_CorsPolicy* value) { - const upb_MiniTableField field = {17, UPB_SIZE(40, 128), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {17, UPB_SIZE(40, 144), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__CorsPolicy_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4659,7 +4869,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster_not_found_response upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_max_grpc_timeout(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) { - const upb_MiniTableField field = {23, UPB_SIZE(48, 136), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {23, UPB_SIZE(48, 152), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4672,7 +4882,7 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_idle_timeout(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) { - const upb_MiniTableField field = {24, UPB_SIZE(52, 144), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {24, UPB_SIZE(52, 160), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4685,7 +4895,7 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu return sub; } UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig** envoy_config_route_v3_RouteAction_mutable_upgrade_configs(envoy_config_route_v3_RouteAction* msg, size_t* size) { - upb_MiniTableField field = {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__UpgradeConfig_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4697,12 +4907,12 @@ UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig** envoy_config_route_ } } UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig** envoy_config_route_v3_RouteAction_resize_upgrade_configs(envoy_config_route_v3_RouteAction* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_RouteAction_UpgradeConfig**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_route_v3_RouteAction_UpgradeConfig* envoy_config_route_v3_RouteAction_add_upgrade_configs(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) { - upb_MiniTableField field = {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__UpgradeConfig_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -4721,7 +4931,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_set_internal_redirect_action(e upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_hedge_policy(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_HedgePolicy* value) { - const upb_MiniTableField field = {27, UPB_SIZE(64, 160), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {27, UPB_SIZE(64, 176), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__HedgePolicy_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4734,7 +4944,7 @@ UPB_INLINE struct envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_Route return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_grpc_timeout_offset(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) { - const upb_MiniTableField field = {28, UPB_SIZE(68, 168), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {28, UPB_SIZE(68, 184), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4747,11 +4957,11 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_host_rewrite_header(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { - const upb_MiniTableField field = {29, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {29, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteAction_mutable_request_mirror_policies(envoy_config_route_v3_RouteAction* msg, size_t* size) { - upb_MiniTableField field = {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -4763,12 +4973,12 @@ UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_ } } UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteAction_resize_request_mirror_policies(envoy_config_route_v3_RouteAction* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_config_route_v3_RouteAction_add_request_mirror_policies(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) { - upb_MiniTableField field = {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -4783,7 +4993,7 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_c return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_max_internal_redirects(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_UInt32Value* value) { - const upb_MiniTableField field = {31, UPB_SIZE(76, 184), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(76, 200), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4796,7 +5006,7 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteAction return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_regex_rewrite(envoy_config_route_v3_RouteAction *msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute* value) { - const upb_MiniTableField field = {32, UPB_SIZE(80, 192), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {32, UPB_SIZE(80, 208), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatchAndSubstitute_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4809,7 +5019,7 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_ro return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_retry_policy_typed_config(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Any* value) { - const upb_MiniTableField field = {33, UPB_SIZE(84, 200), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {33, UPB_SIZE(84, 216), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4822,7 +5032,7 @@ UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RouteAction_mutable return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_internal_redirect_policy(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_InternalRedirectPolicy* value) { - const upb_MiniTableField field = {34, UPB_SIZE(88, 208), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {34, UPB_SIZE(88, 224), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__InternalRedirectPolicy_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4835,7 +5045,7 @@ UPB_INLINE struct envoy_config_route_v3_InternalRedirectPolicy* envoy_config_rou return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_host_rewrite_path_regex(envoy_config_route_v3_RouteAction *msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute* value) { - const upb_MiniTableField field = {35, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {35, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__matcher__v3__RegexMatchAndSubstitute_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4848,7 +5058,7 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_ro return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_max_stream_duration(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_RouteAction_MaxStreamDuration* value) { - const upb_MiniTableField field = {36, UPB_SIZE(92, 216), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {36, UPB_SIZE(92, 232), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__MaxStreamDuration_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4861,15 +5071,15 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_MaxStreamDuration* envoy_con return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster_specifier_plugin(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { - const upb_MiniTableField field = {37, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {37, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_append_x_forwarded_host(envoy_config_route_v3_RouteAction *msg, bool value) { - const upb_MiniTableField field = {38, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {38, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_set_inline_cluster_specifier_plugin(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_ClusterSpecifierPlugin* value) { - const upb_MiniTableField field = {39, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {39, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__ClusterSpecifierPlugin_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4882,7 +5092,7 @@ UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_rou return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_early_data_policy(envoy_config_route_v3_RouteAction *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) { - const upb_MiniTableField field = {40, UPB_SIZE(96, 224), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {40, UPB_SIZE(96, 240), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4895,7 +5105,7 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_ return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_set_path_rewrite_policy(envoy_config_route_v3_RouteAction *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) { - const upb_MiniTableField field = {41, UPB_SIZE(100, 232), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {41, UPB_SIZE(100, 248), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -4907,6 +5117,27 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_ } return sub; } +UPB_INLINE void envoy_config_route_v3_RouteAction_set_flush_timeout(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) { + const upb_MiniTableField field = {42, UPB_SIZE(104, 256), 80, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_flush_timeout(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) { + struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_flush_timeout(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Duration*)_upb_Message_New(&google__protobuf__Duration_msg_init, arena); + if (sub) envoy_config_route_v3_RouteAction_set_flush_timeout(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_config_route_v3_RouteAction_set_host_rewrite(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { + const upb_MiniTableField field = {44, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_route_v3_RouteAction_set_path_rewrite(envoy_config_route_v3_RouteAction *msg, upb_StringView value) { + const upb_MiniTableField field = {45, UPB_SIZE(124, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.config.route.v3.RouteAction.RequestMirrorPolicy */ @@ -4945,59 +5176,59 @@ UPB_INLINE char* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_serialize return ptr; } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_cluster(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_RequestMirrorPolicy_cluster(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_runtime_fraction(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_runtime_fraction(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { const struct envoy_config_core_v3_RuntimeFractionalPercent* default_val = NULL; const struct envoy_config_core_v3_RuntimeFractionalPercent* ret; - const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__RuntimeFractionalPercent_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_RequestMirrorPolicy_has_runtime_fraction(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_trace_sampled(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_trace_sampled(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { const struct google_protobuf_BoolValue* default_val = NULL; const struct google_protobuf_BoolValue* ret; - const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_RouteAction_RequestMirrorPolicy_has_trace_sampled(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_cluster_header(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_RequestMirrorPolicy_cluster_header(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {5, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -5014,13 +5245,60 @@ UPB_INLINE bool envoy_config_route_v3_RouteAction_RequestMirrorPolicy_disable_sh &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_request_headers_mutations(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { + const upb_MiniTableField field = {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_common_mutation_rules_v3_HeaderMutation* const* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_request_headers_mutations(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, size_t* size) { + const upb_MiniTableField field = {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct envoy_config_common_mutation_rules_v3_HeaderMutation* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_config_route_v3_RouteAction_RequestMirrorPolicy_request_headers_mutations_upb_array(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, size_t* size) { + const upb_MiniTableField field = {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_config_route_v3_RouteAction_RequestMirrorPolicy_request_headers_mutations_mutable_upb_array(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_host_rewrite_literal(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(40, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_RequestMirrorPolicy_host_rewrite_literal(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {8, UPB_SIZE(40, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_cluster(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_runtime_fraction(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, struct envoy_config_core_v3_RuntimeFractionalPercent* value) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__RuntimeFractionalPercent_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -5033,7 +5311,7 @@ UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_ro return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_trace_sampled(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, struct google_protobuf_BoolValue* value) { - const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -5046,13 +5324,49 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_R return sub; } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_cluster_header(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, upb_StringView value) { - const upb_MiniTableField field = {5, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_disable_shadow_host_suffix_append(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, bool value) { const upb_MiniTableField field = {6, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE struct envoy_config_common_mutation_rules_v3_HeaderMutation** envoy_config_route_v3_RouteAction_RequestMirrorPolicy_mutable_request_headers_mutations(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, size_t* size) { + upb_MiniTableField field = {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct envoy_config_common_mutation_rules_v3_HeaderMutation**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct envoy_config_common_mutation_rules_v3_HeaderMutation** envoy_config_route_v3_RouteAction_RequestMirrorPolicy_resize_request_headers_mutations(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct envoy_config_common_mutation_rules_v3_HeaderMutation**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_config_common_mutation_rules_v3_HeaderMutation* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_add_request_headers_mutations(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, upb_Arena* arena) { + upb_MiniTableField field = {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_config_common_mutation_rules_v3_HeaderMutation* sub = (struct envoy_config_common_mutation_rules_v3_HeaderMutation*)_upb_Message_New(&envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} +UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_host_rewrite_literal(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, upb_StringView value) { + const upb_MiniTableField field = {8, UPB_SIZE(40, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.config.route.v3.RouteAction.HashPolicy */ @@ -7579,6 +7893,23 @@ UPB_INLINE bool envoy_config_route_v3_DirectResponseAction_has_body(const envoy_ const upb_MiniTableField field = {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_route_v3_DirectResponseAction_clear_body_format(envoy_config_route_v3_DirectResponseAction* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_SubstitutionFormatString* envoy_config_route_v3_DirectResponseAction_body_format(const envoy_config_route_v3_DirectResponseAction* msg) { + const struct envoy_config_core_v3_SubstitutionFormatString* default_val = NULL; + const struct envoy_config_core_v3_SubstitutionFormatString* ret; + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__SubstitutionFormatString_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_route_v3_DirectResponseAction_has_body_format(const envoy_config_route_v3_DirectResponseAction* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_route_v3_DirectResponseAction_set_status(envoy_config_route_v3_DirectResponseAction *msg, uint32_t value) { const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; @@ -7597,6 +7928,19 @@ UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_route_v3_DirectR } return sub; } +UPB_INLINE void envoy_config_route_v3_DirectResponseAction_set_body_format(envoy_config_route_v3_DirectResponseAction *msg, struct envoy_config_core_v3_SubstitutionFormatString* value) { + const upb_MiniTableField field = {3, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__SubstitutionFormatString_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_SubstitutionFormatString* envoy_config_route_v3_DirectResponseAction_mutable_body_format(envoy_config_route_v3_DirectResponseAction* msg, upb_Arena* arena) { + struct envoy_config_core_v3_SubstitutionFormatString* sub = (struct envoy_config_core_v3_SubstitutionFormatString*)envoy_config_route_v3_DirectResponseAction_body_format(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_SubstitutionFormatString*)_upb_Message_New(&envoy__config__core__v3__SubstitutionFormatString_msg_init, arena); + if (sub) envoy_config_route_v3_DirectResponseAction_set_body_format(msg, sub); + } + return sub; +} /* envoy.config.route.v3.NonForwardingAction */ @@ -7757,62 +8101,62 @@ UPB_INLINE char* envoy_config_route_v3_Tracing_serialize_ex(const envoy_config_r return ptr; } UPB_INLINE void envoy_config_route_v3_Tracing_clear_client_sampling(envoy_config_route_v3_Tracing* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_client_sampling(const envoy_config_route_v3_Tracing* msg) { const struct envoy_type_v3_FractionalPercent* default_val = NULL; const struct envoy_type_v3_FractionalPercent* ret; - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__FractionalPercent_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Tracing_has_client_sampling(const envoy_config_route_v3_Tracing* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Tracing_clear_random_sampling(envoy_config_route_v3_Tracing* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_random_sampling(const envoy_config_route_v3_Tracing* msg) { const struct envoy_type_v3_FractionalPercent* default_val = NULL; const struct envoy_type_v3_FractionalPercent* ret; - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__FractionalPercent_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Tracing_has_random_sampling(const envoy_config_route_v3_Tracing* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Tracing_clear_overall_sampling(envoy_config_route_v3_Tracing* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_overall_sampling(const envoy_config_route_v3_Tracing* msg) { const struct envoy_type_v3_FractionalPercent* default_val = NULL; const struct envoy_type_v3_FractionalPercent* ret; - const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__FractionalPercent_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_route_v3_Tracing_has_overall_sampling(const envoy_config_route_v3_Tracing* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_route_v3_Tracing_clear_custom_tags(envoy_config_route_v3_Tracing* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_config_route_v3_Tracing_custom_tags(const envoy_config_route_v3_Tracing* msg, size_t* size) { - const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -7824,7 +8168,7 @@ UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_config_rou } } UPB_INLINE const upb_Array* _envoy_config_route_v3_Tracing_custom_tags_upb_array(const envoy_config_route_v3_Tracing* msg, size_t* size) { - const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -7833,7 +8177,7 @@ UPB_INLINE const upb_Array* _envoy_config_route_v3_Tracing_custom_tags_upb_array return arr; } UPB_INLINE upb_Array* _envoy_config_route_v3_Tracing_custom_tags_mutable_upb_array(envoy_config_route_v3_Tracing* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -7842,9 +8186,33 @@ UPB_INLINE upb_Array* _envoy_config_route_v3_Tracing_custom_tags_mutable_upb_arr } return arr; } +UPB_INLINE void envoy_config_route_v3_Tracing_clear_operation(envoy_config_route_v3_Tracing* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_route_v3_Tracing_operation(const envoy_config_route_v3_Tracing* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_route_v3_Tracing_clear_upstream_operation(envoy_config_route_v3_Tracing* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_config_route_v3_Tracing_upstream_operation(const envoy_config_route_v3_Tracing* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {6, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_config_route_v3_Tracing_set_client_sampling(envoy_config_route_v3_Tracing *msg, struct envoy_type_v3_FractionalPercent* value) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__FractionalPercent_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -7857,7 +8225,7 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing return sub; } UPB_INLINE void envoy_config_route_v3_Tracing_set_random_sampling(envoy_config_route_v3_Tracing *msg, struct envoy_type_v3_FractionalPercent* value) { - const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__FractionalPercent_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -7870,7 +8238,7 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing return sub; } UPB_INLINE void envoy_config_route_v3_Tracing_set_overall_sampling(envoy_config_route_v3_Tracing *msg, struct envoy_type_v3_FractionalPercent* value) { - const upb_MiniTableField field = {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__FractionalPercent_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -7883,7 +8251,7 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing return sub; } UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_config_route_v3_Tracing_mutable_custom_tags(envoy_config_route_v3_Tracing* msg, size_t* size) { - upb_MiniTableField field = {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -7895,12 +8263,12 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_config_route_v3_Tracin } } UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_config_route_v3_Tracing_resize_custom_tags(envoy_config_route_v3_Tracing* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (struct envoy_type_tracing_v3_CustomTag**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_config_route_v3_Tracing_add_custom_tags(envoy_config_route_v3_Tracing* msg, upb_Arena* arena) { - upb_MiniTableField field = {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -7914,6 +8282,14 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_config_route_v3_Tracing (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); return sub; } +UPB_INLINE void envoy_config_route_v3_Tracing_set_operation(envoy_config_route_v3_Tracing *msg, upb_StringView value) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_route_v3_Tracing_set_upstream_operation(envoy_config_route_v3_Tracing *msg, upb_StringView value) { + const upb_MiniTableField field = {6, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.config.route.v3.VirtualCluster */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c index ee7784b2db4..69fa260a700 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c @@ -9,9 +9,12 @@ #include #include "upb/generated_code_support.h" #include "envoy/config/route/v3/route_components.upb_minitable.h" +#include "envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h" #include "envoy/config/core/v3/base.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/proxy_protocol.upb_minitable.h" +#include "envoy/config/core/v3/substitution_format_string.upb_minitable.h" +#include "envoy/type/matcher/v3/filter_state.upb_minitable.h" #include "envoy/type/matcher/v3/metadata.upb_minitable.h" #include "envoy/type/matcher/v3/regex.upb_minitable.h" #include "envoy/type/matcher/v3/string.upb_minitable.h" @@ -33,7 +36,7 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_config_route_v3_VirtualHost__submsgs[14] = { +static const upb_MiniTableSubInternal envoy_config_route_v3_VirtualHost__submsgs[15] = { {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__Route_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__VirtualCluster_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RateLimit_msg_init_ptr}, @@ -48,10 +51,11 @@ static const upb_MiniTableSubInternal envoy_config_route_v3_VirtualHost__submsgs {.UPB_PRIVATE(submsg) = &xds__type__matcher__v3__Matcher_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__Metadata_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__UInt64Value_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_VirtualHost__fields[22] = { - {1, UPB_SIZE(84, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_route_v3_VirtualHost__fields[23] = { + {1, UPB_SIZE(88, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(12, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(16, 40), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(20, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, @@ -73,12 +77,13 @@ static const upb_MiniTableField envoy_config_route_v3_VirtualHost__fields[22] = {22, UPB_SIZE(76, 152), 0, 12, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {23, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {24, UPB_SIZE(80, 160), 70, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {25, UPB_SIZE(84, 168), 71, 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__VirtualHost_msg_init = { &envoy_config_route_v3_VirtualHost__submsgs[0], &envoy_config_route_v3_VirtualHost__fields[0], - UPB_SIZE(96, 168), 22, kUpb_ExtMode_NonExtendable, 8, UPB_FASTTABLE_MASK(248), 0, + UPB_SIZE(96, 176), 23, kUpb_ExtMode_NonExtendable, 8, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.VirtualHost", #endif @@ -182,7 +187,7 @@ const upb_MiniTable envoy__config__route__v3__RouteList_msg_init = { }; const upb_MiniTable* envoy__config__route__v3__RouteList_msg_init_ptr = &envoy__config__route__v3__RouteList_msg_init; -static const upb_MiniTableSubInternal envoy_config_route_v3_Route__submsgs[13] = { +static const upb_MiniTableSubInternal envoy_config_route_v3_Route__submsgs[14] = { {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteMatch_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteAction_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RedirectAction_msg_init_ptr}, @@ -196,44 +201,46 @@ static const upb_MiniTableSubInternal envoy_config_route_v3_Route__submsgs[13] = {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__FilterAction_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__NonForwardingAction_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__UInt64Value_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_Route__fields[17] = { +static const upb_MiniTableField envoy_config_route_v3_Route__fields[18] = { {1, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(16, 56), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(20, 64), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {7, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {9, UPB_SIZE(24, 72), 0, 6, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {10, UPB_SIZE(28, 80), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {11, UPB_SIZE(32, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {12, UPB_SIZE(36, 96), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {13, UPB_SIZE(40, 104), 0, 8, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {14, UPB_SIZE(60, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {14, UPB_SIZE(64, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {15, UPB_SIZE(44, 112), 67, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {16, UPB_SIZE(48, 120), 68, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {17, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {18, UPB_SIZE(56, 128), UPB_SIZE(-53, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {19, UPB_SIZE(68, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {17, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 11, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {18, UPB_SIZE(60, 136), UPB_SIZE(-57, -13), 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {19, UPB_SIZE(72, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {20, UPB_SIZE(52, 128), 69, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__Route_msg_init = { &envoy_config_route_v3_Route__submsgs[0], &envoy_config_route_v3_Route__fields[0], - UPB_SIZE(80, 136), 17, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(248), 0, + UPB_SIZE(80, 144), 18, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.Route", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0080000c02010012, &upb_pom_1bt_max256b}, - {0x0080000c0302001a, &upb_pom_1bt_max128b}, + {0x0088000c02010012, &upb_pom_1bt_maxmaxb}, + {0x0088000c0302001a, &upb_pom_1bt_max128b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0080000c0705003a, &upb_pom_1bt_max64b}, + {0x0088000c0705003a, &upb_pom_1bt_max64b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x004800003f06004a, &upb_prm_1bt_maxmaxb}, {0x005000003f070052, &upb_prm_1bt_maxmaxb}, @@ -243,8 +250,8 @@ const upb_MiniTable envoy__config__route__v3__Route_msg_init = { {0x001000003f000072, &upb_pss_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0080000c110b018a, &upb_pom_2bt_max64b}, - {0x0080000c120c0192, &upb_pom_2bt_max64b}, + {0x0088000c110b018a, &upb_pom_2bt_max64b}, + {0x0088000c120c0192, &upb_pom_2bt_max64b}, {0x002000003f00019a, &upb_pss_2bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, @@ -285,22 +292,24 @@ const upb_MiniTable envoy__config__route__v3__Route__TypedPerFilterConfigEntry_m }; const upb_MiniTable* envoy__config__route__v3__Route__TypedPerFilterConfigEntry_msg_init_ptr = &envoy__config__route__v3__Route__TypedPerFilterConfigEntry_msg_init; -static const upb_MiniTableSubInternal envoy_config_route_v3_WeightedCluster__submsgs[2] = { +static const upb_MiniTableSubInternal envoy_config_route_v3_WeightedCluster__submsgs[3] = { {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__WeightedCluster__ClusterWeight_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_WeightedCluster__fields[4] = { +static const upb_MiniTableField envoy_config_route_v3_WeightedCluster__fields[5] = { {1, UPB_SIZE(12, 48), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(16, 56), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, 32, UPB_SIZE(-21, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {5, 32, UPB_SIZE(-21, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__WeightedCluster_msg_init = { &envoy_config_route_v3_WeightedCluster__submsgs[0], &envoy_config_route_v3_WeightedCluster__fields[0], - UPB_SIZE(40, 64), 4, kUpb_ExtMode_NonExtendable, 4, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(40, 64), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.WeightedCluster", #endif @@ -310,7 +319,7 @@ const upb_MiniTable envoy__config__route__v3__WeightedCluster_msg_init = { {0x001000003f000012, &upb_pss_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0020000c04000022, &upb_pos_1bt}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0020000c0502002a, &upb_pom_1bt_maxmaxb}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) @@ -414,7 +423,7 @@ const upb_MiniTable envoy__config__route__v3__ClusterSpecifierPlugin_msg_init = }; const upb_MiniTable* envoy__config__route__v3__ClusterSpecifierPlugin_msg_init_ptr = &envoy__config__route__v3__ClusterSpecifierPlugin_msg_init; -static const upb_MiniTableSubInternal envoy_config_route_v3_RouteMatch__submsgs[10] = { +static const upb_MiniTableSubInternal envoy_config_route_v3_RouteMatch__submsgs[11] = { {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__HeaderMatcher_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__QueryParameterMatcher_msg_init_ptr}, @@ -425,28 +434,30 @@ static const upb_MiniTableSubInternal envoy_config_route_v3_RouteMatch__submsgs[ {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteMatch__ConnectMatcher_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__MetadataMatcher_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__type__matcher__v3__FilterStateMatcher_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_RouteMatch__fields[13] = { - {1, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_route_v3_RouteMatch__fields[14] = { + {1, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {6, UPB_SIZE(16, 40), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {7, UPB_SIZE(20, 48), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {8, UPB_SIZE(24, 56), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {9, UPB_SIZE(28, 64), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {10, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {10, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {11, UPB_SIZE(32, 72), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {12, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {12, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {13, UPB_SIZE(36, 80), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {14, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {15, UPB_SIZE(44, 16), UPB_SIZE(-41, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {14, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {15, UPB_SIZE(48, 16), UPB_SIZE(-45, -13), 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {16, UPB_SIZE(40, 88), 0, 10, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__RouteMatch_msg_init = { &envoy_config_route_v3_RouteMatch__submsgs[0], &envoy_config_route_v3_RouteMatch__fields[0], - UPB_SIZE(56, 88), 13, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(120), 0, + UPB_SIZE(56, 96), 14, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.RouteMatch", #endif @@ -467,6 +478,22 @@ const upb_MiniTable envoy__config__route__v3__RouteMatch_msg_init = { {0x005000003f08006a, &upb_prm_1bt_maxmaxb}, {0x0010000c0e000072, &upb_pos_1bt}, {0x0010000c0f09007a, &upb_pom_1bt_maxmaxb}, + {0x005800003f0a0182, &upb_prm_2bt_maxmaxb}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; @@ -561,7 +588,7 @@ const upb_MiniTable envoy__config__route__v3__CorsPolicy_msg_init = { }; const upb_MiniTable* envoy__config__route__v3__CorsPolicy_msg_init_ptr = &envoy__config__route__v3__CorsPolicy_msg_init; -static const upb_MiniTableSubInternal envoy_config_route_v3_RouteAction__submsgs[24] = { +static const upb_MiniTableSubInternal envoy_config_route_v3_RouteAction__submsgs[25] = { {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__WeightedCluster_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__Metadata_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, @@ -586,106 +613,113 @@ static const upb_MiniTableSubInternal envoy_config_route_v3_RouteAction__submsgs {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__ClusterSpecifierPlugin_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_RouteAction__fields[34] = { - {1, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(12, 80), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {5, UPB_SIZE(112, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {6, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {7, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {8, UPB_SIZE(16, 88), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {9, UPB_SIZE(20, 96), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_route_v3_RouteAction__fields[37] = { + {1, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(12, 96), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(116, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(16, 104), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(20, 112), 66, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {11, UPB_SIZE(24, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, - {13, UPB_SIZE(28, 104), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {14, UPB_SIZE(32, 112), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {15, UPB_SIZE(36, 120), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {17, UPB_SIZE(40, 128), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {13, UPB_SIZE(28, 120), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {14, UPB_SIZE(32, 128), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {15, UPB_SIZE(36, 136), 0, 7, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {17, UPB_SIZE(40, 144), 68, 8, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {20, UPB_SIZE(44, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, - {23, UPB_SIZE(48, 136), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {24, UPB_SIZE(52, 144), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {25, UPB_SIZE(56, 152), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {23, UPB_SIZE(48, 152), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {24, UPB_SIZE(52, 160), 70, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {25, UPB_SIZE(56, 168), 0, 11, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {26, UPB_SIZE(60, 20), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, - {27, UPB_SIZE(64, 160), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {28, UPB_SIZE(68, 168), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {29, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {30, UPB_SIZE(72, 176), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {31, UPB_SIZE(76, 184), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {32, UPB_SIZE(80, 192), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {33, UPB_SIZE(84, 200), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {34, UPB_SIZE(88, 208), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {35, UPB_SIZE(128, 64), UPB_SIZE(-109, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {36, UPB_SIZE(92, 216), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {37, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {38, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {39, UPB_SIZE(120, 48), UPB_SIZE(-105, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {40, UPB_SIZE(96, 224), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {41, UPB_SIZE(100, 232), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {27, UPB_SIZE(64, 176), 71, 12, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {28, UPB_SIZE(68, 184), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {29, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {30, UPB_SIZE(72, 192), 0, 14, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {31, UPB_SIZE(76, 200), 73, 15, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {32, UPB_SIZE(80, 208), 74, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {33, UPB_SIZE(84, 216), 75, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {34, UPB_SIZE(88, 224), 76, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {35, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {36, UPB_SIZE(92, 232), 77, 20, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {37, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {38, 11, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {39, UPB_SIZE(132, 64), UPB_SIZE(-109, -25), 21, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {40, UPB_SIZE(96, 240), 78, 22, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {41, UPB_SIZE(100, 248), 79, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {42, UPB_SIZE(104, 256), 80, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {44, UPB_SIZE(140, 80), UPB_SIZE(-113, -29), kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {45, UPB_SIZE(124, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__RouteAction_msg_init = { &envoy_config_route_v3_RouteAction__submsgs[0], &envoy_config_route_v3_RouteAction__fields[0], - UPB_SIZE(136, 240), 34, kUpb_ExtMode_NonExtendable, 9, UPB_FASTTABLE_MASK(248), 0, + UPB_SIZE(152, 264), 37, kUpb_ExtMode_NonExtendable, 9, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.RouteAction", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x003000180100000a, &upb_pos_1bt}, - {0x0030001802000012, &upb_pos_1bt}, - {0x003000180300001a, &upb_pom_1bt_max128b}, + {0x004000180100000a, &upb_pos_1bt}, + {0x0040001802000012, &upb_pos_1bt}, + {0x004000180300001a, &upb_pom_1bt_max128b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x002000003f00002a, &upb_pss_1bt}, - {0x0040001c06000032, &upb_pos_1bt}, - {0x0040001c0702003a, &upb_pom_1bt_maxmaxb}, + {0x0050001c06000032, &upb_pos_1bt}, + {0x0050001c0702003a, &upb_pom_1bt_maxmaxb}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000c00003f000058, &upb_psv4_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x006800003f05006a, &upb_prm_1bt_max128b}, + {0x007800003f05006a, &upb_prm_1bt_max128b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x007800003f07007a, &upb_prm_1bt_max64b}, + {0x008800003f07007a, &upb_prm_1bt_max64b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0040001c2313029a, &upb_pom_2bt_maxmaxb}, + {0x0050001c2313029a, &upb_pom_2bt_maxmaxb}, {0x001000003f0001a0, &upb_psv4_2bt}, - {0x00300018250002aa, &upb_pos_2bt}, - {0x000a00003f0002b0, &upb_psb1_2bt}, - {0x00300018271502ba, &upb_pom_2bt_max64b}, + {0x00400018250002aa, &upb_pos_2bt}, + {0x000b00003f0002b0, &upb_psb1_2bt}, + {0x00400018271502ba, &upb_pom_2bt_max64b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x009800003f0b01ca, &upb_prm_2bt_max64b}, + {0x00a800003f0b01ca, &upb_prm_2bt_max64b}, {0x001400003f0001d0, &upb_psv4_2bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0040001c1d0001ea, &upb_pos_2bt}, - {0x00b000003f0e01f2, &upb_prm_2bt_max128b}, + {0x0050001c2c0002e2, &upb_pos_2bt}, + {0x0050001c1d0001ea, &upb_pos_2bt}, + {0x00c000003f0e01f2, &upb_prm_2bt_max128b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; const upb_MiniTable* envoy__config__route__v3__RouteAction_msg_init_ptr = &envoy__config__route__v3__RouteAction_msg_init; -static const upb_MiniTableSubInternal envoy_config_route_v3_RouteAction_RequestMirrorPolicy__submsgs[2] = { +static const upb_MiniTableSubInternal envoy_config_route_v3_RouteAction_RequestMirrorPolicy__submsgs[3] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__RuntimeFractionalPercent_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__common__mutation_0rules__v3__HeaderMutation_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_RouteAction_RequestMirrorPolicy__fields[5] = { - {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {5, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_route_v3_RouteAction_RequestMirrorPolicy__fields[7] = { + {1, UPB_SIZE(24, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(16, 72), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, 32, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {6, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(20, 80), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(40, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init = { &envoy_config_route_v3_RouteAction_RequestMirrorPolicy__submsgs[0], &envoy_config_route_v3_RouteAction_RequestMirrorPolicy__fields[0], - UPB_SIZE(40, 64), 5, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(48, 88), 7, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.RouteAction.RequestMirrorPolicy", #endif @@ -697,6 +731,14 @@ const upb_MiniTable envoy__config__route__v3__RouteAction__RequestMirrorPolicy_m {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x002000003f00002a, &upb_pss_1bt}, {0x000900003f000030, &upb_psb1_1bt}, + {0x005000003f02003a, &upb_prm_1bt_maxmaxb}, + {0x003000003f000042, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; @@ -1184,19 +1226,21 @@ const upb_MiniTable envoy__config__route__v3__RedirectAction_msg_init = { }; const upb_MiniTable* envoy__config__route__v3__RedirectAction_msg_init_ptr = &envoy__config__route__v3__RedirectAction_msg_init; -static const upb_MiniTableSubInternal envoy_config_route_v3_DirectResponseAction__submsgs[1] = { +static const upb_MiniTableSubInternal envoy_config_route_v3_DirectResponseAction__submsgs[2] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__DataSource_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__SubstitutionFormatString_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_DirectResponseAction__fields[2] = { +static const upb_MiniTableField envoy_config_route_v3_DirectResponseAction__fields[3] = { {1, 12, 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__DirectResponseAction_msg_init = { &envoy_config_route_v3_DirectResponseAction__submsgs[0], &envoy_config_route_v3_DirectResponseAction__fields[0], - 24, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, + UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(8), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.DirectResponseAction", #endif @@ -1247,17 +1291,19 @@ static const upb_MiniTableSubInternal envoy_config_route_v3_Tracing__submsgs[4] {.UPB_PRIVATE(submsg) = &envoy__type__tracing__v3__CustomTag_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_route_v3_Tracing__fields[4] = { - {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(24, 40), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_route_v3_Tracing__fields[6] = { + {1, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(24, 72), 0, 3, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(36, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__route__v3__Tracing_msg_init = { &envoy_config_route_v3_Tracing__submsgs[0], &envoy_config_route_v3_Tracing__fields[0], - UPB_SIZE(32, 48), 4, kUpb_ExtMode_NonExtendable, 4, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(48, 80), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.route.v3.Tracing", #endif @@ -1266,9 +1312,9 @@ const upb_MiniTable envoy__config__route__v3__Tracing_msg_init = { {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x002800003f030022, &upb_prm_1bt_maxmaxb}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x004800003f030022, &upb_prm_1bt_maxmaxb}, + {0x001000003f00002a, &upb_pss_1bt}, + {0x002000003f000032, &upb_pss_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h index ee8ba4abdf5..59b91c885a2 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h @@ -1110,6 +1110,23 @@ UPB_INLINE bool envoy_config_tap_v3_OutputConfig_streaming(const envoy_config_ta &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_tap_v3_OutputConfig_clear_min_streamed_sent_bytes(envoy_config_tap_v3_OutputConfig* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(24, 40), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_min_streamed_sent_bytes(const envoy_config_tap_v3_OutputConfig* msg) { + const struct google_protobuf_UInt32Value* default_val = NULL; + const struct google_protobuf_UInt32Value* ret; + const upb_MiniTableField field = {5, UPB_SIZE(24, 40), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_tap_v3_OutputConfig_has_min_streamed_sent_bytes(const envoy_config_tap_v3_OutputConfig* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(24, 40), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE envoy_config_tap_v3_OutputSink** envoy_config_tap_v3_OutputConfig_mutable_sinks(envoy_config_tap_v3_OutputConfig* msg, size_t* size) { upb_MiniTableField field = {1, UPB_SIZE(12, 16), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -1173,6 +1190,19 @@ UPB_INLINE void envoy_config_tap_v3_OutputConfig_set_streaming(envoy_config_tap_ const upb_MiniTableField field = {4, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_tap_v3_OutputConfig_set_min_streamed_sent_bytes(envoy_config_tap_v3_OutputConfig *msg, struct google_protobuf_UInt32Value* value) { + const upb_MiniTableField field = {5, UPB_SIZE(24, 40), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_mutable_min_streamed_sent_bytes(envoy_config_tap_v3_OutputConfig* msg, upb_Arena* arena) { + struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_tap_v3_OutputConfig_min_streamed_sent_bytes(msg); + if (sub == NULL) { + sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google__protobuf__UInt32Value_msg_init, arena); + if (sub) envoy_config_tap_v3_OutputConfig_set_min_streamed_sent_bytes(msg, sub); + } + return sub; +} /* envoy.config.tap.v3.OutputSink */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c index 740ddde147a..f802d16daa7 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c @@ -192,23 +192,25 @@ const upb_MiniTable envoy__config__tap__v3__HttpGenericBodyMatch__GenericTextMat }; const upb_MiniTable* envoy__config__tap__v3__HttpGenericBodyMatch__GenericTextMatch_msg_init_ptr = &envoy__config__tap__v3__HttpGenericBodyMatch__GenericTextMatch_msg_init; -static const upb_MiniTableSubInternal envoy_config_tap_v3_OutputConfig__submsgs[3] = { +static const upb_MiniTableSubInternal envoy_config_tap_v3_OutputConfig__submsgs[4] = { {.UPB_PRIVATE(submsg) = &envoy__config__tap__v3__OutputSink_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_tap_v3_OutputConfig__fields[4] = { +static const upb_MiniTableField envoy_config_tap_v3_OutputConfig__fields[5] = { {1, UPB_SIZE(12, 16), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 24), 64, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(20, 32), 65, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(24, 40), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__tap__v3__OutputConfig_msg_init = { &envoy_config_tap_v3_OutputConfig__submsgs[0], &envoy_config_tap_v3_OutputConfig__fields[0], - UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(32, 48), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.tap.v3.OutputConfig", #endif diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h index f6cb94a8c2b..8bcc9b2c2d0 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h @@ -16,6 +16,7 @@ #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/grpc_service.upb_minitable.h" #include "envoy/config/core/v3/http_service.upb_minitable.h" +#include "google/protobuf/wrappers.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" @@ -30,6 +31,7 @@ typedef struct envoy_config_trace_v3_OpenTelemetryConfig { upb_Message UPB_PRIVA struct envoy_config_core_v3_GrpcService; struct envoy_config_core_v3_HttpService; struct envoy_config_core_v3_TypedExtensionConfig; +struct google_protobuf_UInt32Value; @@ -87,13 +89,13 @@ UPB_INLINE bool envoy_config_trace_v3_OpenTelemetryConfig_has_grpc_service(const return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_clear_service_name(envoy_config_trace_v3_OpenTelemetryConfig* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_trace_v3_OpenTelemetryConfig_service_name(const envoy_config_trace_v3_OpenTelemetryConfig* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {2, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -167,6 +169,23 @@ UPB_INLINE bool envoy_config_trace_v3_OpenTelemetryConfig_has_sampler(const envo const upb_MiniTableField field = {5, UPB_SIZE(24, 56), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_clear_max_cache_size(envoy_config_trace_v3_OpenTelemetryConfig* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 67, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_trace_v3_OpenTelemetryConfig_max_cache_size(const envoy_config_trace_v3_OpenTelemetryConfig* msg) { + const struct google_protobuf_UInt32Value* default_val = NULL; + const struct google_protobuf_UInt32Value* ret; + const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 67, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_trace_v3_OpenTelemetryConfig_has_max_cache_size(const envoy_config_trace_v3_OpenTelemetryConfig* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 67, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_set_grpc_service(envoy_config_trace_v3_OpenTelemetryConfig *msg, struct envoy_config_core_v3_GrpcService* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -182,7 +201,7 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenTe return sub; } UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_set_service_name(envoy_config_trace_v3_OpenTelemetryConfig *msg, upb_StringView value) { - const upb_MiniTableField field = {2, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_set_http_service(envoy_config_trace_v3_OpenTelemetryConfig *msg, struct envoy_config_core_v3_HttpService* value) { @@ -243,6 +262,19 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_trace_ } return sub; } +UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_set_max_cache_size(envoy_config_trace_v3_OpenTelemetryConfig *msg, struct google_protobuf_UInt32Value* value) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 64), 67, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_trace_v3_OpenTelemetryConfig_mutable_max_cache_size(envoy_config_trace_v3_OpenTelemetryConfig* msg, upb_Arena* arena) { + struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_trace_v3_OpenTelemetryConfig_max_cache_size(msg); + if (sub == NULL) { + sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google__protobuf__UInt32Value_msg_init, arena); + if (sub) envoy_config_trace_v3_OpenTelemetryConfig_set_max_cache_size(msg, sub); + } + return sub; +} #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c index f3945146e3d..4f31921d612 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c @@ -12,6 +12,7 @@ #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/grpc_service.upb_minitable.h" #include "envoy/config/core/v3/http_service.upb_minitable.h" +#include "google/protobuf/wrappers.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" @@ -19,25 +20,27 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_config_trace_v3_OpenTelemetryConfig__submsgs[4] = { +static const upb_MiniTableSubInternal envoy_config_trace_v3_OpenTelemetryConfig__submsgs[5] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__GrpcService_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__HttpService_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_trace_v3_OpenTelemetryConfig__fields[5] = { +static const upb_MiniTableField envoy_config_trace_v3_OpenTelemetryConfig__fields[6] = { {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(32, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(16, 40), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(20, 48), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(24, 56), 66, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(28, 64), 67, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__trace__v3__OpenTelemetryConfig_msg_init = { &envoy_config_trace_v3_OpenTelemetryConfig__submsgs[0], &envoy_config_trace_v3_OpenTelemetryConfig__fields[0], - UPB_SIZE(40, 64), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.trace.v3.OpenTelemetryConfig", #endif diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h index 3e0bfb1a71d..9855c9c5b39 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h @@ -13,12 +13,12 @@ #include "envoy/config/trace/v3/zipkin.upb_minitable.h" +#include "envoy/config/core/v3/http_service.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "udpa/annotations/versioning.upb_minitable.h" -#include "validate/validate.upb_minitable.h" // Must be last. #include "upb/port/def.inc" @@ -28,6 +28,7 @@ extern "C" { #endif typedef struct envoy_config_trace_v3_ZipkinConfig { upb_Message UPB_PRIVATE(base); } envoy_config_trace_v3_ZipkinConfig; +struct envoy_config_core_v3_HttpService; struct google_protobuf_BoolValue; typedef enum { @@ -37,6 +38,11 @@ typedef enum { envoy_config_trace_v3_ZipkinConfig_GRPC = 3 } envoy_config_trace_v3_ZipkinConfig_CollectorEndpointVersion; +typedef enum { + envoy_config_trace_v3_ZipkinConfig_USE_B3 = 0, + envoy_config_trace_v3_ZipkinConfig_USE_B3_WITH_W3C_PROPAGATION = 1 +} envoy_config_trace_v3_ZipkinConfig_TraceContextOption; + /* envoy.config.trace.v3.ZipkinConfig */ @@ -76,25 +82,25 @@ UPB_INLINE char* envoy_config_trace_v3_ZipkinConfig_serialize_ex(const envoy_con return ptr; } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_cluster(envoy_config_trace_v3_ZipkinConfig* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(28, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_trace_v3_ZipkinConfig_collector_cluster(const envoy_config_trace_v3_ZipkinConfig* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(28, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_endpoint(envoy_config_trace_v3_ZipkinConfig* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(36, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_trace_v3_ZipkinConfig_collector_endpoint(const envoy_config_trace_v3_ZipkinConfig* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(36, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -112,20 +118,20 @@ UPB_INLINE bool envoy_config_trace_v3_ZipkinConfig_trace_id_128bit(const envoy_c return ret; } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_shared_span_context(envoy_config_trace_v3_ZipkinConfig* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 72), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_trace_v3_ZipkinConfig_shared_span_context(const envoy_config_trace_v3_ZipkinConfig* msg) { const struct google_protobuf_BoolValue* default_val = NULL; const struct google_protobuf_BoolValue* ret; - const upb_MiniTableField field = {4, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 72), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_config_trace_v3_ZipkinConfig_has_shared_span_context(const envoy_config_trace_v3_ZipkinConfig* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 72), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_endpoint_version(envoy_config_trace_v3_ZipkinConfig* msg) { @@ -141,13 +147,13 @@ UPB_INLINE int32_t envoy_config_trace_v3_ZipkinConfig_collector_endpoint_version return ret; } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_hostname(envoy_config_trace_v3_ZipkinConfig* msg) { - const upb_MiniTableField field = {6, UPB_SIZE(36, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(44, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_config_trace_v3_ZipkinConfig_collector_hostname(const envoy_config_trace_v3_ZipkinConfig* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {6, UPB_SIZE(36, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(44, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -164,13 +170,42 @@ UPB_INLINE bool envoy_config_trace_v3_ZipkinConfig_split_spans_for_request(const &default_val, &ret); return ret; } +UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_trace_context_option(envoy_config_trace_v3_ZipkinConfig* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(20, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t envoy_config_trace_v3_ZipkinConfig_trace_context_option(const envoy_config_trace_v3_ZipkinConfig* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {8, UPB_SIZE(20, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_service(envoy_config_trace_v3_ZipkinConfig* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(24, 80), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_HttpService* envoy_config_trace_v3_ZipkinConfig_collector_service(const envoy_config_trace_v3_ZipkinConfig* msg) { + const struct envoy_config_core_v3_HttpService* default_val = NULL; + const struct envoy_config_core_v3_HttpService* ret; + const upb_MiniTableField field = {9, UPB_SIZE(24, 80), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HttpService_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_config_trace_v3_ZipkinConfig_has_collector_service(const envoy_config_trace_v3_ZipkinConfig* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(24, 80), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_collector_cluster(envoy_config_trace_v3_ZipkinConfig *msg, upb_StringView value) { - const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(28, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_collector_endpoint(envoy_config_trace_v3_ZipkinConfig *msg, upb_StringView value) { - const upb_MiniTableField field = {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(36, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_trace_id_128bit(envoy_config_trace_v3_ZipkinConfig *msg, bool value) { @@ -178,7 +213,7 @@ UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_trace_id_128bit(envoy_con upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_shared_span_context(envoy_config_trace_v3_ZipkinConfig *msg, struct google_protobuf_BoolValue* value) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(12, 72), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -195,13 +230,30 @@ UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_collector_endpoint_versio upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_collector_hostname(envoy_config_trace_v3_ZipkinConfig *msg, upb_StringView value) { - const upb_MiniTableField field = {6, UPB_SIZE(36, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {6, UPB_SIZE(44, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_split_spans_for_request(envoy_config_trace_v3_ZipkinConfig *msg, bool value) { const upb_MiniTableField field = {7, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_trace_context_option(envoy_config_trace_v3_ZipkinConfig *msg, int32_t value) { + const upb_MiniTableField field = {8, UPB_SIZE(20, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_collector_service(envoy_config_trace_v3_ZipkinConfig *msg, struct envoy_config_core_v3_HttpService* value) { + const upb_MiniTableField field = {9, UPB_SIZE(24, 80), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__HttpService_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_HttpService* envoy_config_trace_v3_ZipkinConfig_mutable_collector_service(envoy_config_trace_v3_ZipkinConfig* msg, upb_Arena* arena) { + struct envoy_config_core_v3_HttpService* sub = (struct envoy_config_core_v3_HttpService*)envoy_config_trace_v3_ZipkinConfig_collector_service(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_HttpService*)_upb_Message_New(&envoy__config__core__v3__HttpService_msg_init, arena); + if (sub) envoy_config_trace_v3_ZipkinConfig_set_collector_service(msg, sub); + } + return sub; +} #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c index 25e2b1408d3..9c32fe8d07c 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c @@ -9,47 +9,58 @@ #include #include "upb/generated_code_support.h" #include "envoy/config/trace/v3/zipkin.upb_minitable.h" +#include "envoy/config/core/v3/http_service.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "udpa/annotations/versioning.upb_minitable.h" -#include "validate/validate.upb_minitable.h" // Must be last. #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_config_trace_v3_ZipkinConfig__submsgs[1] = { +static const upb_MiniTableSubInternal envoy_config_trace_v3_ZipkinConfig__submsgs[2] = { {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__HttpService_msg_init_ptr}, }; -static const upb_MiniTableField envoy_config_trace_v3_ZipkinConfig__fields[7] = { - {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_config_trace_v3_ZipkinConfig__fields[9] = { + {1, UPB_SIZE(28, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(36, 40), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {3, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(12, 64), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(12, 72), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(16, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, - {6, UPB_SIZE(36, 48), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(44, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {7, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(20, 16), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(24, 80), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__config__trace__v3__ZipkinConfig_msg_init = { &envoy_config_trace_v3_ZipkinConfig__submsgs[0], &envoy_config_trace_v3_ZipkinConfig__fields[0], - UPB_SIZE(48, 72), 7, kUpb_ExtMode_NonExtendable, 7, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(56, 88), 9, kUpb_ExtMode_NonExtendable, 9, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.config.trace.v3.ZipkinConfig", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x001000003f00000a, &upb_pss_1bt}, - {0x002000003f000012, &upb_pss_1bt}, + {0x001800003f00000a, &upb_pss_1bt}, + {0x002800003f000012, &upb_pss_1bt}, {0x000900003f000018, &upb_psb1_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000c00003f000028, &upb_psv4_1bt}, - {0x003000003f000032, &upb_pss_1bt}, + {0x003800003f000032, &upb_pss_1bt}, {0x000a00003f000038, &upb_psb1_1bt}, + {0x001000003f000040, &upb_psv4_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h index 758f9b2dd7c..f097177ece2 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h @@ -13,6 +13,7 @@ #include "envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h" +#include "envoy/config/core/v3/config_source.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "udpa/annotations/versioning.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -25,6 +26,8 @@ extern "C" { #endif typedef struct envoy_extensions_clusters_aggregate_v3_ClusterConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_clusters_aggregate_v3_ClusterConfig; +typedef struct envoy_extensions_clusters_aggregate_v3_AggregateClusterResource { upb_Message UPB_PRIVATE(base); } envoy_extensions_clusters_aggregate_v3_AggregateClusterResource; +struct envoy_config_core_v3_ConfigSource; @@ -126,6 +129,90 @@ UPB_INLINE bool envoy_extensions_clusters_aggregate_v3_ClusterConfig_add_cluster return true; } +/* envoy.extensions.clusters.aggregate.v3.AggregateClusterResource */ + +UPB_INLINE envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_new(upb_Arena* arena) { + return (envoy_extensions_clusters_aggregate_v3_AggregateClusterResource*)_upb_Message_New(&envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init, arena); +} +UPB_INLINE envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* ret = envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* ret = envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_serialize(const envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_serialize_ex(const envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_clear_config_source(envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_config_source(const envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg) { + const struct envoy_config_core_v3_ConfigSource* default_val = NULL; + const struct envoy_config_core_v3_ConfigSource* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__ConfigSource_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_has_config_source(const envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_clear_resource_name(envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_resource_name(const envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_set_config_source(envoy_extensions_clusters_aggregate_v3_AggregateClusterResource *msg, struct envoy_config_core_v3_ConfigSource* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__ConfigSource_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_mutable_config_source(envoy_extensions_clusters_aggregate_v3_AggregateClusterResource* msg, upb_Arena* arena) { + struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_config_source(msg); + if (sub == NULL) { + sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy__config__core__v3__ConfigSource_msg_init, arena); + if (sub) envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_set_config_source(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_set_resource_name(envoy_extensions_clusters_aggregate_v3_AggregateClusterResource *msg, upb_StringView value) { + const upb_MiniTableField field = {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c index 12299329574..60d4a3db312 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c @@ -9,6 +9,7 @@ #include #include "upb/generated_code_support.h" #include "envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h" +#include "envoy/config/core/v3/config_source.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "udpa/annotations/versioning.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -35,15 +36,41 @@ const upb_MiniTable envoy__extensions__clusters__aggregate__v3__ClusterConfig_ms }; const upb_MiniTable* envoy__extensions__clusters__aggregate__v3__ClusterConfig_msg_init_ptr = &envoy__extensions__clusters__aggregate__v3__ClusterConfig_msg_init; -static const upb_MiniTable *messages_layout[1] = { +static const upb_MiniTableSubInternal envoy_extensions_clusters_aggregate_v3_AggregateClusterResource__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__ConfigSource_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_extensions_clusters_aggregate_v3_AggregateClusterResource__fields[2] = { + {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init = { + &envoy_extensions_clusters_aggregate_v3_AggregateClusterResource__submsgs[0], + &envoy_extensions_clusters_aggregate_v3_AggregateClusterResource__fields[0], + UPB_SIZE(24, 40), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.clusters.aggregate.v3.AggregateClusterResource", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f000012, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init_ptr = &envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init; +static const upb_MiniTable *messages_layout[2] = { &envoy__extensions__clusters__aggregate__v3__ClusterConfig_msg_init, + &envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init, }; const upb_MiniTableFile envoy_extensions_clusters_aggregate_v3_cluster_proto_upb_file_layout = { messages_layout, NULL, NULL, - 1, + 2, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h index 30bbabd7a15..f7e4506e88e 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h @@ -20,6 +20,8 @@ extern "C" { extern const upb_MiniTable envoy__extensions__clusters__aggregate__v3__ClusterConfig_msg_init; extern const upb_MiniTable* envoy__extensions__clusters__aggregate__v3__ClusterConfig_msg_init_ptr; +extern const upb_MiniTable envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init; +extern const upb_MiniTable* envoy__extensions__clusters__aggregate__v3__AggregateClusterResource_msg_init_ptr; extern const upb_MiniTableFile envoy_extensions_clusters_aggregate_v3_cluster_proto_upb_file_layout; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h index 4978bcd3999..d86adea07e1 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h @@ -14,7 +14,6 @@ #include "envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h" #include "envoy/config/rbac/v3/rbac.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c index 4f442aa258d..d94542e0ae5 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c @@ -10,7 +10,6 @@ #include "upb/generated_code_support.h" #include "envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h" #include "envoy/config/rbac/v3/rbac.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h index ad500ec13b1..73263025306 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h @@ -67,20 +67,20 @@ UPB_INLINE char* envoy_extensions_filters_http_stateful_session_v3_StatefulSessi return ptr; } UPB_INLINE void envoy_extensions_filters_http_stateful_session_v3_StatefulSession_clear_session_state(envoy_extensions_filters_http_stateful_session_v3_StatefulSession* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_filters_http_stateful_session_v3_StatefulSession_session_state(const envoy_extensions_filters_http_stateful_session_v3_StatefulSession* msg) { const struct envoy_config_core_v3_TypedExtensionConfig* default_val = NULL; const struct envoy_config_core_v3_TypedExtensionConfig* ret; - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_http_stateful_session_v3_StatefulSession_has_session_state(const envoy_extensions_filters_http_stateful_session_v3_StatefulSession* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_http_stateful_session_v3_StatefulSession_clear_strict(envoy_extensions_filters_http_stateful_session_v3_StatefulSession* msg) { @@ -95,9 +95,21 @@ UPB_INLINE bool envoy_extensions_filters_http_stateful_session_v3_StatefulSessio &default_val, &ret); return ret; } +UPB_INLINE void envoy_extensions_filters_http_stateful_session_v3_StatefulSession_clear_stat_prefix(envoy_extensions_filters_http_stateful_session_v3_StatefulSession* msg) { + const upb_MiniTableField field = {3, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_extensions_filters_http_stateful_session_v3_StatefulSession_stat_prefix(const envoy_extensions_filters_http_stateful_session_v3_StatefulSession* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {3, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_extensions_filters_http_stateful_session_v3_StatefulSession_set_session_state(envoy_extensions_filters_http_stateful_session_v3_StatefulSession *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__TypedExtensionConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -113,6 +125,10 @@ UPB_INLINE void envoy_extensions_filters_http_stateful_session_v3_StatefulSessio const upb_MiniTableField field = {2, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_extensions_filters_http_stateful_session_v3_StatefulSession_set_stat_prefix(envoy_extensions_filters_http_stateful_session_v3_StatefulSession *msg, upb_StringView value) { + const upb_MiniTableField field = {3, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.extensions.filters.http.stateful_session.v3.StatefulSessionPerRoute */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c index f6a3e963d16..30101d55fef 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c @@ -21,15 +21,16 @@ static const upb_MiniTableSubInternal envoy_extensions_filters_http_stateful_ses {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_filters_http_stateful_session_v3_StatefulSession__fields[2] = { - {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_extensions_filters_http_stateful_session_v3_StatefulSession__fields[3] = { + {1, UPB_SIZE(12, 32), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {3, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__filters__http__stateful_0session__v3__StatefulSession_msg_init = { &envoy_extensions_filters_http_stateful_session_v3_StatefulSession__submsgs[0], &envoy_extensions_filters_http_stateful_session_v3_StatefulSession__fields[0], - UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, + UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.filters.http.stateful_session.v3.StatefulSession", #endif @@ -37,7 +38,7 @@ const upb_MiniTable envoy__extensions__filters__http__stateful_0session__v3__Sta {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000900003f000010, &upb_psb1_1bt}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00001a, &upb_pss_1bt}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h index 61bb6d2b5c3..8bf30c344dd 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h @@ -29,6 +29,7 @@ #include "google/protobuf/any.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" +#include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/security.upb_minitable.h" @@ -47,6 +48,7 @@ typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpC typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing { upb_Message UPB_PRIVATE(base); } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing; typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig; typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails { upb_Message UPB_PRIVATE(base); } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails; +typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig; typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig; typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions { upb_Message UPB_PRIVATE(base); } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions; typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig; @@ -88,6 +90,7 @@ struct google_protobuf_Any; struct google_protobuf_BoolValue; struct google_protobuf_Duration; struct google_protobuf_UInt32Value; +struct xds_type_matcher_v3_Matcher; typedef enum { envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_AUTO = 0, @@ -168,12 +171,12 @@ typedef enum { envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_NOT_SET = 0 } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases; UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_route_specifier(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager_msg_init, &field); } typedef enum { @@ -181,12 +184,12 @@ typedef enum { envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_NOT_SET = 0 } envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases; UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {42, UPB_SIZE(184, 368), UPB_SIZE(-181, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {42, UPB_SIZE(192, 384), UPB_SIZE(-189, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_strip_port_mode(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {42, UPB_SIZE(184, 368), UPB_SIZE(-181, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {42, UPB_SIZE(192, 384), UPB_SIZE(-189, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager_msg_init, &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_codec_type(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { @@ -202,49 +205,49 @@ UPB_INLINE int32_t envoy_extensions_filters_network_http_connection_manager_v3_H return ret; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_stat_prefix(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(188, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stat_prefix(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {2, UPB_SIZE(188, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_rds(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_Rds* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { const envoy_extensions_filters_network_http_connection_manager_v3_Rds* default_val = NULL; const envoy_extensions_filters_network_http_connection_manager_v3_Rds* ret; - const upb_MiniTableField field = {3, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__filters__network__http_0connection_0manager__v3__Rds_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_rds(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_route_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_route_v3_RouteConfiguration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { const struct envoy_config_route_v3_RouteConfiguration* default_val = NULL; const struct envoy_config_route_v3_RouteConfiguration* ret; - const upb_MiniTableField field = {4, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteConfiguration_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_route_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_http_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { @@ -351,13 +354,13 @@ UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Http return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_server_name(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {10, UPB_SIZE(196, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(204, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_server_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {10, UPB_SIZE(196, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(204, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -526,13 +529,13 @@ UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Http return ret; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_via(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {22, UPB_SIZE(204, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {22, UPB_SIZE(212, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_via(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {22, UPB_SIZE(204, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {22, UPB_SIZE(212, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -675,20 +678,20 @@ UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Http return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_scoped_routes(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {31, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_scoped_routes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* default_val = NULL; const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* ret; - const upb_MiniTableField field = {31, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__filters__network__http_0connection_0manager__v3__ScopedRoutes_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_scoped_routes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {31, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_preserve_external_request_id(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { @@ -837,19 +840,19 @@ UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Http return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_strip_any_host_port(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {42, UPB_SIZE(184, 368), UPB_SIZE(-181, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {42, UPB_SIZE(192, 384), UPB_SIZE(-189, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_any_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { bool default_val = false; bool ret; - const upb_MiniTableField field = {42, UPB_SIZE(184, 368), UPB_SIZE(-181, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {42, UPB_SIZE(192, 384), UPB_SIZE(-189, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_strip_any_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { - const upb_MiniTableField field = {42, UPB_SIZE(184, 368), UPB_SIZE(-181, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {42, UPB_SIZE(192, 384), UPB_SIZE(-189, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_path_normalization_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { @@ -1130,17 +1133,51 @@ UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Http &default_val, &ret); return ret; } +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_stream_flush_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { + const upb_MiniTableField field = {59, UPB_SIZE(172, 360), 91, 35, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stream_flush_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { + const struct google_protobuf_Duration* default_val = NULL; + const struct google_protobuf_Duration* ret; + const upb_MiniTableField field = {59, UPB_SIZE(172, 360), 91, 35, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_stream_flush_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { + const upb_MiniTableField field = {59, UPB_SIZE(172, 360), 91, 35, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_forward_client_cert_matcher(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { + const upb_MiniTableField field = {60, UPB_SIZE(176, 368), 92, 36, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct xds_type_matcher_v3_Matcher* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_forward_client_cert_matcher(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { + const struct xds_type_matcher_v3_Matcher* default_val = NULL; + const struct xds_type_matcher_v3_Matcher* ret; + const upb_MiniTableField field = {60, UPB_SIZE(176, 368), 92, 36, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__type__matcher__v3__Matcher_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_forward_client_cert_matcher(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { + const upb_MiniTableField field = {60, UPB_SIZE(176, 368), 92, 36, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_codec_type(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, int32_t value) { const upb_MiniTableField field = {1, 24, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_stat_prefix(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_StringView value) { - const upb_MiniTableField field = {2, UPB_SIZE(188, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_rds(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_Rds* value) { - const upb_MiniTableField field = {3, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__filters__network__http_0connection_0manager__v3__Rds_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1153,7 +1190,7 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Rd return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_route_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_route_v3_RouteConfiguration* value) { - const upb_MiniTableField field = {4, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteConfiguration_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1250,7 +1287,7 @@ UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_extensions_fi return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_server_name(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_StringView value) { - const upb_MiniTableField field = {10, UPB_SIZE(196, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(204, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_drain_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_Duration* value) { @@ -1358,7 +1395,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_via(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_StringView value) { - const upb_MiniTableField field = {22, UPB_SIZE(204, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {22, UPB_SIZE(212, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_upgrade_configs(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* size) { @@ -1472,7 +1509,7 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_ht return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_scoped_routes(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* value) { - const upb_MiniTableField field = {31, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {31, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__filters__network__http_0connection_0manager__v3__ScopedRoutes_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1570,7 +1607,7 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_htt return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_strip_any_host_port(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) { - const upb_MiniTableField field = {42, UPB_SIZE(184, 368), UPB_SIZE(-181, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {42, UPB_SIZE(192, 384), UPB_SIZE(-189, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_path_normalization_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* value) { @@ -1765,6 +1802,32 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http const upb_MiniTableField field = {58, 23, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_stream_flush_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_Duration* value) { + const upb_MiniTableField field = {59, UPB_SIZE(172, 360), 91, 35, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Duration_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_stream_flush_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) { + struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stream_flush_timeout(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Duration*)_upb_Message_New(&google__protobuf__Duration_msg_init, arena); + if (sub) envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_stream_flush_timeout(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_forward_client_cert_matcher(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct xds_type_matcher_v3_Matcher* value) { + const upb_MiniTableField field = {60, UPB_SIZE(176, 368), 92, 36, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__type__matcher__v3__Matcher_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_forward_client_cert_matcher(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) { + struct xds_type_matcher_v3_Matcher* sub = (struct xds_type_matcher_v3_Matcher*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_forward_client_cert_matcher(msg); + if (sub == NULL) { + sub = (struct xds_type_matcher_v3_Matcher*)_upb_Message_New(&xds__type__matcher__v3__Matcher_msg_init, arena); + if (sub) envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_forward_client_cert_matcher(msg, sub); + } + return sub; +} /* envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing */ @@ -1803,54 +1866,54 @@ UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_Htt return ptr; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_client_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_client_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { const struct envoy_type_v3_Percent* default_val = NULL; const struct envoy_type_v3_Percent* ret; - const upb_MiniTableField field = {3, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__Percent_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_client_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_random_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_random_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { const struct envoy_type_v3_Percent* default_val = NULL; const struct envoy_type_v3_Percent* ret; - const upb_MiniTableField field = {4, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__Percent_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_random_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_overall_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_overall_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { const struct envoy_type_v3_Percent* default_val = NULL; const struct envoy_type_v3_Percent* ret; - const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__Percent_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_overall_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_verbose(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { @@ -1866,28 +1929,28 @@ UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Http return ret; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_max_path_tag_length(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_max_path_tag_length(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { const struct google_protobuf_UInt32Value* default_val = NULL; const struct google_protobuf_UInt32Value* ret; - const upb_MiniTableField field = {7, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_max_path_tag_length(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {7, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_custom_tags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t* size) { - const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (arr) { @@ -1899,7 +1962,7 @@ UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_extensions } } UPB_INLINE const upb_Array* _envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_custom_tags_upb_array(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t* size) { - const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); if (size) { @@ -1908,7 +1971,7 @@ UPB_INLINE const upb_Array* _envoy_extensions_filters_network_http_connection_ma return arr; } UPB_INLINE upb_Array* _envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_custom_tags_mutable_upb_array(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t* size, upb_Arena* arena) { - const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), &field, arena); @@ -1918,42 +1981,66 @@ UPB_INLINE upb_Array* _envoy_extensions_filters_network_http_connection_manager_ return arr; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_provider(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(32, 88), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct envoy_config_trace_v3_Tracing_Http* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_provider(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { const struct envoy_config_trace_v3_Tracing_Http* default_val = NULL; const struct envoy_config_trace_v3_Tracing_Http* ret; - const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(32, 88), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__trace__v3__Tracing__Http_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_provider(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(32, 88), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_spawn_upstream_span(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(36, 96), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_spawn_upstream_span(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { const struct google_protobuf_BoolValue* default_val = NULL; const struct google_protobuf_BoolValue* ret; - const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(36, 96), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_spawn_upstream_span(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { - const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(36, 96), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_operation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { + const upb_MiniTableField field = {11, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_operation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {11, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_upstream_operation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { + const upb_MiniTableField field = {12, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_upstream_operation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {12, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_client_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct envoy_type_v3_Percent* value) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__Percent_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1966,7 +2053,7 @@ UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_c return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_random_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct envoy_type_v3_Percent* value) { - const upb_MiniTableField field = {4, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__Percent_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1979,7 +2066,7 @@ UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_c return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_overall_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct envoy_type_v3_Percent* value) { - const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__v3__Percent_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -1996,7 +2083,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_max_path_tag_length(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct google_protobuf_UInt32Value* value) { - const upb_MiniTableField field = {7, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {7, UPB_SIZE(24, 72), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -2009,7 +2096,7 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_ return sub; } UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t* size) { - upb_MiniTableField field = {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); if (arr) { @@ -2021,12 +2108,12 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_extensions_filters_net } } UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_resize_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t size, upb_Arena* arena) { - upb_MiniTableField field = {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (struct envoy_type_tracing_v3_CustomTag**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), &field, size, arena); } UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_add_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena) { - upb_MiniTableField field = {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_MiniTableField field = {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag_msg_init); upb_Array* arr = upb_Message_GetOrCreateMutableArray( UPB_UPCAST(msg), &field, arena); @@ -2041,7 +2128,7 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_extensions_filters_netw return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_provider(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct envoy_config_trace_v3_Tracing_Http* value) { - const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {9, UPB_SIZE(32, 88), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__trace__v3__Tracing__Http_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -2054,7 +2141,7 @@ UPB_INLINE struct envoy_config_trace_v3_Tracing_Http* envoy_extensions_filters_n return sub; } UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_spawn_upstream_span(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct google_protobuf_BoolValue* value) { - const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {10, UPB_SIZE(36, 96), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__BoolValue_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -2066,6 +2153,14 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_ht } return sub; } +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_operation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_StringView value) { + const upb_MiniTableField field = {11, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_upstream_operation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_StringView value) { + const upb_MiniTableField field = {12, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.InternalAddressConfig */ @@ -2320,6 +2415,90 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +/* envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.ForwardClientCertConfig */ + +UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_new(upb_Arena* arena) { + return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig*)_upb_Message_New(&envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init, arena); +} +UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* ret = envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* ret = envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_clear_forward_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg) { + const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_forward_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_clear_set_current_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg) { + const upb_MiniTableField field = {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_set_current_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg) { + const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* default_val = NULL; + const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* ret; + const upb_MiniTableField field = {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_has_set_current_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg) { + const upb_MiniTableField field = {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_set_forward_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig *msg, int32_t value) { + const upb_MiniTableField field = {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_set_set_current_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig *msg, envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* value) { + const upb_MiniTableField field = {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_mutable_set_current_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig* msg, upb_Arena* arena) { + struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_set_current_client_cert_details(msg); + if (sub == NULL) { + sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*)_upb_Message_New(&envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init, arena); + if (sub) envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_set_set_current_client_cert_details(msg, sub); + } + return sub; +} + /* envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.UpgradeConfig */ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_new(upb_Arena* arena) { diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c index 3dde613978b..b45d36061ef 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c @@ -25,6 +25,7 @@ #include "google/protobuf/any.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" +#include "xds/type/matcher/v3/matcher.upb_minitable.h" #include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/migrate.upb_minitable.h" #include "udpa/annotations/security.upb_minitable.h" @@ -36,7 +37,7 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__submsgs[35] = { +static const upb_MiniTableSubInternal envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__submsgs[37] = { {.UPB_PRIVATE(submsg) = &envoy__extensions__filters__network__http_0connection_0manager__v3__Rds_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteConfiguration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpFilter_msg_init_ptr}, @@ -72,19 +73,21 @@ static const upb_MiniTableSubInternal envoy_extensions_filters_network_http_conn {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__HcmAccessLogOptions_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &xds__type__matcher__v3__Matcher_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__fields[56] = { +static const upb_MiniTableField envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__fields[58] = { {1, 24, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(188, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(196, 56), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(28, 104), 0, 2, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {6, UPB_SIZE(32, 112), 64, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {7, UPB_SIZE(36, 120), 65, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {8, UPB_SIZE(40, 128), 66, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {9, UPB_SIZE(44, 136), 67, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {10, UPB_SIZE(196, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {10, UPB_SIZE(204, 72), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {12, UPB_SIZE(48, 144), 68, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {13, UPB_SIZE(52, 152), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {14, UPB_SIZE(56, 160), 69, 9, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -95,7 +98,7 @@ static const upb_MiniTableField envoy_extensions_filters_network_http_connection {19, UPB_SIZE(72, 32), 0, kUpb_NoSub, 13, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {20, 13, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {21, 14, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {22, UPB_SIZE(204, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {22, UPB_SIZE(212, 88), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {23, UPB_SIZE(76, 184), 0, 12, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {24, UPB_SIZE(80, 192), 72, 13, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {25, UPB_SIZE(84, 200), 73, 14, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -103,7 +106,7 @@ static const upb_MiniTableField envoy_extensions_filters_network_http_connection {28, UPB_SIZE(92, 216), 75, 16, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {29, UPB_SIZE(96, 224), 76, 17, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {30, UPB_SIZE(100, 232), 77, 18, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {31, UPB_SIZE(176, 360), UPB_SIZE(-173, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {31, UPB_SIZE(184, 376), UPB_SIZE(-181, -45), 19, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {32, 15, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {33, 16, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {34, UPB_SIZE(104, 36), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, @@ -114,7 +117,7 @@ static const upb_MiniTableField envoy_extensions_filters_network_http_connection {39, 18, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {40, UPB_SIZE(120, 264), 81, 23, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {41, UPB_SIZE(124, 272), 82, 24, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {42, UPB_SIZE(184, 368), UPB_SIZE(-181, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {42, UPB_SIZE(192, 384), UPB_SIZE(-189, -49), kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {43, UPB_SIZE(128, 280), 83, 25, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {44, UPB_SIZE(132, 288), 84, 26, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {45, UPB_SIZE(136, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, @@ -131,12 +134,14 @@ static const upb_MiniTableField envoy_extensions_filters_network_http_connection {56, UPB_SIZE(168, 352), 90, 34, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {57, 22, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {58, 23, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {59, UPB_SIZE(172, 360), 91, 35, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {60, UPB_SIZE(176, 368), 92, 36, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager_msg_init = { &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__submsgs[0], &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__fields[0], - UPB_SIZE(216, 376), 56, kUpb_ExtMode_NonExtendable, 10, UPB_FASTTABLE_MASK(248), 0, + UPB_SIZE(224, 392), 58, kUpb_ExtMode_NonExtendable, 10, UPB_FASTTABLE_MASK(248), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager", #endif @@ -144,8 +149,8 @@ const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manag {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x001800003f000008, &upb_psv4_1bt}, {0x003800003f000012, &upb_pss_1bt}, - {0x0168002c0300001a, &upb_pom_1bt_max64b}, - {0x0168002c04010022, &upb_pom_1bt_maxmaxb}, + {0x0178002c0300001a, &upb_pom_1bt_max64b}, + {0x0178002c04010022, &upb_pom_1bt_maxmaxb}, {0x006800003f02002a, &upb_prm_1bt_max64b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, @@ -167,12 +172,12 @@ const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manag {0x00b800003f0c01ba, &upb_prm_2bt_max64b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x001600003f0003c8, &upb_psb1_2bt}, - {0x017000302a0002d0, &upb_pob1_2bt}, + {0x018000302a0002d0, &upb_pob1_2bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x002800003f0002e8, &upb_psv4_2bt}, {0x012800003f1b02f2, &upb_prm_2bt_maxmaxb}, - {0x0168002c1f1301fa, &upb_pom_2bt_max64b}, + {0x0178002c1f1301fa, &upb_pom_2bt_max64b}, }) }; @@ -187,21 +192,23 @@ static const upb_MiniTableSubInternal envoy_extensions_filters_network_http_conn {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing__fields[8] = { - {3, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing__fields[10] = { + {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(20, 64), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {6, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, - {7, UPB_SIZE(24, 40), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {8, UPB_SIZE(28, 48), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {9, UPB_SIZE(32, 56), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {10, UPB_SIZE(36, 64), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {7, UPB_SIZE(24, 72), 67, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(28, 80), 0, 4, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(32, 88), 68, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {10, UPB_SIZE(36, 96), 69, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {11, UPB_SIZE(40, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {12, UPB_SIZE(48, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__Tracing_msg_init = { &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing__submsgs[0], &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing__fields[0], - UPB_SIZE(40, 72), 8, kUpb_ExtMode_NonExtendable, 0, UPB_FASTTABLE_MASK(120), 0, + UPB_SIZE(56, 104), 10, kUpb_ExtMode_NonExtendable, 0, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing", #endif @@ -214,11 +221,11 @@ const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manag {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000900003f000030, &upb_psb1_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x003000003f040042, &upb_prm_1bt_maxmaxb}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x005000003f040042, &upb_prm_1bt_maxmaxb}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00005a, &upb_pss_1bt}, + {0x002000003f000062, &upb_pss_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, @@ -283,6 +290,29 @@ const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manag }; const upb_MiniTable* envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init_ptr = &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init; +static const upb_MiniTableSubInternal envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig__fields[2] = { + {1, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, + {2, 16, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init = { + &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig__submsgs[0], + &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig__fields[0], + 24, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.ForwardClientCertConfig", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000c00003f000008, &upb_psv4_1bt}, + }) +}; + +const upb_MiniTable* envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init_ptr = &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init; static const upb_MiniTableSubInternal envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig__submsgs[2] = { {.UPB_PRIVATE(submsg) = &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpFilter_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, @@ -717,11 +747,12 @@ const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manag }; const upb_MiniTable* envoy__extensions__filters__network__http_0connection_0manager__v3__EnvoyMobileHttpConnectionManager_msg_init_ptr = &envoy__extensions__filters__network__http_0connection_0manager__v3__EnvoyMobileHttpConnectionManager_msg_init; -static const upb_MiniTable *messages_layout[21] = { +static const upb_MiniTable *messages_layout[22] = { &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager_msg_init, &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__Tracing_msg_init, &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__InternalAddressConfig_msg_init, &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init, + &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init, &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__UpgradeConfig_msg_init, &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__PathNormalizationOptions_msg_init, &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ProxyStatusConfig_msg_init, @@ -745,7 +776,7 @@ const upb_MiniTableFile envoy_extensions_filters_network_http_connection_manager messages_layout, NULL, NULL, - 21, + 22, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h index 5a10530c5be..458a56ee707 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h @@ -26,6 +26,8 @@ extern const upb_MiniTable envoy__extensions__filters__network__http_0connection extern const upb_MiniTable* envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__InternalAddressConfig_msg_init_ptr; extern const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init; extern const upb_MiniTable* envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__SetCurrentClientCertDetails_msg_init_ptr; +extern const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init; +extern const upb_MiniTable* envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__ForwardClientCertConfig_msg_init_ptr; extern const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__UpgradeConfig_msg_init; extern const upb_MiniTable* envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__UpgradeConfig_msg_init_ptr; extern const upb_MiniTable envoy__extensions__filters__network__http_0connection_0manager__v3__HttpConnectionManager__PathNormalizationOptions_msg_init; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h new file mode 100644 index 00000000000..c991fdb55d9 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h @@ -0,0 +1,89 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_EXTENSIONS_GRPC_SERVICE_CALL_CREDENTIALS_ACCESS_TOKEN_V3_ACCESS_TOKEN_CREDENTIALS_PROTO_UPB_H__UPB_H_ +#define ENVOY_EXTENSIONS_GRPC_SERVICE_CALL_CREDENTIALS_ACCESS_TOKEN_V3_ACCESS_TOKEN_CREDENTIALS_PROTO_UPB_H__UPB_H_ + +#include "upb/generated_code_support.h" + +#include "envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h" + +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials { upb_Message UPB_PRIVATE(base); } envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials; + + + +/* envoy.extensions.grpc_service.call_credentials.access_token.v3.AccessTokenCredentials */ + +UPB_INLINE envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_new(upb_Arena* arena) { + return (envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials*)_upb_Message_New(&envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init, arena); +} +UPB_INLINE envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* ret = envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* ret = envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_serialize(const envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_serialize_ex(const envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_clear_token(envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* msg) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_token(const envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials_set_token(envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials *msg, upb_StringView value) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_EXTENSIONS_GRPC_SERVICE_CALL_CREDENTIALS_ACCESS_TOKEN_V3_ACCESS_TOKEN_CREDENTIALS_PROTO_UPB_H__UPB_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c new file mode 100644 index 00000000000..c7b62406647 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c @@ -0,0 +1,50 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#include +#include "upb/generated_code_support.h" +#include "envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); +static const upb_MiniTableField envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials__fields[1] = { + {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init = { + NULL, + &envoy_extensions_grpc_service_call_credentials_access_token_v3_AccessTokenCredentials__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.grpc_service.call_credentials.access_token.v3.AccessTokenCredentials", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_pss_1bt}, + }) +}; + +const upb_MiniTable* envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init_ptr = &envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init; +static const upb_MiniTable *messages_layout[1] = { + &envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init, +}; + +const upb_MiniTableFile envoy_extensions_grpc_service_call_credentials_access_token_v3_access_token_credentials_proto_upb_file_layout = { + messages_layout, + NULL, + NULL, + 1, + 0, + 0, +}; + +#include "upb/port/undef.inc" + diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h new file mode 100644 index 00000000000..fd541325f3c --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h @@ -0,0 +1,32 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_EXTENSIONS_GRPC_SERVICE_CALL_CREDENTIALS_ACCESS_TOKEN_V3_ACCESS_TOKEN_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ +#define ENVOY_EXTENSIONS_GRPC_SERVICE_CALL_CREDENTIALS_ACCESS_TOKEN_V3_ACCESS_TOKEN_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ + +#include "upb/generated_code_support.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const upb_MiniTable envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init; +extern const upb_MiniTable* envoy__extensions__grpc_0service__call_0credentials__access_0token__v3__AccessTokenCredentials_msg_init_ptr; + +extern const upb_MiniTableFile envoy_extensions_grpc_service_call_credentials_access_token_v3_access_token_credentials_proto_upb_file_layout; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_EXTENSIONS_GRPC_SERVICE_CALL_CREDENTIALS_ACCESS_TOKEN_V3_ACCESS_TOKEN_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h new file mode 100644 index 00000000000..688ba4320a8 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h @@ -0,0 +1,135 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_TLS_V3_TLS_CREDENTIALS_PROTO_UPB_H__UPB_H_ +#define ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_TLS_V3_TLS_CREDENTIALS_PROTO_UPB_H__UPB_H_ + +#include "upb/generated_code_support.h" + +#include "envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h" + +#include "envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials { upb_Message UPB_PRIVATE(base); } envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials; +struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance; + + + +/* envoy.extensions.grpc_service.channel_credentials.tls.v3.TlsCredentials */ + +UPB_INLINE envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_new(upb_Arena* arena) { + return (envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials*)_upb_Message_New(&envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init, arena); +} +UPB_INLINE envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* ret = envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* ret = envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_serialize(const envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_serialize_ex(const envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_clear_root_certificate_provider(envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_root_certificate_provider(const envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg) { + const struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* default_val = NULL; + const struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_has_root_certificate_provider(const envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_clear_identity_certificate_provider(envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_identity_certificate_provider(const envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg) { + const struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* default_val = NULL; + const struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* ret; + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_has_identity_certificate_provider(const envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_set_root_certificate_provider(envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials *msg, struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_mutable_root_certificate_provider(envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg, upb_Arena* arena) { + struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_root_certificate_provider(msg); + if (sub == NULL) { + sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)_upb_Message_New(&envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init, arena); + if (sub) envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_set_root_certificate_provider(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_set_identity_certificate_provider(envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials *msg, struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* value) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_mutable_identity_certificate_provider(envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials* msg, upb_Arena* arena) { + struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_identity_certificate_provider(msg); + if (sub == NULL) { + sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)_upb_Message_New(&envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init, arena); + if (sub) envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials_set_identity_certificate_provider(msg, sub); + } + return sub; +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_TLS_V3_TLS_CREDENTIALS_PROTO_UPB_H__UPB_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c new file mode 100644 index 00000000000..21bbd53aadb --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c @@ -0,0 +1,53 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#include +#include "upb/generated_code_support.h" +#include "envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h" +#include "envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); +static const upb_MiniTableSubInternal envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__extensions__transport_0sockets__tls__v3__CommonTlsContext__CertificateProviderInstance_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials__fields[2] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init = { + &envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials__submsgs[0], + &envoy_extensions_grpc_service_channel_credentials_tls_v3_TlsCredentials__fields[0], + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.grpc_service.channel_credentials.tls.v3.TlsCredentials", +#endif +}; + +const upb_MiniTable* envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init_ptr = &envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init; +static const upb_MiniTable *messages_layout[1] = { + &envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init, +}; + +const upb_MiniTableFile envoy_extensions_grpc_service_channel_credentials_tls_v3_tls_credentials_proto_upb_file_layout = { + messages_layout, + NULL, + NULL, + 1, + 0, + 0, +}; + +#include "upb/port/undef.inc" + diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h new file mode 100644 index 00000000000..212a4c59216 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h @@ -0,0 +1,32 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_TLS_V3_TLS_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ +#define ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_TLS_V3_TLS_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ + +#include "upb/generated_code_support.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const upb_MiniTable envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init; +extern const upb_MiniTable* envoy__extensions__grpc_0service__channel_0credentials__tls__v3__TlsCredentials_msg_init_ptr; + +extern const upb_MiniTableFile envoy_extensions_grpc_service_channel_credentials_tls_v3_tls_credentials_proto_upb_file_layout; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_TLS_V3_TLS_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h new file mode 100644 index 00000000000..99948d52b85 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h @@ -0,0 +1,105 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_XDS_V3_XDS_CREDENTIALS_PROTO_UPB_H__UPB_H_ +#define ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_XDS_V3_XDS_CREDENTIALS_PROTO_UPB_H__UPB_H_ + +#include "upb/generated_code_support.h" + +#include "envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h" + +#include "google/protobuf/any.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials { upb_Message UPB_PRIVATE(base); } envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials; +struct google_protobuf_Any; + + + +/* envoy.extensions.grpc_service.channel_credentials.xds.v3.XdsCredentials */ + +UPB_INLINE envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_new(upb_Arena* arena) { + return (envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials*)_upb_Message_New(&envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init, arena); +} +UPB_INLINE envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* ret = envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* ret = envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_serialize(const envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_serialize_ex(const envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_clear_fallback_credentials(envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_Any* envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_fallback_credentials(const envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* msg) { + const struct google_protobuf_Any* default_val = NULL; + const struct google_protobuf_Any* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_has_fallback_credentials(const envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_set_fallback_credentials(envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials *msg, struct google_protobuf_Any* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__Any_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_Any* envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_mutable_fallback_credentials(envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials* msg, upb_Arena* arena) { + struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_fallback_credentials(msg); + if (sub == NULL) { + sub = (struct google_protobuf_Any*)_upb_Message_New(&google__protobuf__Any_msg_init, arena); + if (sub) envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials_set_fallback_credentials(msg, sub); + } + return sub; +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_XDS_V3_XDS_CREDENTIALS_PROTO_UPB_H__UPB_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c new file mode 100644 index 00000000000..c560d5c87c5 --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c @@ -0,0 +1,51 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#include +#include "upb/generated_code_support.h" +#include "envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h" +#include "google/protobuf/any.upb_minitable.h" +#include "udpa/annotations/status.upb_minitable.h" + +// Must be last. +#include "upb/port/def.inc" + +extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); +static const upb_MiniTableSubInternal envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &google__protobuf__Any_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials__fields[1] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init = { + &envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials__submsgs[0], + &envoy_extensions_grpc_service_channel_credentials_xds_v3_XdsCredentials__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.grpc_service.channel_credentials.xds.v3.XdsCredentials", +#endif +}; + +const upb_MiniTable* envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init_ptr = &envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init; +static const upb_MiniTable *messages_layout[1] = { + &envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init, +}; + +const upb_MiniTableFile envoy_extensions_grpc_service_channel_credentials_xds_v3_xds_credentials_proto_upb_file_layout = { + messages_layout, + NULL, + NULL, + 1, + 0, + 0, +}; + +#include "upb/port/undef.inc" + diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h new file mode 100644 index 00000000000..6926ffc0edb --- /dev/null +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h @@ -0,0 +1,32 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + +#ifndef ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_XDS_V3_XDS_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ +#define ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_XDS_V3_XDS_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ + +#include "upb/generated_code_support.h" + +// Must be last. +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern const upb_MiniTable envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init; +extern const upb_MiniTable* envoy__extensions__grpc_0service__channel_0credentials__xds__v3__XdsCredentials_msg_init_ptr; + +extern const upb_MiniTableFile envoy_extensions_grpc_service_channel_credentials_xds_v3_xds_credentials_proto_upb_file_layout; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_EXTENSIONS_GRPC_SERVICE_CHANNEL_CREDENTIALS_XDS_V3_XDS_CREDENTIALS_PROTO_UPB_H__UPB_MINITABLE_H_ */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h index 305ef31ebd6..7c4610cb496 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h @@ -13,6 +13,7 @@ #include "envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h" +#include "envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" @@ -26,6 +27,7 @@ extern "C" { #endif typedef struct envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin { upb_Message UPB_PRIVATE(base); } envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin; +struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig; struct google_protobuf_BoolValue; struct google_protobuf_Duration; struct google_protobuf_FloatValue; @@ -202,6 +204,23 @@ UPB_INLINE upb_Array* _envoy_extensions_load_balancing_policies_client_side_weig } return arr; } +UPB_INLINE void envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_clear_slow_start_config(envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(40, 72), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig* envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_slow_start_config(const envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin* msg) { + const struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig* default_val = NULL; + const struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig* ret; + const upb_MiniTableField field = {8, UPB_SIZE(40, 72), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_has_slow_start_config(const envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(40, 72), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_set_enable_oob_load_report(envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin *msg, struct google_protobuf_BoolValue* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -309,6 +328,19 @@ UPB_INLINE bool envoy_extensions_load_balancing_policies_client_side_weighted_ro (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); return true; } +UPB_INLINE void envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_set_slow_start_config(envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin *msg, struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig* value) { + const upb_MiniTableField field = {8, UPB_SIZE(40, 72), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig* envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_mutable_slow_start_config(envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin* msg, upb_Arena* arena) { + struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig* sub = (struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig*)envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_slow_start_config(msg); + if (sub == NULL) { + sub = (struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig*)_upb_Message_New(&envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init, arena); + if (sub) envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin_set_slow_start_config(msg, sub); + } + return sub; +} #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c index f3710a33ef0..86655061271 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c @@ -9,6 +9,7 @@ #include #include "upb/generated_code_support.h" #include "envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h" +#include "envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" @@ -18,16 +19,17 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin__submsgs[6] = { +static const upb_MiniTableSubInternal envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin__submsgs[7] = { {.UPB_PRIVATE(submsg) = &google__protobuf__BoolValue_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__FloatValue_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin__fields[7] = { +static const upb_MiniTableField envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin__fields[8] = { {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -35,12 +37,13 @@ static const upb_MiniTableField envoy_extensions_load_balancing_policies_client_ {5, UPB_SIZE(28, 48), 68, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {6, UPB_SIZE(32, 56), 69, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {7, UPB_SIZE(36, 64), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(40, 72), 70, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__load_0balancing_0policies__client_0side_0weighted_0round_0robin__v3__ClientSideWeightedRoundRobin_msg_init = { &envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin__submsgs[0], &envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_v3_ClientSideWeightedRoundRobin__fields[0], - UPB_SIZE(40, 72), 7, kUpb_ExtMode_NonExtendable, 7, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(48, 80), 8, kUpb_ExtMode_NonExtendable, 8, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3.ClientSideWeightedRoundRobin", #endif diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h index 1500c0e60de..5d641739f71 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h @@ -14,9 +14,11 @@ #include "envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h" #include "envoy/config/core/v3/base.upb_minitable.h" +#include "envoy/config/route/v3/route_components.upb_minitable.h" #include "envoy/type/v3/percent.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" +#include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -29,15 +31,22 @@ extern "C" { typedef struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig; typedef struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig; +typedef struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone { upb_Message UPB_PRIVATE(base); } envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone; typedef struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_LocalityWeightedLbConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_LocalityWeightedLbConfig; typedef struct envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_load_balancing_policies_common_v3_SlowStartConfig; typedef struct envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig; struct envoy_config_core_v3_RuntimeDouble; +struct envoy_config_route_v3_RouteAction_HashPolicy; struct envoy_type_v3_Percent; struct google_protobuf_Duration; struct google_protobuf_UInt32Value; struct google_protobuf_UInt64Value; +typedef enum { + envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_HEALTHY_HOSTS_NUM = 0, + envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_HEALTHY_HOSTS_WEIGHT = 1 +} envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_LocalityBasis; + /* envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig */ @@ -234,6 +243,47 @@ UPB_INLINE bool envoy_extensions_load_balancing_policies_common_v3_LocalityLbCon &default_val, &ret); return ret; } +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_clear_force_locality_direct_routing(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg) { + const upb_MiniTableField field = {4, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_force_locality_direct_routing(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {4, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_clear_force_local_zone(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_force_local_zone(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg) { + const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* default_val = NULL; + const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* ret; + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_has_force_local_zone(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_clear_locality_basis(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(24, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_locality_basis(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg) { + int32_t default_val = 0; + int32_t ret; + const upb_MiniTableField field = {6, UPB_SIZE(24, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_set_routing_enabled(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig *msg, struct envoy_type_v3_Percent* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -265,6 +315,95 @@ UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbCon const upb_MiniTableField field = {3, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_set_force_locality_direct_routing(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig *msg, bool value) { + const upb_MiniTableField field = {4, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_set_force_local_zone(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig *msg, envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* value) { + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_mutable_force_local_zone(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig* msg, upb_Arena* arena) { + struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* sub = (struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone*)envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_force_local_zone(msg); + if (sub == NULL) { + sub = (struct envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone*)_upb_Message_New(&envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init, arena); + if (sub) envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_set_force_local_zone(msg, sub); + } + return sub; +} +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_set_locality_basis(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig *msg, int32_t value) { + const upb_MiniTableField field = {6, UPB_SIZE(24, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} + +/* envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.ForceLocalZone */ + +UPB_INLINE envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_new(upb_Arena* arena) { + return (envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone*)_upb_Message_New(&envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init, arena); +} +UPB_INLINE envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* ret = envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* ret = envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_serialize(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_serialize_ex(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_clear_min_size(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_min_size(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* msg) { + const struct google_protobuf_UInt32Value* default_val = NULL; + const struct google_protobuf_UInt32Value* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_has_min_size(const envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_set_min_size(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone *msg, struct google_protobuf_UInt32Value* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__protobuf__UInt32Value_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_mutable_min_size(envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone* msg, upb_Arena* arena) { + struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_min_size(msg); + if (sub == NULL) { + sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google__protobuf__UInt32Value_msg_init, arena); + if (sub) envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone_set_min_size(msg, sub); + } + return sub; +} /* envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfig */ @@ -497,6 +636,41 @@ UPB_INLINE bool envoy_extensions_load_balancing_policies_common_v3_ConsistentHas const upb_MiniTableField field = {2, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_clear_hash_policy(envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_route_v3_RouteAction_HashPolicy* const* envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_hash_policy(const envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct envoy_config_route_v3_RouteAction_HashPolicy* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_hash_policy_upb_array(const envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig* msg, size_t* size) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_hash_policy_mutable_upb_array(envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_set_use_hostname_for_hashing(envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig *msg, bool value) { const upb_MiniTableField field = {1, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; @@ -515,6 +689,38 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_load_balancing_p } return sub; } +UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy** envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_mutable_hash_policy(envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig* msg, size_t* size) { + upb_MiniTableField field = {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct envoy_config_route_v3_RouteAction_HashPolicy**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy** envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_resize_hash_policy(envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct envoy_config_route_v3_RouteAction_HashPolicy**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy* envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig_add_hash_policy(envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig* msg, upb_Arena* arena) { + upb_MiniTableField field = {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_config_route_v3_RouteAction_HashPolicy* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy*)_upb_Message_New(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c index d52c60a7d1a..1b3d6a16a36 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c @@ -10,9 +10,11 @@ #include "upb/generated_code_support.h" #include "envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h" #include "envoy/config/core/v3/base.upb_minitable.h" +#include "envoy/config/route/v3/route_components.upb_minitable.h" #include "envoy/type/v3/percent.upb_minitable.h" #include "google/protobuf/duration.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" +#include "envoy/annotations/deprecation.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -46,21 +48,25 @@ const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__Lo }; const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig_msg_init_ptr = &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig_msg_init; -static const upb_MiniTableSubInternal envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig__submsgs[2] = { +static const upb_MiniTableSubInternal envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig__submsgs[3] = { {.UPB_PRIVATE(submsg) = &envoy__type__v3__Percent_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__protobuf__UInt64Value_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig__fields[3] = { +static const upb_MiniTableField envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig__fields[6] = { {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {3, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {4, 10, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(20, 32), 66, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(24, 12), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig_msg_init = { &envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig__submsgs[0], &envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig__fields[0], - UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, + UPB_SIZE(32, 40), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig", #endif @@ -69,10 +75,32 @@ const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__Lo {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000900003f000018, &upb_psb1_1bt}, + {0x000a00003f000020, &upb_psb1_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000c00003f000030, &upb_psv4_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig_msg_init_ptr = &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig_msg_init; +static const upb_MiniTableSubInternal envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone__fields[1] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init = { + &envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone__submsgs[0], + &envoy_extensions_load_balancing_policies_common_v3_LocalityLbConfig_ZoneAwareLbConfig_ForceLocalZone__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.ForceLocalZone", +#endif +}; + +const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init_ptr = &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init; const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__LocalityWeightedLbConfig_msg_init = { NULL, NULL, @@ -105,32 +133,37 @@ const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__Sl }; const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init_ptr = &envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init; -static const upb_MiniTableSubInternal envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig__submsgs[1] = { +static const upb_MiniTableSubInternal envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig__submsgs[2] = { {.UPB_PRIVATE(submsg) = &google__protobuf__UInt32Value_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteAction__HashPolicy_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig__fields[2] = { +static const upb_MiniTableField envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig__fields[3] = { {1, 9, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__ConsistentHashingLbConfig_msg_init = { &envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig__submsgs[0], &envoy_extensions_load_balancing_policies_common_v3_ConsistentHashingLbConfig__fields[0], - UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, + UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.load_balancing_policies.common.v3.ConsistentHashingLbConfig", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x000900003f000008, &upb_psb1_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001800003f01001a, &upb_prm_1bt_maxmaxb}, }) }; const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__ConsistentHashingLbConfig_msg_init_ptr = &envoy__extensions__load_0balancing_0policies__common__v3__ConsistentHashingLbConfig_msg_init; -static const upb_MiniTable *messages_layout[5] = { +static const upb_MiniTable *messages_layout[6] = { &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig_msg_init, &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig_msg_init, + &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init, &envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__LocalityWeightedLbConfig_msg_init, &envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init, &envoy__extensions__load_0balancing_0policies__common__v3__ConsistentHashingLbConfig_msg_init, @@ -140,7 +173,7 @@ const upb_MiniTableFile envoy_extensions_load_balancing_policies_common_v3_commo messages_layout, NULL, NULL, - 5, + 6, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h index 653b56e0084..cff3d5e63c7 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h @@ -22,6 +22,8 @@ extern const upb_MiniTable envoy__extensions__load_0balancing_0policies__common_ extern const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig_msg_init_ptr; extern const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig_msg_init; extern const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig_msg_init_ptr; +extern const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init; +extern const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__ZoneAwareLbConfig__ForceLocalZone_msg_init_ptr; extern const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__LocalityWeightedLbConfig_msg_init; extern const upb_MiniTable* envoy__extensions__load_0balancing_0policies__common__v3__LocalityLbConfig__LocalityWeightedLbConfig_msg_init_ptr; extern const upb_MiniTable envoy__extensions__load_0balancing_0policies__common__v3__SlowStartConfig_msg_init; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h index ab13a1a5909..51ff73056b5 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h @@ -62,6 +62,10 @@ typedef enum { envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_OTHER_NAME = 5 } envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_SanType; +typedef enum { + envoy_extensions_transport_sockets_tls_v3_TlsParameters_FIPS_202205 = 0 +} envoy_extensions_transport_sockets_tls_v3_TlsParameters_CompliancePolicy; + typedef enum { envoy_extensions_transport_sockets_tls_v3_TlsParameters_TLS_AUTO = 0, envoy_extensions_transport_sockets_tls_v3_TlsParameters_TLSv1_0 = 1, @@ -228,6 +232,38 @@ UPB_INLINE upb_Array* _envoy_extensions_transport_sockets_tls_v3_TlsParameters_s } return arr; } +UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_clear_compliance_policies(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE int32_t const* envoy_extensions_transport_sockets_tls_v3_TlsParameters_compliance_policies(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* size) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_extensions_transport_sockets_tls_v3_TlsParameters_compliance_policies_upb_array(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* size) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_extensions_transport_sockets_tls_v3_TlsParameters_compliance_policies_mutable_upb_array(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_set_tls_minimum_protocol_version(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, int32_t value) { const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}; @@ -321,6 +357,34 @@ UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsParameters_add_sign (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); return true; } +UPB_INLINE int32_t* envoy_extensions_transport_sockets_tls_v3_TlsParameters_mutable_compliance_policies(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* size) { + upb_MiniTableField field = {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (int32_t*)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE int32_t* envoy_extensions_transport_sockets_tls_v3_TlsParameters_resize_compliance_policies(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (int32_t*)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsParameters_add_compliance_policies(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, int32_t val, upb_Arena* arena) { + upb_MiniTableField field = {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return false; + } + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &val, sizeof(val)); + return true; +} /* envoy.extensions.transport_sockets.tls.v3.PrivateKeyProvider */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c index 7b23c0934b0..b50ba4c6fe6 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c @@ -25,18 +25,19 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableField envoy_extensions_transport_sockets_tls_v3_TlsParameters__fields[5] = { +static const upb_MiniTableField envoy_extensions_transport_sockets_tls_v3_TlsParameters__fields[6] = { {1, 8, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {2, 12, 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Scalar | (int)kUpb_LabelFlags_IsAlternate | ((int)kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)}, {3, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {4, UPB_SIZE(20, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {5, UPB_SIZE(24, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(28, 40), 0, kUpb_NoSub, 5, (int)kUpb_FieldMode_Array | (int)kUpb_LabelFlags_IsPacked | (int)kUpb_LabelFlags_IsAlternate | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__TlsParameters_msg_init = { NULL, &envoy_extensions_transport_sockets_tls_v3_TlsParameters__fields[0], - UPB_SIZE(32, 40), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(32, 48), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.transport_sockets.tls.v3.TlsParameters", #endif @@ -47,7 +48,7 @@ const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__TlsParameter {0x001000003f00001a, &upb_prs_1bt}, {0x001800003f000022, &upb_prs_1bt}, {0x002000003f00002a, &upb_prs_1bt}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x002800003f000032, &upb_ppv4_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h index 76613d5eb6f..772ebf9c4cd 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h @@ -92,6 +92,49 @@ UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_GenericSecret_has_secr const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_GenericSecret_clear_secrets(envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE size_t envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_size(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + return map ? _upb_Map_Size(map) : 0; +} +UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_get(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, upb_StringView key, struct envoy_config_core_v3_DataSource** val) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__DataSource_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Get(map, &key, 0, val, sizeof(*val)); +} +UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_next(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, upb_StringView* key, const struct envoy_config_core_v3_DataSource** val, + size_t* iter) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__DataSource_msg_init); + const upb_Map* map = upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + upb_MessageValue k; + upb_MessageValue v; + if (!upb_Map_Next(map, &k, &v, iter)) return false; + memcpy(key, &k, sizeof(*key)); + memcpy(val, &v, sizeof(*val)); + return true; +} +UPB_INLINE const upb_Map* _envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_upb_map(envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__DataSource_msg_init); + return upb_Message_GetMap(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_Map* _envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_mutable_upb_map(envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, upb_Arena* a) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__DataSource_msg_init); + return _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), &field, 0, sizeof(struct envoy_config_core_v3_DataSource*), a); +} UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_GenericSecret_set_secret(envoy_extensions_transport_sockets_tls_v3_GenericSecret *msg, struct envoy_config_core_v3_DataSource* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -106,6 +149,27 @@ UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_so } return sub; } +UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_clear(envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return; + _upb_Map_Clear(map); +} +UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_set(envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, upb_StringView key, struct envoy_config_core_v3_DataSource* val, upb_Arena* a) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init); + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__core__v3__DataSource_msg_init); + upb_Map* map = _upb_Message_GetOrCreateMutableMap(UPB_UPCAST(msg), + &field, 0, sizeof(val), a); + return _upb_Map_Insert(map, &key, 0, &val, sizeof(val), a) != + kUpb_MapInsertStatus_OutOfMemory; +} +UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_GenericSecret_secrets_delete(envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, upb_StringView key) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Map* map = (upb_Map*)upb_Message_GetMap(UPB_UPCAST(msg), &field); + if (!map) return false; + return _upb_Map_Delete(map, &key, 0, NULL); +} /* envoy.extensions.transport_sockets.tls.v3.SdsSecretConfig */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c index 37fdcc15993..9d37b85df13 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c @@ -21,24 +21,49 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_extensions_transport_sockets_tls_v3_GenericSecret__submsgs[1] = { +static const upb_MiniTableSubInternal envoy_extensions_transport_sockets_tls_v3_GenericSecret__submsgs[2] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__DataSource_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_transport_sockets_tls_v3_GenericSecret__fields[1] = { +static const upb_MiniTableField envoy_extensions_transport_sockets_tls_v3_GenericSecret__fields[2] = { {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 24), 0, 1, 11, (int)kUpb_FieldMode_Map | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__GenericSecret_msg_init = { &envoy_extensions_transport_sockets_tls_v3_GenericSecret__submsgs[0], &envoy_extensions_transport_sockets_tls_v3_GenericSecret__fields[0], - UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(255), 0, + UPB_SIZE(24, 32), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(255), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.transport_sockets.tls.v3.GenericSecret", #endif }; const upb_MiniTable* envoy__extensions__transport_0sockets__tls__v3__GenericSecret_msg_init_ptr = &envoy__extensions__transport_0sockets__tls__v3__GenericSecret_msg_init; +static const upb_MiniTableSubInternal envoy_extensions_transport_sockets_tls_v3_GenericSecret_SecretsEntry__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__DataSource_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_extensions_transport_sockets_tls_v3_GenericSecret_SecretsEntry__fields[2] = { + {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, 32, 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init = { + &envoy_extensions_transport_sockets_tls_v3_GenericSecret_SecretsEntry__submsgs[0], + &envoy_extensions_transport_sockets_tls_v3_GenericSecret_SecretsEntry__fields[0], + 48, 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(8), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.transport_sockets.tls.v3.GenericSecret.SecretsEntry", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + }) +}; + +const upb_MiniTable* envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init_ptr = &envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init; static const upb_MiniTableSubInternal envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig__submsgs[1] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__ConfigSource_msg_init_ptr}, }; @@ -97,8 +122,9 @@ const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__Secret_msg_i }; const upb_MiniTable* envoy__extensions__transport_0sockets__tls__v3__Secret_msg_init_ptr = &envoy__extensions__transport_0sockets__tls__v3__Secret_msg_init; -static const upb_MiniTable *messages_layout[3] = { +static const upb_MiniTable *messages_layout[4] = { &envoy__extensions__transport_0sockets__tls__v3__GenericSecret_msg_init, + &envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init, &envoy__extensions__transport_0sockets__tls__v3__SdsSecretConfig_msg_init, &envoy__extensions__transport_0sockets__tls__v3__Secret_msg_init, }; @@ -107,7 +133,7 @@ const upb_MiniTableFile envoy_extensions_transport_sockets_tls_v3_secret_proto_u messages_layout, NULL, NULL, - 3, + 4, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h index 243ec808b08..7212f57f870 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h @@ -20,6 +20,8 @@ extern "C" { extern const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__GenericSecret_msg_init; extern const upb_MiniTable* envoy__extensions__transport_0sockets__tls__v3__GenericSecret_msg_init_ptr; +extern const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init; +extern const upb_MiniTable* envoy__extensions__transport_0sockets__tls__v3__GenericSecret__SecretsEntry_msg_init_ptr; extern const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__SdsSecretConfig_msg_init; extern const upb_MiniTable* envoy__extensions__transport_0sockets__tls__v3__SdsSecretConfig_msg_init_ptr; extern const upb_MiniTable envoy__extensions__transport_0sockets__tls__v3__Secret_msg_init; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h index 06051de24b7..972c968e748 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h @@ -13,8 +13,10 @@ #include "envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h" +#include "envoy/config/common/matcher/v3/matcher.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/protocol.upb_minitable.h" +#include "envoy/config/route/v3/route_components.upb_minitable.h" #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -30,6 +32,8 @@ typedef struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions { upb_Mess typedef struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_ExplicitHttpConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_upstreams_http_v3_HttpProtocolOptions_ExplicitHttpConfig; typedef struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_UseDownstreamHttpConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_upstreams_http_v3_HttpProtocolOptions_UseDownstreamHttpConfig; typedef struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_AutoHttpConfig { upb_Message UPB_PRIVATE(base); } envoy_extensions_upstreams_http_v3_HttpProtocolOptions_AutoHttpConfig; +typedef struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection { upb_Message UPB_PRIVATE(base); } envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection; +struct envoy_config_common_matcher_v3_MatchPredicate; struct envoy_config_core_v3_AlternateProtocolsCacheOptions; struct envoy_config_core_v3_Http1ProtocolOptions; struct envoy_config_core_v3_Http2ProtocolOptions; @@ -37,6 +41,9 @@ struct envoy_config_core_v3_Http3ProtocolOptions; struct envoy_config_core_v3_HttpProtocolOptions; struct envoy_config_core_v3_TypedExtensionConfig; struct envoy_config_core_v3_UpstreamHttpProtocolOptions; +struct envoy_config_route_v3_RetryPolicy; +struct envoy_config_route_v3_RouteAction_HashPolicy; +struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy; struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter; @@ -84,12 +91,12 @@ typedef enum { envoy_extensions_upstreams_http_v3_HttpProtocolOptions_upstream_protocol_options_NOT_SET = 0 } envoy_extensions_upstreams_http_v3_HttpProtocolOptions_upstream_protocol_options_oneofcases; UPB_INLINE envoy_extensions_upstreams_http_v3_HttpProtocolOptions_upstream_protocol_options_oneofcases envoy_extensions_upstreams_http_v3_HttpProtocolOptions_upstream_protocol_options_case(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_extensions_upstreams_http_v3_HttpProtocolOptions_upstream_protocol_options_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_upstream_protocol_options(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__extensions__upstreams__http__v3__HttpProtocolOptions_msg_init, &field); } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_common_http_protocol_options(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { @@ -127,54 +134,54 @@ UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_has_upstr return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_explicit_http_config(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_ExplicitHttpConfig* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_explicit_http_config(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_ExplicitHttpConfig* default_val = NULL; const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_ExplicitHttpConfig* ret; - const upb_MiniTableField field = {3, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__ExplicitHttpConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_has_explicit_http_config(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_use_downstream_protocol_config(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_UseDownstreamHttpConfig* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_use_downstream_protocol_config(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_UseDownstreamHttpConfig* default_val = NULL; const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_UseDownstreamHttpConfig* ret; - const upb_MiniTableField field = {4, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__UseDownstreamHttpConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_has_use_downstream_protocol_config(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_auto_config(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_AutoHttpConfig* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_auto_config(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_AutoHttpConfig* default_val = NULL; const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_AutoHttpConfig* ret; - const upb_MiniTableField field = {5, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_has_auto_config(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_http_filters(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { @@ -229,6 +236,110 @@ UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_has_heade const upb_MiniTableField field = {7, UPB_SIZE(24, 40), 66, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_outlier_detection(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 67, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_outlier_detection(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* default_val = NULL; + const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* ret; + const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 67, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_has_outlier_detection(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 67, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_request_mirror_policies(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_request_mirror_policies(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_extensions_upstreams_http_v3_HttpProtocolOptions_request_mirror_policies_upb_array(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_extensions_upstreams_http_v3_HttpProtocolOptions_request_mirror_policies_mutable_upb_array(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_hash_policy(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_route_v3_RouteAction_HashPolicy* const* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_hash_policy(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const struct envoy_config_route_v3_RouteAction_HashPolicy* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_extensions_upstreams_http_v3_HttpProtocolOptions_hash_policy_upb_array(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_extensions_upstreams_http_v3_HttpProtocolOptions_hash_policy_mutable_upb_array(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_clear_retry_policy(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const upb_MiniTableField field = {11, UPB_SIZE(40, 72), 68, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_route_v3_RetryPolicy* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_retry_policy(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const struct envoy_config_route_v3_RetryPolicy* default_val = NULL; + const struct envoy_config_route_v3_RetryPolicy* ret; + const upb_MiniTableField field = {11, UPB_SIZE(40, 72), 68, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RetryPolicy_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_has_retry_policy(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg) { + const upb_MiniTableField field = {11, UPB_SIZE(40, 72), 68, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_common_http_protocol_options(envoy_extensions_upstreams_http_v3_HttpProtocolOptions *msg, struct envoy_config_core_v3_HttpProtocolOptions* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -257,7 +368,7 @@ UPB_INLINE struct envoy_config_core_v3_UpstreamHttpProtocolOptions* envoy_extens return sub; } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_explicit_http_config(envoy_extensions_upstreams_http_v3_HttpProtocolOptions *msg, envoy_extensions_upstreams_http_v3_HttpProtocolOptions_ExplicitHttpConfig* value) { - const upb_MiniTableField field = {3, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__ExplicitHttpConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -270,7 +381,7 @@ UPB_INLINE struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_Explici return sub; } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_use_downstream_protocol_config(envoy_extensions_upstreams_http_v3_HttpProtocolOptions *msg, envoy_extensions_upstreams_http_v3_HttpProtocolOptions_UseDownstreamHttpConfig* value) { - const upb_MiniTableField field = {4, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__UseDownstreamHttpConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -283,7 +394,7 @@ UPB_INLINE struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_UseDown return sub; } UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_auto_config(envoy_extensions_upstreams_http_v3_HttpProtocolOptions *msg, envoy_extensions_upstreams_http_v3_HttpProtocolOptions_AutoHttpConfig* value) { - const upb_MiniTableField field = {5, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -340,6 +451,96 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_up } return sub; } +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_outlier_detection(envoy_extensions_upstreams_http_v3_HttpProtocolOptions *msg, envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* value) { + const upb_MiniTableField field = {8, UPB_SIZE(28, 48), 67, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_mutable_outlier_detection(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, upb_Arena* arena) { + struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* sub = (struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection*)envoy_extensions_upstreams_http_v3_HttpProtocolOptions_outlier_detection(msg); + if (sub == NULL) { + sub = (struct envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection*)_upb_Message_New(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init, arena); + if (sub) envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_outlier_detection(msg, sub); + } + return sub; +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_extensions_upstreams_http_v3_HttpProtocolOptions_mutable_request_mirror_policies(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size) { + upb_MiniTableField field = {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_extensions_upstreams_http_v3_HttpProtocolOptions_resize_request_mirror_policies(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_add_request_mirror_policies(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, upb_Arena* arena) { + upb_MiniTableField field = {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* sub = (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy*)_upb_Message_New(&envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy** envoy_extensions_upstreams_http_v3_HttpProtocolOptions_mutable_hash_policy(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t* size) { + upb_MiniTableField field = {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (struct envoy_config_route_v3_RouteAction_HashPolicy**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy** envoy_extensions_upstreams_http_v3_HttpProtocolOptions_resize_hash_policy(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (struct envoy_config_route_v3_RouteAction_HashPolicy**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_add_hash_policy(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, upb_Arena* arena) { + upb_MiniTableField field = {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_config_route_v3_RouteAction_HashPolicy* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy*)_upb_Message_New(&envoy__config__route__v3__RouteAction__HashPolicy_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_retry_policy(envoy_extensions_upstreams_http_v3_HttpProtocolOptions *msg, struct envoy_config_route_v3_RetryPolicy* value) { + const upb_MiniTableField field = {11, UPB_SIZE(40, 72), 68, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__route__v3__RetryPolicy_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_route_v3_RetryPolicy* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_mutable_retry_policy(envoy_extensions_upstreams_http_v3_HttpProtocolOptions* msg, upb_Arena* arena) { + struct envoy_config_route_v3_RetryPolicy* sub = (struct envoy_config_route_v3_RetryPolicy*)envoy_extensions_upstreams_http_v3_HttpProtocolOptions_retry_policy(msg); + if (sub == NULL) { + sub = (struct envoy_config_route_v3_RetryPolicy*)_upb_Message_New(&envoy__config__route__v3__RetryPolicy_msg_init, arena); + if (sub) envoy_extensions_upstreams_http_v3_HttpProtocolOptions_set_retry_policy(msg, sub); + } + return sub; +} /* envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig */ @@ -770,6 +971,74 @@ UPB_INLINE struct envoy_config_core_v3_AlternateProtocolsCacheOptions* envoy_ext return sub; } +/* envoy.extensions.upstreams.http.v3.HttpProtocolOptions.OutlierDetection */ + +UPB_INLINE envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_new(upb_Arena* arena) { + return (envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection*)_upb_Message_New(&envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init, arena); +} +UPB_INLINE envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* ret = envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* ret = envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_serialize(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_serialize_ex(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_clear_error_matcher(envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct envoy_config_common_matcher_v3_MatchPredicate* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_error_matcher(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* msg) { + const struct envoy_config_common_matcher_v3_MatchPredicate* default_val = NULL; + const struct envoy_config_common_matcher_v3_MatchPredicate* ret; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__matcher__v3__MatchPredicate_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_has_error_matcher(const envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_set_error_matcher(envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection *msg, struct envoy_config_common_matcher_v3_MatchPredicate* value) { + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__config__common__matcher__v3__MatchPredicate_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_mutable_error_matcher(envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection* msg, upb_Arena* arena) { + struct envoy_config_common_matcher_v3_MatchPredicate* sub = (struct envoy_config_common_matcher_v3_MatchPredicate*)envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_error_matcher(msg); + if (sub == NULL) { + sub = (struct envoy_config_common_matcher_v3_MatchPredicate*)_upb_Message_New(&envoy__config__common__matcher__v3__MatchPredicate_msg_init, arena); + if (sub) envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_set_error_matcher(msg, sub); + } + return sub; +} + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c index 49e4dd4e5f1..7d3bcec09ed 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c @@ -9,8 +9,10 @@ #include #include "upb/generated_code_support.h" #include "envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h" +#include "envoy/config/common/matcher/v3/matcher.upb_minitable.h" #include "envoy/config/core/v3/extension.upb_minitable.h" #include "envoy/config/core/v3/protocol.upb_minitable.h" +#include "envoy/config/route/v3/route_components.upb_minitable.h" #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h" #include "udpa/annotations/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -19,7 +21,7 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_extensions_upstreams_http_v3_HttpProtocolOptions__submsgs[7] = { +static const upb_MiniTableSubInternal envoy_extensions_upstreams_http_v3_HttpProtocolOptions__submsgs[11] = { {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__HttpProtocolOptions_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__UpstreamHttpProtocolOptions_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__ExplicitHttpConfig_msg_init_ptr}, @@ -27,22 +29,30 @@ static const upb_MiniTableSubInternal envoy_extensions_upstreams_http_v3_HttpPro {.UPB_PRIVATE(submsg) = &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__extensions__filters__network__http_0connection_0manager__v3__HttpFilter_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &envoy__config__core__v3__TypedExtensionConfig_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteAction__RequestMirrorPolicy_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RouteAction__HashPolicy_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__config__route__v3__RetryPolicy_msg_init_ptr}, }; -static const upb_MiniTableField envoy_extensions_upstreams_http_v3_HttpProtocolOptions__fields[7] = { +static const upb_MiniTableField envoy_extensions_upstreams_http_v3_HttpProtocolOptions__fields[11] = { {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(16, 24), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {5, UPB_SIZE(32, 48), UPB_SIZE(-29, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(48, 80), UPB_SIZE(-45, -13), 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {6, UPB_SIZE(20, 32), 0, 5, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {7, UPB_SIZE(24, 40), 66, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {8, UPB_SIZE(28, 48), 67, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(32, 56), 0, 8, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {10, UPB_SIZE(36, 64), 0, 9, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {11, UPB_SIZE(40, 72), 68, 10, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__extensions__upstreams__http__v3__HttpProtocolOptions_msg_init = { &envoy_extensions_upstreams_http_v3_HttpProtocolOptions__submsgs[0], &envoy_extensions_upstreams_http_v3_HttpProtocolOptions__fields[0], - UPB_SIZE(40, 56), 7, kUpb_ExtMode_NonExtendable, 7, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(56, 88), 11, kUpb_ExtMode_NonExtendable, 11, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "envoy.extensions.upstreams.http.v3.HttpProtocolOptions", #endif @@ -50,11 +60,19 @@ const upb_MiniTable envoy__extensions__upstreams__http__v3__HttpProtocolOptions_ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x0030000c0302001a, &upb_pom_1bt_max64b}, - {0x0030000c04030022, &upb_pom_1bt_max64b}, - {0x0030000c0504002a, &upb_pom_1bt_max64b}, + {0x0050000c0302001a, &upb_pom_1bt_max64b}, + {0x0050000c04030022, &upb_pom_1bt_max64b}, + {0x0050000c0504002a, &upb_pom_1bt_max64b}, {0x002000003f050032, &upb_prm_1bt_maxmaxb}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x003800003f08004a, &upb_prm_1bt_maxmaxb}, + {0x004000003f090052, &upb_prm_1bt_maxmaxb}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; @@ -133,18 +151,37 @@ const upb_MiniTable envoy__extensions__upstreams__http__v3__HttpProtocolOptions_ }; const upb_MiniTable* envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init_ptr = &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init; -static const upb_MiniTable *messages_layout[4] = { +static const upb_MiniTableSubInternal envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection__submsgs[1] = { + {.UPB_PRIVATE(submsg) = &envoy__config__common__matcher__v3__MatchPredicate_msg_init_ptr}, +}; + +static const upb_MiniTableField envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection__fields[1] = { + {1, UPB_SIZE(12, 16), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init = { + &envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection__submsgs[0], + &envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection__fields[0], + UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, UPB_FASTTABLE_MASK(255), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.extensions.upstreams.http.v3.HttpProtocolOptions.OutlierDetection", +#endif +}; + +const upb_MiniTable* envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init_ptr = &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init; +static const upb_MiniTable *messages_layout[5] = { &envoy__extensions__upstreams__http__v3__HttpProtocolOptions_msg_init, &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__ExplicitHttpConfig_msg_init, &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__UseDownstreamHttpConfig_msg_init, &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init, + &envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init, }; const upb_MiniTableFile envoy_extensions_upstreams_http_v3_http_protocol_options_proto_upb_file_layout = { messages_layout, NULL, NULL, - 4, + 5, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h index 0b595e844c7..8b8ef032bfb 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h @@ -26,6 +26,8 @@ extern const upb_MiniTable envoy__extensions__upstreams__http__v3__HttpProtocolO extern const upb_MiniTable* envoy__extensions__upstreams__http__v3__HttpProtocolOptions__UseDownstreamHttpConfig_msg_init_ptr; extern const upb_MiniTable envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init; extern const upb_MiniTable* envoy__extensions__upstreams__http__v3__HttpProtocolOptions__AutoHttpConfig_msg_init_ptr; +extern const upb_MiniTable envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init; +extern const upb_MiniTable* envoy__extensions__upstreams__http__v3__HttpProtocolOptions__OutlierDetection_msg_init_ptr; extern const upb_MiniTableFile envoy_extensions_upstreams_http_v3_http_protocol_options_proto_upb_file_layout; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h index 074504f7dc0..6650dba67f8 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h @@ -25,6 +25,7 @@ extern "C" { #endif typedef struct envoy_type_http_v3_Cookie { upb_Message UPB_PRIVATE(base); } envoy_type_http_v3_Cookie; +typedef struct envoy_type_http_v3_CookieAttribute { upb_Message UPB_PRIVATE(base); } envoy_type_http_v3_CookieAttribute; struct google_protobuf_Duration; @@ -66,13 +67,13 @@ UPB_INLINE char* envoy_type_http_v3_Cookie_serialize_ex(const envoy_type_http_v3 return ptr; } UPB_INLINE void envoy_type_http_v3_Cookie_clear_name(envoy_type_http_v3_Cookie* msg) { - const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_type_http_v3_Cookie_name(const envoy_type_http_v3_Cookie* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; @@ -95,20 +96,55 @@ UPB_INLINE bool envoy_type_http_v3_Cookie_has_ttl(const envoy_type_http_v3_Cooki return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_type_http_v3_Cookie_clear_path(envoy_type_http_v3_Cookie* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(24, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_type_http_v3_Cookie_path(const envoy_type_http_v3_Cookie* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {3, UPB_SIZE(24, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } +UPB_INLINE void envoy_type_http_v3_Cookie_clear_attributes(envoy_type_http_v3_Cookie* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const envoy_type_http_v3_CookieAttribute* const* envoy_type_http_v3_Cookie_attributes(const envoy_type_http_v3_Cookie* msg, size_t* size) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__http__v3__CookieAttribute_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (const envoy_type_http_v3_CookieAttribute* const*)upb_Array_DataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE const upb_Array* _envoy_type_http_v3_Cookie_attributes_upb_array(const envoy_type_http_v3_Cookie* msg, size_t* size) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__http__v3__CookieAttribute_msg_init); + const upb_Array* arr = upb_Message_GetArray(UPB_UPCAST(msg), &field); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} +UPB_INLINE upb_Array* _envoy_type_http_v3_Cookie_attributes_mutable_upb_array(envoy_type_http_v3_Cookie* msg, size_t* size, upb_Arena* arena) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__http__v3__CookieAttribute_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray(UPB_UPCAST(msg), + &field, arena); + if (size) { + *size = arr ? arr->UPB_PRIVATE(size) : 0; + } + return arr; +} UPB_INLINE void envoy_type_http_v3_Cookie_set_name(envoy_type_http_v3_Cookie *msg, upb_StringView value) { - const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_type_http_v3_Cookie_set_ttl(envoy_type_http_v3_Cookie *msg, struct google_protobuf_Duration* value) { @@ -125,7 +161,109 @@ UPB_INLINE struct google_protobuf_Duration* envoy_type_http_v3_Cookie_mutable_tt return sub; } UPB_INLINE void envoy_type_http_v3_Cookie_set_path(envoy_type_http_v3_Cookie *msg, upb_StringView value) { - const upb_MiniTableField field = {3, UPB_SIZE(24, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE envoy_type_http_v3_CookieAttribute** envoy_type_http_v3_Cookie_mutable_attributes(envoy_type_http_v3_Cookie* msg, size_t* size) { + upb_MiniTableField field = {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__http__v3__CookieAttribute_msg_init); + upb_Array* arr = upb_Message_GetMutableArray(UPB_UPCAST(msg), &field); + if (arr) { + if (size) *size = arr->UPB_PRIVATE(size); + return (envoy_type_http_v3_CookieAttribute**)upb_Array_MutableDataPtr(arr); + } else { + if (size) *size = 0; + return NULL; + } +} +UPB_INLINE envoy_type_http_v3_CookieAttribute** envoy_type_http_v3_Cookie_resize_attributes(envoy_type_http_v3_Cookie* msg, size_t size, upb_Arena* arena) { + upb_MiniTableField field = {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return (envoy_type_http_v3_CookieAttribute**)upb_Message_ResizeArrayUninitialized(UPB_UPCAST(msg), + &field, size, arena); +} +UPB_INLINE struct envoy_type_http_v3_CookieAttribute* envoy_type_http_v3_Cookie_add_attributes(envoy_type_http_v3_Cookie* msg, upb_Arena* arena) { + upb_MiniTableField field = {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__http__v3__CookieAttribute_msg_init); + upb_Array* arr = upb_Message_GetOrCreateMutableArray( + UPB_UPCAST(msg), &field, arena); + if (!arr || !UPB_PRIVATE(_upb_Array_ResizeUninitialized)( + arr, arr->UPB_PRIVATE(size) + 1, arena)) { + return NULL; + } + struct envoy_type_http_v3_CookieAttribute* sub = (struct envoy_type_http_v3_CookieAttribute*)_upb_Message_New(&envoy__type__http__v3__CookieAttribute_msg_init, arena); + if (!arr || !sub) return NULL; + UPB_PRIVATE(_upb_Array_Set) + (arr, arr->UPB_PRIVATE(size) - 1, &sub, sizeof(sub)); + return sub; +} + +/* envoy.type.http.v3.CookieAttribute */ + +UPB_INLINE envoy_type_http_v3_CookieAttribute* envoy_type_http_v3_CookieAttribute_new(upb_Arena* arena) { + return (envoy_type_http_v3_CookieAttribute*)_upb_Message_New(&envoy__type__http__v3__CookieAttribute_msg_init, arena); +} +UPB_INLINE envoy_type_http_v3_CookieAttribute* envoy_type_http_v3_CookieAttribute_parse(const char* buf, size_t size, upb_Arena* arena) { + envoy_type_http_v3_CookieAttribute* ret = envoy_type_http_v3_CookieAttribute_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__type__http__v3__CookieAttribute_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE envoy_type_http_v3_CookieAttribute* envoy_type_http_v3_CookieAttribute_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + envoy_type_http_v3_CookieAttribute* ret = envoy_type_http_v3_CookieAttribute_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &envoy__type__http__v3__CookieAttribute_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* envoy_type_http_v3_CookieAttribute_serialize(const envoy_type_http_v3_CookieAttribute* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__type__http__v3__CookieAttribute_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* envoy_type_http_v3_CookieAttribute_serialize_ex(const envoy_type_http_v3_CookieAttribute* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &envoy__type__http__v3__CookieAttribute_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void envoy_type_http_v3_CookieAttribute_clear_name(envoy_type_http_v3_CookieAttribute* msg) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_type_http_v3_CookieAttribute_name(const envoy_type_http_v3_CookieAttribute* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void envoy_type_http_v3_CookieAttribute_clear_value(envoy_type_http_v3_CookieAttribute* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_type_http_v3_CookieAttribute_value(const envoy_type_http_v3_CookieAttribute* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} + +UPB_INLINE void envoy_type_http_v3_CookieAttribute_set_name(envoy_type_http_v3_CookieAttribute *msg, upb_StringView value) { + const upb_MiniTableField field = {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void envoy_type_http_v3_CookieAttribute_set_value(envoy_type_http_v3_CookieAttribute *msg, upb_StringView value) { + const upb_MiniTableField field = {2, UPB_SIZE(16, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c index 40d920722ba..2cb02072e3a 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c @@ -17,20 +17,22 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal envoy_type_http_v3_Cookie__submsgs[1] = { +static const upb_MiniTableSubInternal envoy_type_http_v3_Cookie__submsgs[2] = { {.UPB_PRIVATE(submsg) = &google__protobuf__Duration_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &envoy__type__http__v3__CookieAttribute_msg_init_ptr}, }; -static const upb_MiniTableField envoy_type_http_v3_Cookie__fields[3] = { - {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_type_http_v3_Cookie__fields[4] = { + {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(24, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(16, 56), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__type__http__v3__Cookie_msg_init = { &envoy_type_http_v3_Cookie__submsgs[0], &envoy_type_http_v3_Cookie__fields[0], - UPB_SIZE(32, 56), 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, + UPB_SIZE(40, 64), 4, kUpb_ExtMode_NonExtendable, 4, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.type.http.v3.Cookie", #endif @@ -39,19 +41,45 @@ const upb_MiniTable envoy__type__http__v3__Cookie_msg_init = { {0x001000003f00000a, &upb_pss_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x002000003f00001a, &upb_pss_1bt}, + {0x003800003f010022, &upb_prm_1bt_max64b}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; const upb_MiniTable* envoy__type__http__v3__Cookie_msg_init_ptr = &envoy__type__http__v3__Cookie_msg_init; -static const upb_MiniTable *messages_layout[1] = { +static const upb_MiniTableField envoy_type_http_v3_CookieAttribute__fields[2] = { + {1, 8, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(16, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable envoy__type__http__v3__CookieAttribute_msg_init = { + NULL, + &envoy_type_http_v3_CookieAttribute__fields[0], + UPB_SIZE(24, 40), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "envoy.type.http.v3.CookieAttribute", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x000800003f00000a, &upb_pss_1bt}, + {0x001800003f000012, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* envoy__type__http__v3__CookieAttribute_msg_init_ptr = &envoy__type__http__v3__CookieAttribute_msg_init; +static const upb_MiniTable *messages_layout[2] = { &envoy__type__http__v3__Cookie_msg_init, + &envoy__type__http__v3__CookieAttribute_msg_init, }; const upb_MiniTableFile envoy_type_http_v3_cookie_proto_upb_file_layout = { messages_layout, NULL, NULL, - 1, + 2, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h index 9967d424fab..55d6c25a66f 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h @@ -20,6 +20,8 @@ extern "C" { extern const upb_MiniTable envoy__type__http__v3__Cookie_msg_init; extern const upb_MiniTable* envoy__type__http__v3__Cookie_msg_init_ptr; +extern const upb_MiniTable envoy__type__http__v3__CookieAttribute_msg_init; +extern const upb_MiniTable* envoy__type__http__v3__CookieAttribute_msg_init_ptr; extern const upb_MiniTableFile envoy_type_http_v3_cookie_proto_upb_file_layout; diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h b/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h index 81e9c2b9617..aa001e82433 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h @@ -76,104 +76,121 @@ typedef enum { envoy_type_tracing_v3_CustomTag_type_environment = 3, envoy_type_tracing_v3_CustomTag_type_request_header = 4, envoy_type_tracing_v3_CustomTag_type_metadata = 5, + envoy_type_tracing_v3_CustomTag_type_value = 6, envoy_type_tracing_v3_CustomTag_type_NOT_SET = 0 } envoy_type_tracing_v3_CustomTag_type_oneofcases; UPB_INLINE envoy_type_tracing_v3_CustomTag_type_oneofcases envoy_type_tracing_v3_CustomTag_type_case(const envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (envoy_type_tracing_v3_CustomTag_type_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_type(envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &envoy__type__tracing__v3__CustomTag_msg_init, &field); } UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_tag(envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_tag(const envoy_type_tracing_v3_CustomTag* msg) { upb_StringView default_val = upb_StringView_FromString(""); upb_StringView ret; - const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_literal(envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3_CustomTag_literal(const envoy_type_tracing_v3_CustomTag* msg) { const envoy_type_tracing_v3_CustomTag_Literal* default_val = NULL; const envoy_type_tracing_v3_CustomTag_Literal* ret; - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Literal_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_literal(const envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_environment(envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracing_v3_CustomTag_environment(const envoy_type_tracing_v3_CustomTag* msg) { const envoy_type_tracing_v3_CustomTag_Environment* default_val = NULL; const envoy_type_tracing_v3_CustomTag_Environment* ret; - const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Environment_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_environment(const envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_request_header(envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_CustomTag_request_header(const envoy_type_tracing_v3_CustomTag* msg) { const envoy_type_tracing_v3_CustomTag_Header* default_val = NULL; const envoy_type_tracing_v3_CustomTag_Header* ret; - const upb_MiniTableField field = {4, UPB_SIZE(12, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Header_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_request_header(const envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_metadata(envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(12, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const envoy_type_tracing_v3_CustomTag_Metadata* envoy_type_tracing_v3_CustomTag_metadata(const envoy_type_tracing_v3_CustomTag* msg) { const envoy_type_tracing_v3_CustomTag_Metadata* default_val = NULL; const envoy_type_tracing_v3_CustomTag_Metadata* ret; - const upb_MiniTableField field = {5, UPB_SIZE(12, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Metadata_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_metadata(const envoy_type_tracing_v3_CustomTag* msg) { - const upb_MiniTableField field = {5, UPB_SIZE(12, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_value(envoy_type_tracing_v3_CustomTag* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(20, 32), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_value(const envoy_type_tracing_v3_CustomTag* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {6, UPB_SIZE(20, 32), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_value(const envoy_type_tracing_v3_CustomTag* msg) { + const upb_MiniTableField field = {6, UPB_SIZE(20, 32), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_tag(envoy_type_tracing_v3_CustomTag *msg, upb_StringView value) { - const upb_MiniTableField field = {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(12, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_literal(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Literal* value) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(20, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Literal_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -186,7 +203,7 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3 return sub; } UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_environment(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Environment* value) { - const upb_MiniTableField field = {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {3, UPB_SIZE(20, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Environment_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -199,7 +216,7 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracin return sub; } UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_request_header(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Header* value) { - const upb_MiniTableField field = {4, UPB_SIZE(12, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {4, UPB_SIZE(20, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Header_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -212,7 +229,7 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_ return sub; } UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_metadata(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Metadata* value) { - const upb_MiniTableField field = {5, UPB_SIZE(12, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {5, UPB_SIZE(20, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&envoy__type__tracing__v3__CustomTag__Metadata_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -224,6 +241,10 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Metadata* envoy_type_tracing_v } return sub; } +UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_value(envoy_type_tracing_v3_CustomTag *msg, upb_StringView value) { + const upb_MiniTableField field = {6, UPB_SIZE(20, 32), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* envoy.type.tracing.v3.CustomTag.Literal */ diff --git a/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c index 362fed1f4c7..d6ef429c8a3 100644 --- a/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c @@ -25,18 +25,19 @@ static const upb_MiniTableSubInternal envoy_type_tracing_v3_CustomTag__submsgs[4 {.UPB_PRIVATE(submsg) = &envoy__type__tracing__v3__CustomTag__Metadata_msg_init_ptr}, }; -static const upb_MiniTableField envoy_type_tracing_v3_CustomTag__fields[5] = { - {1, 16, 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(12, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {3, UPB_SIZE(12, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {4, UPB_SIZE(12, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {5, UPB_SIZE(12, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField envoy_type_tracing_v3_CustomTag__fields[6] = { + {1, UPB_SIZE(12, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(20, 32), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(20, 32), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(20, 32), -9, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(20, 32), -9, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {6, UPB_SIZE(20, 32), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable envoy__type__tracing__v3__CustomTag_msg_init = { &envoy_type_tracing_v3_CustomTag__submsgs[0], &envoy_type_tracing_v3_CustomTag__fields[0], - UPB_SIZE(24, 40), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(32, 48), 6, kUpb_ExtMode_NonExtendable, 6, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "envoy.type.tracing.v3.CustomTag", #endif @@ -47,7 +48,7 @@ const upb_MiniTable envoy__type__tracing__v3__CustomTag_msg_init = { {0x002000080301001a, &upb_pom_1bt_max64b}, {0x0020000804020022, &upb_pom_1bt_max64b}, {0x002000080503002a, &upb_pom_1bt_max64b}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0020000806000032, &upb_pos_1bt}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h b/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h index aeb252f14e5..31f476b389f 100644 --- a/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h @@ -26,6 +26,7 @@ typedef struct grpc_channelz_v2_Promise { upb_Message UPB_PRIVATE(base); } grpc_ typedef struct grpc_channelz_v2_Promise_Custom { upb_Message UPB_PRIVATE(base); } grpc_channelz_v2_Promise_Custom; typedef struct grpc_channelz_v2_Promise_If { upb_Message UPB_PRIVATE(base); } grpc_channelz_v2_Promise_If; typedef struct grpc_channelz_v2_Promise_Loop { upb_Message UPB_PRIVATE(base); } grpc_channelz_v2_Promise_Loop; +typedef struct grpc_channelz_v2_Promise_ForEach { upb_Message UPB_PRIVATE(base); } grpc_channelz_v2_Promise_ForEach; typedef struct grpc_channelz_v2_Promise_Race { upb_Message UPB_PRIVATE(base); } grpc_channelz_v2_Promise_Race; typedef struct grpc_channelz_v2_Promise_SeqStep { upb_Message UPB_PRIVATE(base); } grpc_channelz_v2_Promise_SeqStep; typedef struct grpc_channelz_v2_Promise_Seq { upb_Message UPB_PRIVATE(base); } grpc_channelz_v2_Promise_Seq; @@ -37,7 +38,8 @@ struct grpc_channelz_v2_PropertyList; typedef enum { grpc_channelz_v2_Promise_UNKNOWN = 0, grpc_channelz_v2_Promise_NORMAL = 1, - grpc_channelz_v2_Promise_TRY = 2 + grpc_channelz_v2_Promise_TRY = 2, + grpc_channelz_v2_Promise_ALL_OK = 3 } grpc_channelz_v2_Promise_CompositionKind; @@ -87,6 +89,7 @@ typedef enum { grpc_channelz_v2_Promise_promise_seq_promise = 6, grpc_channelz_v2_Promise_promise_join_promise = 7, grpc_channelz_v2_Promise_promise_map_promise = 8, + grpc_channelz_v2_Promise_promise_for_each_promise = 9, grpc_channelz_v2_Promise_promise_NOT_SET = 0 } grpc_channelz_v2_Promise_promise_oneofcases; UPB_INLINE grpc_channelz_v2_Promise_promise_oneofcases grpc_channelz_v2_Promise_promise_case(const grpc_channelz_v2_Promise* msg) { @@ -233,6 +236,23 @@ UPB_INLINE bool grpc_channelz_v2_Promise_has_map_promise(const grpc_channelz_v2_ const upb_MiniTableField field = {8, UPB_SIZE(12, 16), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void grpc_channelz_v2_Promise_clear_for_each_promise(grpc_channelz_v2_Promise* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const grpc_channelz_v2_Promise_ForEach* grpc_channelz_v2_Promise_for_each_promise(const grpc_channelz_v2_Promise* msg) { + const grpc_channelz_v2_Promise_ForEach* default_val = NULL; + const grpc_channelz_v2_Promise_ForEach* ret; + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&grpc__channelz__v2__Promise__ForEach_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool grpc_channelz_v2_Promise_has_for_each_promise(const grpc_channelz_v2_Promise* msg) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void grpc_channelz_v2_Promise_set_custom_promise(grpc_channelz_v2_Promise *msg, grpc_channelz_v2_Promise_Custom* value) { const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; @@ -329,6 +349,19 @@ UPB_INLINE struct grpc_channelz_v2_Promise_Map* grpc_channelz_v2_Promise_mutable } return sub; } +UPB_INLINE void grpc_channelz_v2_Promise_set_for_each_promise(grpc_channelz_v2_Promise *msg, grpc_channelz_v2_Promise_ForEach* value) { + const upb_MiniTableField field = {9, UPB_SIZE(12, 16), -9, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&grpc__channelz__v2__Promise__ForEach_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct grpc_channelz_v2_Promise_ForEach* grpc_channelz_v2_Promise_mutable_for_each_promise(grpc_channelz_v2_Promise* msg, upb_Arena* arena) { + struct grpc_channelz_v2_Promise_ForEach* sub = (struct grpc_channelz_v2_Promise_ForEach*)grpc_channelz_v2_Promise_for_each_promise(msg); + if (sub == NULL) { + sub = (struct grpc_channelz_v2_Promise_ForEach*)_upb_Message_New(&grpc__channelz__v2__Promise__ForEach_msg_init, arena); + if (sub) grpc_channelz_v2_Promise_set_for_each_promise(msg, sub); + } + return sub; +} /* grpc.channelz.v2.Promise.Custom */ @@ -630,6 +663,136 @@ UPB_INLINE void grpc_channelz_v2_Promise_Loop_set_yield(grpc_channelz_v2_Promise upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +/* grpc.channelz.v2.Promise.ForEach */ + +UPB_INLINE grpc_channelz_v2_Promise_ForEach* grpc_channelz_v2_Promise_ForEach_new(upb_Arena* arena) { + return (grpc_channelz_v2_Promise_ForEach*)_upb_Message_New(&grpc__channelz__v2__Promise__ForEach_msg_init, arena); +} +UPB_INLINE grpc_channelz_v2_Promise_ForEach* grpc_channelz_v2_Promise_ForEach_parse(const char* buf, size_t size, upb_Arena* arena) { + grpc_channelz_v2_Promise_ForEach* ret = grpc_channelz_v2_Promise_ForEach_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &grpc__channelz__v2__Promise__ForEach_msg_init, NULL, 0, arena) != + kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE grpc_channelz_v2_Promise_ForEach* grpc_channelz_v2_Promise_ForEach_parse_ex(const char* buf, size_t size, + const upb_ExtensionRegistry* extreg, + int options, upb_Arena* arena) { + grpc_channelz_v2_Promise_ForEach* ret = grpc_channelz_v2_Promise_ForEach_new(arena); + if (!ret) return NULL; + if (upb_Decode(buf, size, UPB_UPCAST(ret), &grpc__channelz__v2__Promise__ForEach_msg_init, extreg, options, + arena) != kUpb_DecodeStatus_Ok) { + return NULL; + } + return ret; +} +UPB_INLINE char* grpc_channelz_v2_Promise_ForEach_serialize(const grpc_channelz_v2_Promise_ForEach* msg, upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &grpc__channelz__v2__Promise__ForEach_msg_init, 0, arena, &ptr, len); + return ptr; +} +UPB_INLINE char* grpc_channelz_v2_Promise_ForEach_serialize_ex(const grpc_channelz_v2_Promise_ForEach* msg, int options, + upb_Arena* arena, size_t* len) { + char* ptr; + (void)upb_Encode(UPB_UPCAST(msg), &grpc__channelz__v2__Promise__ForEach_msg_init, options, arena, &ptr, len); + return ptr; +} +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_clear_reader_factory(grpc_channelz_v2_Promise_ForEach* msg) { + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView grpc_channelz_v2_Promise_ForEach_reader_factory(const grpc_channelz_v2_Promise_ForEach* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_clear_action_factory(grpc_channelz_v2_Promise_ForEach* msg) { + const upb_MiniTableField field = {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView grpc_channelz_v2_Promise_ForEach_action_factory(const grpc_channelz_v2_Promise_ForEach* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_clear_reader_promise(grpc_channelz_v2_Promise_ForEach* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const grpc_channelz_v2_Promise* grpc_channelz_v2_Promise_ForEach_reader_promise(const grpc_channelz_v2_Promise_ForEach* msg) { + const grpc_channelz_v2_Promise* default_val = NULL; + const grpc_channelz_v2_Promise* ret; + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&grpc__channelz__v2__Promise_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool grpc_channelz_v2_Promise_ForEach_has_reader_promise(const grpc_channelz_v2_Promise_ForEach* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_clear_action_promise(grpc_channelz_v2_Promise_ForEach* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const grpc_channelz_v2_Promise* grpc_channelz_v2_Promise_ForEach_action_promise(const grpc_channelz_v2_Promise_ForEach* msg) { + const grpc_channelz_v2_Promise* default_val = NULL; + const grpc_channelz_v2_Promise* ret; + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&grpc__channelz__v2__Promise_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool grpc_channelz_v2_Promise_ForEach_has_action_promise(const grpc_channelz_v2_Promise_ForEach* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} + +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_set_reader_factory(grpc_channelz_v2_Promise_ForEach *msg, upb_StringView value) { + const upb_MiniTableField field = {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_set_action_factory(grpc_channelz_v2_Promise_ForEach *msg, upb_StringView value) { + const upb_MiniTableField field = {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_set_reader_promise(grpc_channelz_v2_Promise_ForEach *msg, grpc_channelz_v2_Promise* value) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&grpc__channelz__v2__Promise_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct grpc_channelz_v2_Promise* grpc_channelz_v2_Promise_ForEach_mutable_reader_promise(grpc_channelz_v2_Promise_ForEach* msg, upb_Arena* arena) { + struct grpc_channelz_v2_Promise* sub = (struct grpc_channelz_v2_Promise*)grpc_channelz_v2_Promise_ForEach_reader_promise(msg); + if (sub == NULL) { + sub = (struct grpc_channelz_v2_Promise*)_upb_Message_New(&grpc__channelz__v2__Promise_msg_init, arena); + if (sub) grpc_channelz_v2_Promise_ForEach_set_reader_promise(msg, sub); + } + return sub; +} +UPB_INLINE void grpc_channelz_v2_Promise_ForEach_set_action_promise(grpc_channelz_v2_Promise_ForEach *msg, grpc_channelz_v2_Promise* value) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&grpc__channelz__v2__Promise_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct grpc_channelz_v2_Promise* grpc_channelz_v2_Promise_ForEach_mutable_action_promise(grpc_channelz_v2_Promise_ForEach* msg, upb_Arena* arena) { + struct grpc_channelz_v2_Promise* sub = (struct grpc_channelz_v2_Promise*)grpc_channelz_v2_Promise_ForEach_action_promise(msg); + if (sub == NULL) { + sub = (struct grpc_channelz_v2_Promise*)_upb_Message_New(&grpc__channelz__v2__Promise_msg_init, arena); + if (sub) grpc_channelz_v2_Promise_ForEach_set_action_promise(msg, sub); + } + return sub; +} + /* grpc.channelz.v2.Promise.Race */ UPB_INLINE grpc_channelz_v2_Promise_Race* grpc_channelz_v2_Promise_Race_new(upb_Arena* arena) { diff --git a/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c index b02885c7cb4..71d1cd588d5 100644 --- a/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c @@ -15,7 +15,7 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal grpc_channelz_v2_Promise__submsgs[7] = { +static const upb_MiniTableSubInternal grpc_channelz_v2_Promise__submsgs[8] = { {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise__Custom_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise__If_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise__Loop_msg_init_ptr}, @@ -23,9 +23,10 @@ static const upb_MiniTableSubInternal grpc_channelz_v2_Promise__submsgs[7] = { {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise__Seq_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise__Join_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise__Map_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise__ForEach_msg_init_ptr}, }; -static const upb_MiniTableField grpc_channelz_v2_Promise__fields[8] = { +static const upb_MiniTableField grpc_channelz_v2_Promise__fields[9] = { {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {2, UPB_SIZE(12, 16), -9, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {3, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, @@ -34,12 +35,13 @@ static const upb_MiniTableField grpc_channelz_v2_Promise__fields[8] = { {6, UPB_SIZE(12, 16), -9, 4, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {7, UPB_SIZE(12, 16), -9, 5, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {8, UPB_SIZE(12, 16), -9, 6, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {9, UPB_SIZE(12, 16), -9, 7, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable grpc__channelz__v2__Promise_msg_init = { &grpc_channelz_v2_Promise__submsgs[0], &grpc_channelz_v2_Promise__fields[0], - UPB_SIZE(24, 32), 8, kUpb_ExtMode_NonExtendable, 8, UPB_FASTTABLE_MASK(120), 0, + UPB_SIZE(24, 32), 9, kUpb_ExtMode_NonExtendable, 9, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "grpc.channelz.v2.Promise", #endif @@ -53,7 +55,7 @@ const upb_MiniTable grpc__channelz__v2__Promise_msg_init = { {0x0010000806040032, &upb_pom_1bt_max64b}, {0x001000080705003a, &upb_pom_1bt_max64b}, {0x0010000808060042, &upb_pom_1bt_max64b}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000080907004a, &upb_pom_1bt_max128b}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, @@ -140,6 +142,34 @@ const upb_MiniTable grpc__channelz__v2__Promise__Loop_msg_init = { }; const upb_MiniTable* grpc__channelz__v2__Promise__Loop_msg_init_ptr = &grpc__channelz__v2__Promise__Loop_msg_init; +static const upb_MiniTableSubInternal grpc_channelz_v2_Promise_ForEach__submsgs[2] = { + {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise_msg_init_ptr}, +}; + +static const upb_MiniTableField grpc_channelz_v2_Promise_ForEach__fields[4] = { + {1, UPB_SIZE(20, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(28, 32), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 48), 64, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(16, 56), 65, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +}; + +const upb_MiniTable grpc__channelz__v2__Promise__ForEach_msg_init = { + &grpc_channelz_v2_Promise_ForEach__submsgs[0], + &grpc_channelz_v2_Promise_ForEach__fields[0], + UPB_SIZE(40, 64), 4, kUpb_ExtMode_NonExtendable, 4, UPB_FASTTABLE_MASK(24), 0, +#ifdef UPB_TRACING_ENABLED + "grpc.channelz.v2.Promise.ForEach", +#endif + UPB_FASTTABLE_INIT({ + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00000a, &upb_pss_1bt}, + {0x002000003f000012, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + }) +}; + +const upb_MiniTable* grpc__channelz__v2__Promise__ForEach_msg_init_ptr = &grpc__channelz__v2__Promise__ForEach_msg_init; static const upb_MiniTableSubInternal grpc_channelz_v2_Promise_Race__submsgs[1] = { {.UPB_PRIVATE(submsg) = &grpc__channelz__v2__Promise_msg_init_ptr}, }; @@ -286,11 +316,12 @@ const upb_MiniTable grpc__channelz__v2__Promise__Map_msg_init = { }; const upb_MiniTable* grpc__channelz__v2__Promise__Map_msg_init_ptr = &grpc__channelz__v2__Promise__Map_msg_init; -static const upb_MiniTable *messages_layout[10] = { +static const upb_MiniTable *messages_layout[11] = { &grpc__channelz__v2__Promise_msg_init, &grpc__channelz__v2__Promise__Custom_msg_init, &grpc__channelz__v2__Promise__If_msg_init, &grpc__channelz__v2__Promise__Loop_msg_init, + &grpc__channelz__v2__Promise__ForEach_msg_init, &grpc__channelz__v2__Promise__Race_msg_init, &grpc__channelz__v2__Promise__SeqStep_msg_init, &grpc__channelz__v2__Promise__Seq_msg_init, @@ -303,7 +334,7 @@ const upb_MiniTableFile src_proto_grpc_channelz_v2_promise_proto_upb_file_layout messages_layout, NULL, NULL, - 10, + 11, 0, 0, }; diff --git a/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h b/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h index 1d09fd02d51..a12bca33dc6 100644 --- a/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +++ b/deps/grpc/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h @@ -26,6 +26,8 @@ extern const upb_MiniTable grpc__channelz__v2__Promise__If_msg_init; extern const upb_MiniTable* grpc__channelz__v2__Promise__If_msg_init_ptr; extern const upb_MiniTable grpc__channelz__v2__Promise__Loop_msg_init; extern const upb_MiniTable* grpc__channelz__v2__Promise__Loop_msg_init_ptr; +extern const upb_MiniTable grpc__channelz__v2__Promise__ForEach_msg_init; +extern const upb_MiniTable* grpc__channelz__v2__Promise__ForEach_msg_init_ptr; extern const upb_MiniTable grpc__channelz__v2__Promise__Race_msg_init; extern const upb_MiniTable* grpc__channelz__v2__Promise__Race_msg_init_ptr; extern const upb_MiniTable grpc__channelz__v2__Promise__SeqStep_msg_init; diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h index f985f4b93bd..c00c8c296d5 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h @@ -13,7 +13,6 @@ #include "xds/type/matcher/v3/cel.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/type/v3/cel.upb_minitable.h" #include "validate/validate.upb_minitable.h" diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c index 1876ca4ea03..a552290a60d 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c @@ -9,7 +9,6 @@ #include #include "upb/generated_code_support.h" #include "xds/type/matcher/v3/cel.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/type/v3/cel.upb_minitable.h" #include "validate/validate.upb_minitable.h" diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h index 261e81a0ba4..49687269e5c 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h @@ -13,7 +13,6 @@ #include "xds/type/matcher/v3/http_inputs.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" // Must be last. #include "upb/port/def.inc" diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c index d7e8bf32e56..a6bcef5dbe4 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c @@ -9,7 +9,6 @@ #include #include "upb/generated_code_support.h" #include "xds/type/matcher/v3/http_inputs.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" // Must be last. #include "upb/port/def.inc" diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h index 0b55ba2b5a5..7ab77827b86 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h @@ -13,7 +13,6 @@ #include "xds/type/matcher/v3/matcher.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/core/v3/extension.upb_minitable.h" #include "xds/type/matcher/v3/string.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -223,51 +222,63 @@ typedef enum { xds_type_matcher_v3_Matcher_OnMatch_on_match_NOT_SET = 0 } xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases; UPB_INLINE xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases xds_type_matcher_v3_Matcher_OnMatch_on_match_case(const xds_type_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_clear_on_match(xds_type_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &xds__type__matcher__v3__Matcher__OnMatch_msg_init, &field); } UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_clear_matcher(xds_type_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_OnMatch_matcher(const xds_type_matcher_v3_Matcher_OnMatch* msg) { const xds_type_matcher_v3_Matcher* default_val = NULL; const xds_type_matcher_v3_Matcher* ret; - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__type__matcher__v3__Matcher_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool xds_type_matcher_v3_Matcher_OnMatch_has_matcher(const xds_type_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_clear_action(xds_type_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_OnMatch_action(const xds_type_matcher_v3_Matcher_OnMatch* msg) { const struct xds_core_v3_TypedExtensionConfig* default_val = NULL; const struct xds_core_v3_TypedExtensionConfig* ret; - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__core__v3__TypedExtensionConfig_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool xds_type_matcher_v3_Matcher_OnMatch_has_action(const xds_type_matcher_v3_Matcher_OnMatch* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_clear_keep_matching(xds_type_matcher_v3_Matcher_OnMatch* msg) { + const upb_MiniTableField field = {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE bool xds_type_matcher_v3_Matcher_OnMatch_keep_matching(const xds_type_matcher_v3_Matcher_OnMatch* msg) { + bool default_val = false; + bool ret; + const upb_MiniTableField field = {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_set_matcher(xds_type_matcher_v3_Matcher_OnMatch *msg, xds_type_matcher_v3_Matcher* value) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__type__matcher__v3__Matcher_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -280,7 +291,7 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_OnMat return sub; } UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_set_action(xds_type_matcher_v3_Matcher_OnMatch *msg, struct xds_core_v3_TypedExtensionConfig* value) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__core__v3__TypedExtensionConfig_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -292,6 +303,10 @@ UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_ } return sub; } +UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_set_keep_matching(xds_type_matcher_v3_Matcher_OnMatch *msg, bool value) { + const upb_MiniTableField field = {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* xds.type.matcher.v3.Matcher.MatcherList */ diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c index 28289fb5055..0e02926e2ba 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c @@ -9,7 +9,6 @@ #include #include "upb/generated_code_support.h" #include "xds/type/matcher/v3/matcher.upb_minitable.h" -#include "xds/annotations/v3/status.upb_minitable.h" #include "xds/core/v3/extension.upb_minitable.h" #include "xds/type/matcher/v3/string.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -51,23 +50,24 @@ static const upb_MiniTableSubInternal xds_type_matcher_v3_Matcher_OnMatch__subms {.UPB_PRIVATE(submsg) = &xds__core__v3__TypedExtensionConfig_msg_init_ptr}, }; -static const upb_MiniTableField xds_type_matcher_v3_Matcher_OnMatch__fields[2] = { - {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField xds_type_matcher_v3_Matcher_OnMatch__fields[3] = { + {1, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, }; const upb_MiniTable xds__type__matcher__v3__Matcher__OnMatch_msg_init = { &xds_type_matcher_v3_Matcher_OnMatch__submsgs[0], &xds_type_matcher_v3_Matcher_OnMatch__fields[0], - UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, + 24, 3, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(24), 0, #ifdef UPB_TRACING_ENABLED "xds.type.matcher.v3.Matcher.OnMatch", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x001000080100000a, &upb_pom_1bt_max64b}, - {0x0010000802010012, &upb_pom_1bt_maxmaxb}, - {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0010000c0100000a, &upb_pom_1bt_max64b}, + {0x0010000c02010012, &upb_pom_1bt_maxmaxb}, + {0x000800003f000018, &upb_psb1_1bt}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h index 5d8c371f899..ec261938c33 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h @@ -13,6 +13,7 @@ #include "xds/type/matcher/v3/string.upb_minitable.h" +#include "xds/core/v3/extension.upb_minitable.h" #include "xds/type/matcher/v3/regex.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -25,6 +26,7 @@ extern "C" { typedef struct xds_type_matcher_v3_StringMatcher { upb_Message UPB_PRIVATE(base); } xds_type_matcher_v3_StringMatcher; typedef struct xds_type_matcher_v3_ListStringMatcher { upb_Message UPB_PRIVATE(base); } xds_type_matcher_v3_ListStringMatcher; +struct xds_core_v3_TypedExtensionConfig; struct xds_type_matcher_v3_RegexMatcher; @@ -71,6 +73,7 @@ typedef enum { xds_type_matcher_v3_StringMatcher_match_pattern_suffix = 3, xds_type_matcher_v3_StringMatcher_match_pattern_safe_regex = 5, xds_type_matcher_v3_StringMatcher_match_pattern_contains = 7, + xds_type_matcher_v3_StringMatcher_match_pattern_custom = 8, xds_type_matcher_v3_StringMatcher_match_pattern_NOT_SET = 0 } xds_type_matcher_v3_StringMatcher_match_pattern_oneofcases; UPB_INLINE xds_type_matcher_v3_StringMatcher_match_pattern_oneofcases xds_type_matcher_v3_StringMatcher_match_pattern_case(const xds_type_matcher_v3_StringMatcher* msg) { @@ -175,6 +178,23 @@ UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_contains(const xds_type_ma const upb_MiniTableField field = {7, 16, -13, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void xds_type_matcher_v3_StringMatcher_clear_custom(xds_type_matcher_v3_StringMatcher* msg) { + const upb_MiniTableField field = {8, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_StringMatcher_custom(const xds_type_matcher_v3_StringMatcher* msg) { + const struct xds_core_v3_TypedExtensionConfig* default_val = NULL; + const struct xds_core_v3_TypedExtensionConfig* ret; + const upb_MiniTableField field = {8, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__core__v3__TypedExtensionConfig_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_custom(const xds_type_matcher_v3_StringMatcher* msg) { + const upb_MiniTableField field = {8, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_exact(xds_type_matcher_v3_StringMatcher *msg, upb_StringView value) { const upb_MiniTableField field = {1, 16, -13, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; @@ -209,6 +229,19 @@ UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_contains(xds_type_matcher_ const upb_MiniTableField field = {7, 16, -13, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } +UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_custom(xds_type_matcher_v3_StringMatcher *msg, struct xds_core_v3_TypedExtensionConfig* value) { + const upb_MiniTableField field = {8, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&xds__core__v3__TypedExtensionConfig_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_StringMatcher_mutable_custom(xds_type_matcher_v3_StringMatcher* msg, upb_Arena* arena) { + struct xds_core_v3_TypedExtensionConfig* sub = (struct xds_core_v3_TypedExtensionConfig*)xds_type_matcher_v3_StringMatcher_custom(msg); + if (sub == NULL) { + sub = (struct xds_core_v3_TypedExtensionConfig*)_upb_Message_New(&xds__core__v3__TypedExtensionConfig_msg_init, arena); + if (sub) xds_type_matcher_v3_StringMatcher_set_custom(msg, sub); + } + return sub; +} /* xds.type.matcher.v3.ListStringMatcher */ diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c index f51ab159c6f..a7704edd754 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c @@ -9,6 +9,7 @@ #include #include "upb/generated_code_support.h" #include "xds/type/matcher/v3/string.upb_minitable.h" +#include "xds/core/v3/extension.upb_minitable.h" #include "xds/type/matcher/v3/regex.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -16,23 +17,25 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal xds_type_matcher_v3_StringMatcher__submsgs[1] = { +static const upb_MiniTableSubInternal xds_type_matcher_v3_StringMatcher__submsgs[2] = { {.UPB_PRIVATE(submsg) = &xds__type__matcher__v3__RegexMatcher_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &xds__core__v3__TypedExtensionConfig_msg_init_ptr}, }; -static const upb_MiniTableField xds_type_matcher_v3_StringMatcher__fields[6] = { +static const upb_MiniTableField xds_type_matcher_v3_StringMatcher__fields[7] = { {1, 16, -13, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {2, 16, -13, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {3, 16, -13, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, {5, 16, -13, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, {6, 8, 0, kUpb_NoSub, 8, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, {7, 16, -13, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, + {8, 16, -13, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, }; const upb_MiniTable xds__type__matcher__v3__StringMatcher_msg_init = { &xds_type_matcher_v3_StringMatcher__submsgs[0], &xds_type_matcher_v3_StringMatcher__fields[0], - UPB_SIZE(24, 32), 6, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(56), 0, + UPB_SIZE(24, 32), 7, kUpb_ExtMode_NonExtendable, 3, UPB_FASTTABLE_MASK(120), 0, #ifdef UPB_TRACING_ENABLED "xds.type.matcher.v3.StringMatcher", #endif @@ -45,6 +48,14 @@ const upb_MiniTable xds__type__matcher__v3__StringMatcher_msg_init = { {0x0010000c0500002a, &upb_pom_1bt_maxmaxb}, {0x000800003f000030, &upb_psb1_1bt}, {0x0010000c0700003a, &upb_pos_1bt}, + {0x0010000c08010042, &upb_pom_1bt_maxmaxb}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb.h b/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb.h index bf4eb08fc12..3e50b6515b2 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb.h @@ -15,6 +15,8 @@ #include "google/api/expr/v1alpha1/checked.upb_minitable.h" #include "google/api/expr/v1alpha1/syntax.upb_minitable.h" +#include "cel/expr/checked.upb_minitable.h" +#include "cel/expr/syntax.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "xds/annotations/v3/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -28,6 +30,8 @@ extern "C" { typedef struct xds_type_v3_CelExpression { upb_Message UPB_PRIVATE(base); } xds_type_v3_CelExpression; typedef struct xds_type_v3_CelExtractString { upb_Message UPB_PRIVATE(base); } xds_type_v3_CelExtractString; +struct cel_expr_CheckedExpr; +struct cel_expr_ParsedExpr; struct google_api_expr_v1alpha1_CheckedExpr; struct google_api_expr_v1alpha1_ParsedExpr; struct google_protobuf_StringValue; @@ -76,51 +80,97 @@ typedef enum { xds_type_v3_CelExpression_expr_specifier_NOT_SET = 0 } xds_type_v3_CelExpression_expr_specifier_oneofcases; UPB_INLINE xds_type_v3_CelExpression_expr_specifier_oneofcases xds_type_v3_CelExpression_expr_specifier_case(const xds_type_v3_CelExpression* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return (xds_type_v3_CelExpression_expr_specifier_oneofcases)upb_Message_WhichOneofFieldNumber( UPB_UPCAST(msg), &field); } UPB_INLINE void xds_type_v3_CelExpression_clear_expr_specifier(xds_type_v3_CelExpression* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearOneof(UPB_UPCAST(msg), &xds__type__v3__CelExpression_msg_init, &field); } UPB_INLINE void xds_type_v3_CelExpression_clear_parsed_expr(xds_type_v3_CelExpression* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_api_expr_v1alpha1_ParsedExpr* xds_type_v3_CelExpression_parsed_expr(const xds_type_v3_CelExpression* msg) { const struct google_api_expr_v1alpha1_ParsedExpr* default_val = NULL; const struct google_api_expr_v1alpha1_ParsedExpr* ret; - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__api__expr__v1alpha1__ParsedExpr_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool xds_type_v3_CelExpression_has_parsed_expr(const xds_type_v3_CelExpression* msg) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE void xds_type_v3_CelExpression_clear_checked_expr(xds_type_v3_CelExpression* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); } UPB_INLINE const struct google_api_expr_v1alpha1_CheckedExpr* xds_type_v3_CelExpression_checked_expr(const xds_type_v3_CelExpression* msg) { const struct google_api_expr_v1alpha1_CheckedExpr* default_val = NULL; const struct google_api_expr_v1alpha1_CheckedExpr* ret; - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__api__expr__v1alpha1__CheckedExpr_msg_init); _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, &default_val, &ret); return ret; } UPB_INLINE bool xds_type_v3_CelExpression_has_checked_expr(const xds_type_v3_CelExpression* msg) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); } +UPB_INLINE void xds_type_v3_CelExpression_clear_cel_expr_parsed(xds_type_v3_CelExpression* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct cel_expr_ParsedExpr* xds_type_v3_CelExpression_cel_expr_parsed(const xds_type_v3_CelExpression* msg) { + const struct cel_expr_ParsedExpr* default_val = NULL; + const struct cel_expr_ParsedExpr* ret; + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__ParsedExpr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool xds_type_v3_CelExpression_has_cel_expr_parsed(const xds_type_v3_CelExpression* msg) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void xds_type_v3_CelExpression_clear_cel_expr_checked(xds_type_v3_CelExpression* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE const struct cel_expr_CheckedExpr* xds_type_v3_CelExpression_cel_expr_checked(const xds_type_v3_CelExpression* msg) { + const struct cel_expr_CheckedExpr* default_val = NULL; + const struct cel_expr_CheckedExpr* ret; + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr_msg_init); + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} +UPB_INLINE bool xds_type_v3_CelExpression_has_cel_expr_checked(const xds_type_v3_CelExpression* msg) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + return upb_Message_HasBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE void xds_type_v3_CelExpression_clear_cel_expr_string(xds_type_v3_CelExpression* msg) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_ClearBaseField(UPB_UPCAST(msg), &field); +} +UPB_INLINE upb_StringView xds_type_v3_CelExpression_cel_expr_string(const xds_type_v3_CelExpression* msg) { + upb_StringView default_val = upb_StringView_FromString(""); + upb_StringView ret; + const upb_MiniTableField field = {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + _upb_Message_GetNonExtensionField(UPB_UPCAST(msg), &field, + &default_val, &ret); + return ret; +} UPB_INLINE void xds_type_v3_CelExpression_set_parsed_expr(xds_type_v3_CelExpression *msg, struct google_api_expr_v1alpha1_ParsedExpr* value) { - const upb_MiniTableField field = {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {1, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__api__expr__v1alpha1__ParsedExpr_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -133,7 +183,7 @@ UPB_INLINE struct google_api_expr_v1alpha1_ParsedExpr* xds_type_v3_CelExpression return sub; } UPB_INLINE void xds_type_v3_CelExpression_set_checked_expr(xds_type_v3_CelExpression *msg, struct google_api_expr_v1alpha1_CheckedExpr* value) { - const upb_MiniTableField field = {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + const upb_MiniTableField field = {2, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; UPB_PRIVATE(_upb_MiniTable_StrongReference)(&google__api__expr__v1alpha1__CheckedExpr_msg_init); upb_Message_SetBaseField((upb_Message *)msg, &field, &value); } @@ -145,6 +195,36 @@ UPB_INLINE struct google_api_expr_v1alpha1_CheckedExpr* xds_type_v3_CelExpressio } return sub; } +UPB_INLINE void xds_type_v3_CelExpression_set_cel_expr_parsed(xds_type_v3_CelExpression *msg, struct cel_expr_ParsedExpr* value) { + const upb_MiniTableField field = {3, UPB_SIZE(12, 32), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__ParsedExpr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_ParsedExpr* xds_type_v3_CelExpression_mutable_cel_expr_parsed(xds_type_v3_CelExpression* msg, upb_Arena* arena) { + struct cel_expr_ParsedExpr* sub = (struct cel_expr_ParsedExpr*)xds_type_v3_CelExpression_cel_expr_parsed(msg); + if (sub == NULL) { + sub = (struct cel_expr_ParsedExpr*)_upb_Message_New(&cel__expr__ParsedExpr_msg_init, arena); + if (sub) xds_type_v3_CelExpression_set_cel_expr_parsed(msg, sub); + } + return sub; +} +UPB_INLINE void xds_type_v3_CelExpression_set_cel_expr_checked(xds_type_v3_CelExpression *msg, struct cel_expr_CheckedExpr* value) { + const upb_MiniTableField field = {4, UPB_SIZE(16, 40), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}; + UPB_PRIVATE(_upb_MiniTable_StrongReference)(&cel__expr__CheckedExpr_msg_init); + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} +UPB_INLINE struct cel_expr_CheckedExpr* xds_type_v3_CelExpression_mutable_cel_expr_checked(xds_type_v3_CelExpression* msg, upb_Arena* arena) { + struct cel_expr_CheckedExpr* sub = (struct cel_expr_CheckedExpr*)xds_type_v3_CelExpression_cel_expr_checked(msg); + if (sub == NULL) { + sub = (struct cel_expr_CheckedExpr*)_upb_Message_New(&cel__expr__CheckedExpr_msg_init, arena); + if (sub) xds_type_v3_CelExpression_set_cel_expr_checked(msg, sub); + } + return sub; +} +UPB_INLINE void xds_type_v3_CelExpression_set_cel_expr_string(xds_type_v3_CelExpression *msg, upb_StringView value) { + const upb_MiniTableField field = {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}; + upb_Message_SetBaseField((upb_Message *)msg, &field, &value); +} /* xds.type.v3.CelExtractString */ diff --git a/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c b/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c index ce3944ad1aa..de769074f25 100644 --- a/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +++ b/deps/grpc/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c @@ -11,6 +11,8 @@ #include "xds/type/v3/cel.upb_minitable.h" #include "google/api/expr/v1alpha1/checked.upb_minitable.h" #include "google/api/expr/v1alpha1/syntax.upb_minitable.h" +#include "cel/expr/checked.upb_minitable.h" +#include "cel/expr/syntax.upb_minitable.h" #include "google/protobuf/wrappers.upb_minitable.h" #include "xds/annotations/v3/status.upb_minitable.h" #include "validate/validate.upb_minitable.h" @@ -19,27 +21,36 @@ #include "upb/port/def.inc" extern const struct upb_MiniTable UPB_PRIVATE(_kUpb_MiniTable_StaticallyTreeShaken); -static const upb_MiniTableSubInternal xds_type_v3_CelExpression__submsgs[2] = { +static const upb_MiniTableSubInternal xds_type_v3_CelExpression__submsgs[4] = { {.UPB_PRIVATE(submsg) = &google__api__expr__v1alpha1__ParsedExpr_msg_init_ptr}, {.UPB_PRIVATE(submsg) = &google__api__expr__v1alpha1__CheckedExpr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__ParsedExpr_msg_init_ptr}, + {.UPB_PRIVATE(submsg) = &cel__expr__CheckedExpr_msg_init_ptr}, }; -static const upb_MiniTableField xds_type_v3_CelExpression__fields[2] = { - {1, UPB_SIZE(12, 16), -9, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, - {2, UPB_SIZE(12, 16), -9, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, +static const upb_MiniTableField xds_type_v3_CelExpression__fields[5] = { + {1, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {2, UPB_SIZE(24, 48), UPB_SIZE(-21, -13), 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {3, UPB_SIZE(12, 32), 64, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {4, UPB_SIZE(16, 40), 65, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, + {5, UPB_SIZE(28, 16), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)}, }; const upb_MiniTable xds__type__v3__CelExpression_msg_init = { &xds_type_v3_CelExpression__submsgs[0], &xds_type_v3_CelExpression__fields[0], - UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, UPB_FASTTABLE_MASK(24), 0, + UPB_SIZE(40, 56), 5, kUpb_ExtMode_NonExtendable, 5, UPB_FASTTABLE_MASK(56), 0, #ifdef UPB_TRACING_ENABLED "xds.type.v3.CelExpression", #endif UPB_FASTTABLE_INIT({ {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, - {0x001000080100000a, &upb_pom_1bt_maxmaxb}, - {0x0010000802010012, &upb_pom_1bt_maxmaxb}, + {0x0030000c0100000a, &upb_pom_1bt_maxmaxb}, + {0x0030000c02010012, &upb_pom_1bt_maxmaxb}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, + {0x001000003f00002a, &upb_pss_1bt}, + {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, {0x0000000000000000, &_upb_FastDecoder_DecodeGeneric}, }) }; diff --git a/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c new file mode 100644 index 00000000000..f8dc075f78f --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c @@ -0,0 +1,248 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/checked.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + +#include "upb/reflection/def.h" +#include "cel/expr/checked.upbdefs.h" +#include "cel/expr/checked.upb_minitable.h" + +extern _upb_DefPool_Init cel_expr_syntax_proto_upbdefinit; +extern _upb_DefPool_Init google_protobuf_empty_proto_upbdefinit; +extern _upb_DefPool_Init google_protobuf_struct_proto_upbdefinit; + +static const char descriptor[2579] = { + '\n', '\026', 'c', 'e', 'l', '/', 'e', 'x', 'p', 'r', '/', 'c', + 'h', 'e', 'c', 'k', 'e', 'd', '.', 'p', 'r', 'o', 't', 'o', + '\022', '\010', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '\032', '\025', + 'c', 'e', 'l', '/', 'e', 'x', 'p', 'r', '/', 's', 'y', 'n', + 't', 'a', 'x', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'g', + 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '/', 'e', 'm', 'p', 't', 'y', '.', 'p', 'r', 'o', + 't', 'o', '\032', '\034', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 's', 't', 'r', 'u', + 'c', 't', '.', 'p', 'r', 'o', 't', 'o', '\"', '\272', '\003', '\n', + '\013', 'C', 'h', 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', 'r', + '\022', 'L', '\n', '\r', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', + 'e', '_', 'm', 'a', 'p', '\030', '\002', ' ', '\003', '(', '\013', '2', + '\'', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'C', + 'h', 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', 'r', '.', 'R', + 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'M', 'a', 'p', 'E', + 'n', 't', 'r', 'y', 'R', '\014', 'r', 'e', 'f', 'e', 'r', 'e', + 'n', 'c', 'e', 'M', 'a', 'p', '\022', '=', '\n', '\010', 't', 'y', + 'p', 'e', '_', 'm', 'a', 'p', '\030', '\003', ' ', '\003', '(', '\013', + '2', '\"', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', + 'C', 'h', 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', 'r', '.', + 'T', 'y', 'p', 'e', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y', + 'R', '\007', 't', 'y', 'p', 'e', 'M', 'a', 'p', '\022', '5', '\n', + '\013', 's', 'o', 'u', 'r', 'c', 'e', '_', 'i', 'n', 'f', 'o', + '\030', '\005', ' ', '\001', '(', '\013', '2', '\024', '.', 'c', 'e', 'l', + '.', 'e', 'x', 'p', 'r', '.', 'S', 'o', 'u', 'r', 'c', 'e', + 'I', 'n', 'f', 'o', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', + 'I', 'n', 'f', 'o', '\022', '!', '\n', '\014', 'e', 'x', 'p', 'r', + '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\006', ' ', '\001', + '(', '\t', 'R', '\013', 'e', 'x', 'p', 'r', 'V', 'e', 'r', 's', + 'i', 'o', 'n', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', + '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', + 'e', 'x', 'p', 'r', '.', 'E', 'x', 'p', 'r', 'R', '\004', 'e', + 'x', 'p', 'r', '\032', 'T', '\n', '\021', 'R', 'e', 'f', 'e', 'r', + 'e', 'n', 'c', 'e', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y', + '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', + '\003', 'R', '\003', 'k', 'e', 'y', '\022', ')', '\n', '\005', 'v', 'a', + 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\023', '.', + 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'R', 'e', 'f', + 'e', 'r', 'e', 'n', 'c', 'e', 'R', '\005', 'v', 'a', 'l', 'u', + 'e', ':', '\002', '8', '\001', '\032', 'J', '\n', '\014', 'T', 'y', 'p', + 'e', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', + '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\003', 'R', '\003', + 'k', 'e', 'y', '\022', '$', '\n', '\005', 'v', 'a', 'l', 'u', 'e', + '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', + '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', 'R', '\005', + 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', '\"', '\346', '\t', + '\n', '\004', 'T', 'y', 'p', 'e', '\022', '*', '\n', '\003', 'd', 'y', + 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'E', 'm', 'p', 't', 'y', 'H', '\000', 'R', '\003', 'd', + 'y', 'n', '\022', '0', '\n', '\004', 'n', 'u', 'l', 'l', '\030', '\002', + ' ', '\001', '(', '\016', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'N', + 'u', 'l', 'l', 'V', 'a', 'l', 'u', 'e', 'H', '\000', 'R', '\004', + 'n', 'u', 'l', 'l', '\022', '<', '\n', '\t', 'p', 'r', 'i', 'm', + 'i', 't', 'i', 'v', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', + '\034', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'T', + 'y', 'p', 'e', '.', 'P', 'r', 'i', 'm', 'i', 't', 'i', 'v', + 'e', 'T', 'y', 'p', 'e', 'H', '\000', 'R', '\t', 'p', 'r', 'i', + 'm', 'i', 't', 'i', 'v', 'e', '\022', '8', '\n', '\007', 'w', 'r', + 'a', 'p', 'p', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\016', '2', + '\034', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'T', + 'y', 'p', 'e', '.', 'P', 'r', 'i', 'm', 'i', 't', 'i', 'v', + 'e', 'T', 'y', 'p', 'e', 'H', '\000', 'R', '\007', 'w', 'r', 'a', + 'p', 'p', 'e', 'r', '\022', '=', '\n', '\n', 'w', 'e', 'l', 'l', + '_', 'k', 'n', 'o', 'w', 'n', '\030', '\005', ' ', '\001', '(', '\016', + '2', '\034', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', + 'T', 'y', 'p', 'e', '.', 'W', 'e', 'l', 'l', 'K', 'n', 'o', + 'w', 'n', 'T', 'y', 'p', 'e', 'H', '\000', 'R', '\t', 'w', 'e', + 'l', 'l', 'K', 'n', 'o', 'w', 'n', '\022', '6', '\n', '\t', 'l', + 'i', 's', 't', '_', 't', 'y', 'p', 'e', '\030', '\006', ' ', '\001', + '(', '\013', '2', '\027', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'T', 'y', 'p', 'e', '.', 'L', 'i', 's', 't', 'T', + 'y', 'p', 'e', 'H', '\000', 'R', '\010', 'l', 'i', 's', 't', 'T', + 'y', 'p', 'e', '\022', '3', '\n', '\010', 'm', 'a', 'p', '_', 't', + 'y', 'p', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '\026', '.', + 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', + 'e', '.', 'M', 'a', 'p', 'T', 'y', 'p', 'e', 'H', '\000', 'R', + '\007', 'm', 'a', 'p', 'T', 'y', 'p', 'e', '\022', '9', '\n', '\010', + 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\001', + '(', '\013', '2', '\033', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'T', 'y', 'p', 'e', '.', 'F', 'u', 'n', 'c', 't', + 'i', 'o', 'n', 'T', 'y', 'p', 'e', 'H', '\000', 'R', '\010', 'f', + 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\014', 'm', + 'e', 's', 's', 'a', 'g', 'e', '_', 't', 'y', 'p', 'e', '\030', + '\t', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\013', 'm', 'e', 's', + 's', 'a', 'g', 'e', 'T', 'y', 'p', 'e', '\022', '\037', '\n', '\n', + 't', 'y', 'p', 'e', '_', 'p', 'a', 'r', 'a', 'm', '\030', '\n', + ' ', '\001', '(', '\t', 'H', '\000', 'R', '\t', 't', 'y', 'p', 'e', + 'P', 'a', 'r', 'a', 'm', '\022', '$', '\n', '\004', 't', 'y', 'p', + 'e', '\030', '\013', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', + 'l', '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', 'H', + '\000', 'R', '\004', 't', 'y', 'p', 'e', '\022', '.', '\n', '\005', 'e', + 'r', 'r', 'o', 'r', '\030', '\014', ' ', '\001', '(', '\013', '2', '\026', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'E', 'm', 'p', 't', 'y', 'H', '\000', + 'R', '\005', 'e', 'r', 'r', 'o', 'r', '\022', 'B', '\n', '\r', 'a', + 'b', 's', 't', 'r', 'a', 'c', 't', '_', 't', 'y', 'p', 'e', + '\030', '\016', ' ', '\001', '(', '\013', '2', '\033', '.', 'c', 'e', 'l', + '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', '.', 'A', + 'b', 's', 't', 'r', 'a', 'c', 't', 'T', 'y', 'p', 'e', 'H', + '\000', 'R', '\014', 'a', 'b', 's', 't', 'r', 'a', 'c', 't', 'T', + 'y', 'p', 'e', '\032', '7', '\n', '\010', 'L', 'i', 's', 't', 'T', + 'y', 'p', 'e', '\022', '+', '\n', '\t', 'e', 'l', 'e', 'm', '_', + 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', + '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', + 'p', 'e', 'R', '\010', 'e', 'l', 'e', 'm', 'T', 'y', 'p', 'e', + '\032', 'c', '\n', '\007', 'M', 'a', 'p', 'T', 'y', 'p', 'e', '\022', + ')', '\n', '\010', 'k', 'e', 'y', '_', 't', 'y', 'p', 'e', '\030', + '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', + 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', 'R', '\007', 'k', + 'e', 'y', 'T', 'y', 'p', 'e', '\022', '-', '\n', '\n', 'v', 'a', + 'l', 'u', 'e', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'T', 'y', 'p', 'e', 'R', '\t', 'v', 'a', 'l', 'u', + 'e', 'T', 'y', 'p', 'e', '\032', 'l', '\n', '\014', 'F', 'u', 'n', + 'c', 't', 'i', 'o', 'n', 'T', 'y', 'p', 'e', '\022', '/', '\n', + '\013', 'r', 'e', 's', 'u', 'l', 't', '_', 't', 'y', 'p', 'e', + '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', + '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', 'R', '\n', + 'r', 'e', 's', 'u', 'l', 't', 'T', 'y', 'p', 'e', '\022', '+', + '\n', '\t', 'a', 'r', 'g', '_', 't', 'y', 'p', 'e', 's', '\030', + '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', + 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', 'R', '\010', 'a', + 'r', 'g', 'T', 'y', 'p', 'e', 's', '\032', '[', '\n', '\014', 'A', + 'b', 's', 't', 'r', 'a', 'c', 't', 'T', 'y', 'p', 'e', '\022', + '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '7', '\n', '\017', 'p', + 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '_', 't', 'y', 'p', + 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'c', + 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', + 'R', '\016', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'T', + 'y', 'p', 'e', 's', '\"', 's', '\n', '\r', 'P', 'r', 'i', 'm', + 'i', 't', 'i', 'v', 'e', 'T', 'y', 'p', 'e', '\022', '\036', '\n', + '\032', 'P', 'R', 'I', 'M', 'I', 'T', 'I', 'V', 'E', '_', 'T', + 'Y', 'P', 'E', '_', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', + 'I', 'E', 'D', '\020', '\000', '\022', '\010', '\n', '\004', 'B', 'O', 'O', + 'L', '\020', '\001', '\022', '\t', '\n', '\005', 'I', 'N', 'T', '6', '4', + '\020', '\002', '\022', '\n', '\n', '\006', 'U', 'I', 'N', 'T', '6', '4', + '\020', '\003', '\022', '\n', '\n', '\006', 'D', 'O', 'U', 'B', 'L', 'E', + '\020', '\004', '\022', '\n', '\n', '\006', 'S', 'T', 'R', 'I', 'N', 'G', + '\020', '\005', '\022', '\t', '\n', '\005', 'B', 'Y', 'T', 'E', 'S', '\020', + '\006', '\"', 'V', '\n', '\r', 'W', 'e', 'l', 'l', 'K', 'n', 'o', + 'w', 'n', 'T', 'y', 'p', 'e', '\022', '\037', '\n', '\033', 'W', 'E', + 'L', 'L', '_', 'K', 'N', 'O', 'W', 'N', '_', 'T', 'Y', 'P', + 'E', '_', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', + 'D', '\020', '\000', '\022', '\007', '\n', '\003', 'A', 'N', 'Y', '\020', '\001', + '\022', '\r', '\n', '\t', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', + 'P', '\020', '\002', '\022', '\014', '\n', '\010', 'D', 'U', 'R', 'A', 'T', + 'I', 'O', 'N', '\020', '\003', 'B', '\013', '\n', '\t', 't', 'y', 'p', + 'e', '_', 'k', 'i', 'n', 'd', '\"', '\324', '\004', '\n', '\004', 'D', + 'e', 'c', 'l', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', + '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', + '0', '\n', '\005', 'i', 'd', 'e', 'n', 't', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\030', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'D', 'e', 'c', 'l', '.', 'I', 'd', 'e', 'n', 't', + 'D', 'e', 'c', 'l', 'H', '\000', 'R', '\005', 'i', 'd', 'e', 'n', + 't', '\022', '9', '\n', '\010', 'f', 'u', 'n', 'c', 't', 'i', 'o', + 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '\033', '.', 'c', 'e', + 'l', '.', 'e', 'x', 'p', 'r', '.', 'D', 'e', 'c', 'l', '.', + 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'D', 'e', 'c', 'l', + 'H', '\000', 'R', '\010', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', + '\032', 'k', '\n', '\t', 'I', 'd', 'e', 'n', 't', 'D', 'e', 'c', + 'l', '\022', '\"', '\n', '\004', 't', 'y', 'p', 'e', '\030', '\001', ' ', + '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', + 'p', 'r', '.', 'T', 'y', 'p', 'e', 'R', '\004', 't', 'y', 'p', + 'e', '\022', '(', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\022', '.', 'c', 'e', 'l', '.', 'e', + 'x', 'p', 'r', '.', 'C', 'o', 'n', 's', 't', 'a', 'n', 't', + 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\022', '\020', '\n', '\003', 'd', + 'o', 'c', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\003', 'd', 'o', + 'c', '\032', '\320', '\002', '\n', '\014', 'F', 'u', 'n', 'c', 't', 'i', + 'o', 'n', 'D', 'e', 'c', 'l', '\022', 'B', '\n', '\t', 'o', 'v', + 'e', 'r', 'l', 'o', 'a', 'd', 's', '\030', '\001', ' ', '\003', '(', + '\013', '2', '$', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', + '.', 'D', 'e', 'c', 'l', '.', 'F', 'u', 'n', 'c', 't', 'i', + 'o', 'n', 'D', 'e', 'c', 'l', '.', 'O', 'v', 'e', 'r', 'l', + 'o', 'a', 'd', 'R', '\t', 'o', 'v', 'e', 'r', 'l', 'o', 'a', + 'd', 's', '\022', '\020', '\n', '\003', 'd', 'o', 'c', '\030', '\002', ' ', + '\001', '(', '\t', 'R', '\003', 'd', 'o', 'c', '\032', '\351', '\001', '\n', + '\010', 'O', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '\022', '\037', '\n', + '\013', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '_', 'i', 'd', + '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 'o', 'v', 'e', 'r', + 'l', 'o', 'a', 'd', 'I', 'd', '\022', '&', '\n', '\006', 'p', 'a', + 'r', 'a', 'm', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', + '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'T', 'y', + 'p', 'e', 'R', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\022', '\037', + '\n', '\013', 't', 'y', 'p', 'e', '_', 'p', 'a', 'r', 'a', 'm', + 's', '\030', '\003', ' ', '\003', '(', '\t', 'R', '\n', 't', 'y', 'p', + 'e', 'P', 'a', 'r', 'a', 'm', 's', '\022', '/', '\n', '\013', 'r', + 'e', 's', 'u', 'l', 't', '_', 't', 'y', 'p', 'e', '\030', '\004', + ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', + 'x', 'p', 'r', '.', 'T', 'y', 'p', 'e', 'R', '\n', 'r', 'e', + 's', 'u', 'l', 't', 'T', 'y', 'p', 'e', '\022', '0', '\n', '\024', + 'i', 's', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '_', + 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', + '(', '\010', 'R', '\022', 'i', 's', 'I', 'n', 's', 't', 'a', 'n', + 'c', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '\020', + '\n', '\003', 'd', 'o', 'c', '\030', '\006', ' ', '\001', '(', '\t', 'R', + '\003', 'd', 'o', 'c', 'B', '\013', '\n', '\t', 'd', 'e', 'c', 'l', + '_', 'k', 'i', 'n', 'd', '\"', 'j', '\n', '\t', 'R', 'e', 'f', + 'e', 'r', 'e', 'n', 'c', 'e', '\022', '\022', '\n', '\004', 'n', 'a', + 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', + 'm', 'e', '\022', '\037', '\n', '\013', 'o', 'v', 'e', 'r', 'l', 'o', + 'a', 'd', '_', 'i', 'd', '\030', '\003', ' ', '\003', '(', '\t', 'R', + '\n', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', 'I', 'd', '\022', + '(', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\004', ' ', '\001', + '(', '\013', '2', '\022', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'C', 'o', 'n', 's', 't', 'a', 'n', 't', 'R', '\005', + 'v', 'a', 'l', 'u', 'e', 'B', ',', '\n', '\014', 'd', 'e', 'v', + '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', 'B', '\t', 'D', + 'e', 'c', 'l', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '\014', + 'c', 'e', 'l', '.', 'd', 'e', 'v', '/', 'e', 'x', 'p', 'r', + '\370', '\001', '\001', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', +}; + +static _upb_DefPool_Init *deps[4] = { + &cel_expr_syntax_proto_upbdefinit, + &google_protobuf_empty_proto_upbdefinit, + &google_protobuf_struct_proto_upbdefinit, + NULL, +}; + +_upb_DefPool_Init cel_expr_checked_proto_upbdefinit = { + deps, + &cel_expr_checked_proto_upb_file_layout, + "cel/expr/checked.proto", + UPB_STRINGVIEW_INIT(descriptor, sizeof(descriptor)), +}; diff --git a/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h new file mode 100644 index 00000000000..1b96e152dd4 --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h @@ -0,0 +1,97 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/checked.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + + +#ifndef CEL_EXPR_CHECKED_PROTO_UPB_H__UPBDEFS_H_ +#define CEL_EXPR_CHECKED_PROTO_UPB_H__UPBDEFS_H_ + +#include "upb/reflection/def.h" +#include "upb/reflection/internal/def_pool.h" + +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern _upb_DefPool_Init cel_expr_checked_proto_upbdefinit; + +UPB_INLINE const upb_MessageDef *cel_expr_CheckedExpr_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.CheckedExpr"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_CheckedExpr_ReferenceMapEntry_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.CheckedExpr.ReferenceMapEntry"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_CheckedExpr_TypeMapEntry_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.CheckedExpr.TypeMapEntry"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Type_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Type"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Type_ListType_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Type.ListType"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Type_MapType_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Type.MapType"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Type_FunctionType_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Type.FunctionType"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Type_AbstractType_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Type.AbstractType"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Decl_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Decl"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Decl_IdentDecl_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Decl.IdentDecl"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Decl_FunctionDecl_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Decl.FunctionDecl"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Decl_FunctionDecl_Overload_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Decl.FunctionDecl.Overload"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Reference_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_checked_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Reference"); +} + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* CEL_EXPR_CHECKED_PROTO_UPB_H__UPBDEFS_H_ */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c new file mode 100644 index 00000000000..fabadd7ccac --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c @@ -0,0 +1,283 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/syntax.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + +#include "upb/reflection/def.h" +#include "cel/expr/syntax.upbdefs.h" +#include "cel/expr/syntax.upb_minitable.h" + +extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit; +extern _upb_DefPool_Init google_protobuf_struct_proto_upbdefinit; +extern _upb_DefPool_Init google_protobuf_timestamp_proto_upbdefinit; + +static const char descriptor[2993] = { + '\n', '\025', 'c', 'e', 'l', '/', 'e', 'x', 'p', 'r', '/', 's', + 'y', 'n', 't', 'a', 'x', '.', 'p', 'r', 'o', 't', 'o', '\022', + '\010', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '\032', '\036', 'g', + 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', + 'p', 'r', 'o', 't', 'o', '\032', '\034', 'g', 'o', 'o', 'g', 'l', + 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 's', + 't', 'r', 'u', 'c', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\037', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '/', 't', 'i', 'm', 'e', 's', 't', 'a', + 'm', 'p', '.', 'p', 'r', 'o', 't', 'o', '\"', 'g', '\n', '\n', + 'P', 'a', 'r', 's', 'e', 'd', 'E', 'x', 'p', 'r', '\022', '\"', + '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', + 'E', 'x', 'p', 'r', 'R', '\004', 'e', 'x', 'p', 'r', '\022', '5', + '\n', '\013', 's', 'o', 'u', 'r', 'c', 'e', '_', 'i', 'n', 'f', + 'o', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'c', 'e', + 'l', '.', 'e', 'x', 'p', 'r', '.', 'S', 'o', 'u', 'r', 'c', + 'e', 'I', 'n', 'f', 'o', 'R', '\n', 's', 'o', 'u', 'r', 'c', + 'e', 'I', 'n', 'f', 'o', '\"', '\232', '\013', '\n', '\004', 'E', 'x', + 'p', 'r', '\022', '\016', '\n', '\002', 'i', 'd', '\030', '\002', ' ', '\001', + '(', '\003', 'R', '\002', 'i', 'd', '\022', '3', '\n', '\n', 'c', 'o', + 'n', 's', 't', '_', 'e', 'x', 'p', 'r', '\030', '\003', ' ', '\001', + '(', '\013', '2', '\022', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'C', 'o', 'n', 's', 't', 'a', 'n', 't', 'H', '\000', + 'R', '\t', 'c', 'o', 'n', 's', 't', 'E', 'x', 'p', 'r', '\022', + '5', '\n', '\n', 'i', 'd', 'e', 'n', 't', '_', 'e', 'x', 'p', + 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.', 'c', 'e', + 'l', '.', 'e', 'x', 'p', 'r', '.', 'E', 'x', 'p', 'r', '.', + 'I', 'd', 'e', 'n', 't', 'H', '\000', 'R', '\t', 'i', 'd', 'e', + 'n', 't', 'E', 'x', 'p', 'r', '\022', '8', '\n', '\013', 's', 'e', + 'l', 'e', 'c', 't', '_', 'e', 'x', 'p', 'r', '\030', '\005', ' ', + '\001', '(', '\013', '2', '\025', '.', 'c', 'e', 'l', '.', 'e', 'x', + 'p', 'r', '.', 'E', 'x', 'p', 'r', '.', 'S', 'e', 'l', 'e', + 'c', 't', 'H', '\000', 'R', '\n', 's', 'e', 'l', 'e', 'c', 't', + 'E', 'x', 'p', 'r', '\022', '2', '\n', '\t', 'c', 'a', 'l', 'l', + '_', 'e', 'x', 'p', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', + '\023', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'E', + 'x', 'p', 'r', '.', 'C', 'a', 'l', 'l', 'H', '\000', 'R', '\010', + 'c', 'a', 'l', 'l', 'E', 'x', 'p', 'r', '\022', '8', '\n', '\t', + 'l', 'i', 's', 't', '_', 'e', 'x', 'p', 'r', '\030', '\007', ' ', + '\001', '(', '\013', '2', '\031', '.', 'c', 'e', 'l', '.', 'e', 'x', + 'p', 'r', '.', 'E', 'x', 'p', 'r', '.', 'C', 'r', 'e', 'a', + 't', 'e', 'L', 'i', 's', 't', 'H', '\000', 'R', '\010', 'l', 'i', + 's', 't', 'E', 'x', 'p', 'r', '\022', '>', '\n', '\013', 's', 't', + 'r', 'u', 'c', 't', '_', 'e', 'x', 'p', 'r', '\030', '\010', ' ', + '\001', '(', '\013', '2', '\033', '.', 'c', 'e', 'l', '.', 'e', 'x', + 'p', 'r', '.', 'E', 'x', 'p', 'r', '.', 'C', 'r', 'e', 'a', + 't', 'e', 'S', 't', 'r', 'u', 'c', 't', 'H', '\000', 'R', '\n', + 's', 't', 'r', 'u', 'c', 't', 'E', 'x', 'p', 'r', '\022', 'M', + '\n', '\022', 'c', 'o', 'm', 'p', 'r', 'e', 'h', 'e', 'n', 's', + 'i', 'o', 'n', '_', 'e', 'x', 'p', 'r', '\030', '\t', ' ', '\001', + '(', '\013', '2', '\034', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'E', 'x', 'p', 'r', '.', 'C', 'o', 'm', 'p', 'r', + 'e', 'h', 'e', 'n', 's', 'i', 'o', 'n', 'H', '\000', 'R', '\021', + 'c', 'o', 'm', 'p', 'r', 'e', 'h', 'e', 'n', 's', 'i', 'o', + 'n', 'E', 'x', 'p', 'r', '\032', '\033', '\n', '\005', 'I', 'd', 'e', + 'n', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', + ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\032', 'e', + '\n', '\006', 'S', 'e', 'l', 'e', 'c', 't', '\022', '(', '\n', '\007', + 'o', 'p', 'e', 'r', 'a', 'n', 'd', '\030', '\001', ' ', '\001', '(', + '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', + '.', 'E', 'x', 'p', 'r', 'R', '\007', 'o', 'p', 'e', 'r', 'a', + 'n', 'd', '\022', '\024', '\n', '\005', 'f', 'i', 'e', 'l', 'd', '\030', + '\002', ' ', '\001', '(', '\t', 'R', '\005', 'f', 'i', 'e', 'l', 'd', + '\022', '\033', '\n', '\t', 't', 'e', 's', 't', '_', 'o', 'n', 'l', + 'y', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\010', 't', 'e', 's', + 't', 'O', 'n', 'l', 'y', '\032', 'n', '\n', '\004', 'C', 'a', 'l', + 'l', '\022', '&', '\n', '\006', 't', 'a', 'r', 'g', 'e', 't', '\030', + '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', + 'e', 'x', 'p', 'r', '.', 'E', 'x', 'p', 'r', 'R', '\006', 't', + 'a', 'r', 'g', 'e', 't', '\022', '\032', '\n', '\010', 'f', 'u', 'n', + 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\t', 'R', + '\010', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '\"', '\n', + '\004', 'a', 'r', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', + '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'E', + 'x', 'p', 'r', 'R', '\004', 'a', 'r', 'g', 's', '\032', 'c', '\n', + '\n', 'C', 'r', 'e', 'a', 't', 'e', 'L', 'i', 's', 't', '\022', + '*', '\n', '\010', 'e', 'l', 'e', 'm', 'e', 'n', 't', 's', '\030', + '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', + 'e', 'x', 'p', 'r', '.', 'E', 'x', 'p', 'r', 'R', '\010', 'e', + 'l', 'e', 'm', 'e', 'n', 't', 's', '\022', ')', '\n', '\020', 'o', + 'p', 't', 'i', 'o', 'n', 'a', 'l', '_', 'i', 'n', 'd', 'i', + 'c', 'e', 's', '\030', '\002', ' ', '\003', '(', '\005', 'R', '\017', 'o', + 'p', 't', 'i', 'o', 'n', 'a', 'l', 'I', 'n', 'd', 'i', 'c', + 'e', 's', '\032', '\253', '\002', '\n', '\014', 'C', 'r', 'e', 'a', 't', + 'e', 'S', 't', 'r', 'u', 'c', 't', '\022', '!', '\n', '\014', 'm', + 'e', 's', 's', 'a', 'g', 'e', '_', 'n', 'a', 'm', 'e', '\030', + '\001', ' ', '\001', '(', '\t', 'R', '\013', 'm', 'e', 's', 's', 'a', + 'g', 'e', 'N', 'a', 'm', 'e', '\022', ';', '\n', '\007', 'e', 'n', + 't', 'r', 'i', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', + '!', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'E', + 'x', 'p', 'r', '.', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', + 'r', 'u', 'c', 't', '.', 'E', 'n', 't', 'r', 'y', 'R', '\007', + 'e', 'n', 't', 'r', 'i', 'e', 's', '\032', '\272', '\001', '\n', '\005', + 'E', 'n', 't', 'r', 'y', '\022', '\016', '\n', '\002', 'i', 'd', '\030', + '\001', ' ', '\001', '(', '\003', 'R', '\002', 'i', 'd', '\022', '\035', '\n', + '\t', 'f', 'i', 'e', 'l', 'd', '_', 'k', 'e', 'y', '\030', '\002', + ' ', '\001', '(', '\t', 'H', '\000', 'R', '\010', 'f', 'i', 'e', 'l', + 'd', 'K', 'e', 'y', '\022', ')', '\n', '\007', 'm', 'a', 'p', '_', + 'k', 'e', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', + 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'E', 'x', 'p', + 'r', 'H', '\000', 'R', '\006', 'm', 'a', 'p', 'K', 'e', 'y', '\022', + '$', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\004', ' ', '\001', + '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'E', 'x', 'p', 'r', 'R', '\005', 'v', 'a', 'l', 'u', + 'e', '\022', '%', '\n', '\016', 'o', 'p', 't', 'i', 'o', 'n', 'a', + 'l', '_', 'e', 'n', 't', 'r', 'y', '\030', '\005', ' ', '\001', '(', + '\010', 'R', '\r', 'o', 'p', 't', 'i', 'o', 'n', 'a', 'l', 'E', + 'n', 't', 'r', 'y', 'B', '\n', '\n', '\010', 'k', 'e', 'y', '_', + 'k', 'i', 'n', 'd', '\032', '\312', '\002', '\n', '\r', 'C', 'o', 'm', + 'p', 'r', 'e', 'h', 'e', 'n', 's', 'i', 'o', 'n', '\022', '\031', + '\n', '\010', 'i', 't', 'e', 'r', '_', 'v', 'a', 'r', '\030', '\001', + ' ', '\001', '(', '\t', 'R', '\007', 'i', 't', 'e', 'r', 'V', 'a', + 'r', '\022', '\033', '\n', '\t', 'i', 't', 'e', 'r', '_', 'v', 'a', + 'r', '2', '\030', '\010', ' ', '\001', '(', '\t', 'R', '\010', 'i', 't', + 'e', 'r', 'V', 'a', 'r', '2', '\022', '-', '\n', '\n', 'i', 't', + 'e', 'r', '_', 'r', 'a', 'n', 'g', 'e', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'E', 'x', 'p', 'r', 'R', '\t', 'i', 't', 'e', 'r', + 'R', 'a', 'n', 'g', 'e', '\022', '\031', '\n', '\010', 'a', 'c', 'c', + 'u', '_', 'v', 'a', 'r', '\030', '\003', ' ', '\001', '(', '\t', 'R', + '\007', 'a', 'c', 'c', 'u', 'V', 'a', 'r', '\022', '+', '\n', '\t', + 'a', 'c', 'c', 'u', '_', 'i', 'n', 'i', 't', '\030', '\004', ' ', + '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', + 'p', 'r', '.', 'E', 'x', 'p', 'r', 'R', '\010', 'a', 'c', 'c', + 'u', 'I', 'n', 'i', 't', '\022', '5', '\n', '\016', 'l', 'o', 'o', + 'p', '_', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', + '\005', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', 'l', '.', + 'e', 'x', 'p', 'r', '.', 'E', 'x', 'p', 'r', 'R', '\r', 'l', + 'o', 'o', 'p', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', + '\022', '+', '\n', '\t', 'l', 'o', 'o', 'p', '_', 's', 't', 'e', + 'p', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'c', 'e', + 'l', '.', 'e', 'x', 'p', 'r', '.', 'E', 'x', 'p', 'r', 'R', + '\010', 'l', 'o', 'o', 'p', 'S', 't', 'e', 'p', '\022', '&', '\n', + '\006', 'r', 'e', 's', 'u', 'l', 't', '\030', '\007', ' ', '\001', '(', + '\013', '2', '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', + '.', 'E', 'x', 'p', 'r', 'R', '\006', 'r', 'e', 's', 'u', 'l', + 't', 'B', '\013', '\n', '\t', 'e', 'x', 'p', 'r', '_', 'k', 'i', + 'n', 'd', '\"', '\301', '\003', '\n', '\010', 'C', 'o', 'n', 's', 't', + 'a', 'n', 't', '\022', ';', '\n', '\n', 'n', 'u', 'l', 'l', '_', + 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', + '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'N', 'u', 'l', 'l', 'V', 'a', + 'l', 'u', 'e', 'H', '\000', 'R', '\t', 'n', 'u', 'l', 'l', 'V', + 'a', 'l', 'u', 'e', '\022', '\037', '\n', '\n', 'b', 'o', 'o', 'l', + '_', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\010', + 'H', '\000', 'R', '\t', 'b', 'o', 'o', 'l', 'V', 'a', 'l', 'u', + 'e', '\022', '!', '\n', '\013', 'i', 'n', 't', '6', '4', '_', 'v', + 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\003', 'H', '\000', + 'R', '\n', 'i', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', + '\022', '#', '\n', '\014', 'u', 'i', 'n', 't', '6', '4', '_', 'v', + 'a', 'l', 'u', 'e', '\030', '\004', ' ', '\001', '(', '\004', 'H', '\000', + 'R', '\013', 'u', 'i', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', + 'e', '\022', '#', '\n', '\014', 'd', 'o', 'u', 'b', 'l', 'e', '_', + 'v', 'a', 'l', 'u', 'e', '\030', '\005', ' ', '\001', '(', '\001', 'H', + '\000', 'R', '\013', 'd', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', + 'u', 'e', '\022', '#', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', + '_', 'v', 'a', 'l', 'u', 'e', '\030', '\006', ' ', '\001', '(', '\t', + 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'V', 'a', + 'l', 'u', 'e', '\022', '!', '\n', '\013', 'b', 'y', 't', 'e', 's', + '_', 'v', 'a', 'l', 'u', 'e', '\030', '\007', ' ', '\001', '(', '\014', + 'H', '\000', 'R', '\n', 'b', 'y', 't', 'e', 's', 'V', 'a', 'l', + 'u', 'e', '\022', 'F', '\n', '\016', 'd', 'u', 'r', 'a', 't', 'i', + 'o', 'n', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\010', ' ', '\001', + '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 'B', '\002', '\030', '\001', 'H', '\000', 'R', + '\r', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'V', 'a', 'l', + 'u', 'e', '\022', 'I', '\n', '\017', 't', 'i', 'm', 'e', 's', 't', + 'a', 'm', 'p', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\t', ' ', + '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', + 'm', 'e', 's', 't', 'a', 'm', 'p', 'B', '\002', '\030', '\001', 'H', + '\000', 'R', '\016', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', + 'V', 'a', 'l', 'u', 'e', 'B', '\017', '\n', '\r', 'c', 'o', 'n', + 's', 't', 'a', 'n', 't', '_', 'k', 'i', 'n', 'd', '\"', '\254', + '\006', '\n', '\n', 'S', 'o', 'u', 'r', 'c', 'e', 'I', 'n', 'f', + 'o', '\022', '%', '\n', '\016', 's', 'y', 'n', 't', 'a', 'x', '_', + 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', + '\t', 'R', '\r', 's', 'y', 'n', 't', 'a', 'x', 'V', 'e', 'r', + 's', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', + 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', + 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '!', '\n', '\014', + 'l', 'i', 'n', 'e', '_', 'o', 'f', 'f', 's', 'e', 't', 's', + '\030', '\003', ' ', '\003', '(', '\005', 'R', '\013', 'l', 'i', 'n', 'e', + 'O', 'f', 'f', 's', 'e', 't', 's', '\022', 'A', '\n', '\t', 'p', + 'o', 's', 'i', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', + '(', '\013', '2', '#', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'I', 'n', 'f', 'o', + '.', 'P', 'o', 's', 'i', 't', 'i', 'o', 'n', 's', 'E', 'n', + 't', 'r', 'y', 'R', '\t', 'p', 'o', 's', 'i', 't', 'i', 'o', + 'n', 's', '\022', 'E', '\n', '\013', 'm', 'a', 'c', 'r', 'o', '_', + 'c', 'a', 'l', 'l', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', + '$', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'S', + 'o', 'u', 'r', 'c', 'e', 'I', 'n', 'f', 'o', '.', 'M', 'a', + 'c', 'r', 'o', 'C', 'a', 'l', 'l', 's', 'E', 'n', 't', 'r', + 'y', 'R', '\n', 'm', 'a', 'c', 'r', 'o', 'C', 'a', 'l', 'l', + 's', '\022', '>', '\n', '\n', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\036', '.', + 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'S', 'o', 'u', + 'r', 'c', 'e', 'I', 'n', 'f', 'o', '.', 'E', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 'R', '\n', 'e', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 's', '\032', '<', '\n', '\016', 'P', 'o', 's', + 'i', 't', 'i', 'o', 'n', 's', 'E', 'n', 't', 'r', 'y', '\022', + '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\003', + 'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', + 'u', 'e', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\005', 'v', 'a', + 'l', 'u', 'e', ':', '\002', '8', '\001', '\032', 'M', '\n', '\017', 'M', + 'a', 'c', 'r', 'o', 'C', 'a', 'l', 'l', 's', 'E', 'n', 't', + 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', + '\001', '(', '\003', 'R', '\003', 'k', 'e', 'y', '\022', '$', '\n', '\005', + 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', + '\016', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'E', + 'x', 'p', 'r', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', + '8', '\001', '\032', '\340', '\002', '\n', '\t', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', '\022', '\016', '\n', '\002', 'i', 'd', '\030', '\001', + ' ', '\001', '(', '\t', 'R', '\002', 'i', 'd', '\022', 'Y', '\n', '\023', + 'a', 'f', 'f', 'e', 'c', 't', 'e', 'd', '_', 'c', 'o', 'm', + 'p', 'o', 'n', 'e', 'n', 't', 's', '\030', '\002', ' ', '\003', '(', + '\016', '2', '(', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', + '.', 'S', 'o', 'u', 'r', 'c', 'e', 'I', 'n', 'f', 'o', '.', + 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'C', 'o', + 'm', 'p', 'o', 'n', 'e', 'n', 't', 'R', '\022', 'a', 'f', 'f', + 'e', 'c', 't', 'e', 'd', 'C', 'o', 'm', 'p', 'o', 'n', 'e', + 'n', 't', 's', '\022', '@', '\n', '\007', 'v', 'e', 'r', 's', 'i', + 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '&', '.', 'c', + 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'S', 'o', 'u', 'r', + 'c', 'e', 'I', 'n', 'f', 'o', '.', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', '.', 'V', 'e', 'r', 's', 'i', 'o', 'n', + 'R', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\032', '5', '\n', + '\007', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022', '\024', '\n', '\005', + 'm', 'a', 'j', 'o', 'r', '\030', '\001', ' ', '\001', '(', '\003', 'R', + '\005', 'm', 'a', 'j', 'o', 'r', '\022', '\024', '\n', '\005', 'm', 'i', + 'n', 'o', 'r', '\030', '\002', ' ', '\001', '(', '\003', 'R', '\005', 'm', + 'i', 'n', 'o', 'r', '\"', 'o', '\n', '\t', 'C', 'o', 'm', 'p', + 'o', 'n', 'e', 'n', 't', '\022', '\031', '\n', '\025', 'C', 'O', 'M', + 'P', 'O', 'N', 'E', 'N', 'T', '_', 'U', 'N', 'S', 'P', 'E', + 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '\024', '\n', '\020', + 'C', 'O', 'M', 'P', 'O', 'N', 'E', 'N', 'T', '_', 'P', 'A', + 'R', 'S', 'E', 'R', '\020', '\001', '\022', '\032', '\n', '\026', 'C', 'O', + 'M', 'P', 'O', 'N', 'E', 'N', 'T', '_', 'T', 'Y', 'P', 'E', + '_', 'C', 'H', 'E', 'C', 'K', 'E', 'R', '\020', '\002', '\022', '\025', + '\n', '\021', 'C', 'O', 'M', 'P', 'O', 'N', 'E', 'N', 'T', '_', + 'R', 'U', 'N', 'T', 'I', 'M', 'E', '\020', '\003', 'B', '.', '\n', + '\014', 'd', 'e', 'v', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', + 'r', 'B', '\013', 'S', 'y', 'n', 't', 'a', 'x', 'P', 'r', 'o', + 't', 'o', 'P', '\001', 'Z', '\014', 'c', 'e', 'l', '.', 'd', 'e', + 'v', '/', 'e', 'x', 'p', 'r', '\370', '\001', '\001', 'b', '\006', 'p', + 'r', 'o', 't', 'o', '3', +}; + +static _upb_DefPool_Init *deps[4] = { + &google_protobuf_duration_proto_upbdefinit, + &google_protobuf_struct_proto_upbdefinit, + &google_protobuf_timestamp_proto_upbdefinit, + NULL, +}; + +_upb_DefPool_Init cel_expr_syntax_proto_upbdefinit = { + deps, + &cel_expr_syntax_proto_upb_file_layout, + "cel/expr/syntax.proto", + UPB_STRINGVIEW_INIT(descriptor, sizeof(descriptor)), +}; diff --git a/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h new file mode 100644 index 00000000000..15276078ce7 --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h @@ -0,0 +1,107 @@ +/* This file was generated by upb_generator from the input file: + * + * cel/expr/syntax.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + + +#ifndef CEL_EXPR_SYNTAX_PROTO_UPB_H__UPBDEFS_H_ +#define CEL_EXPR_SYNTAX_PROTO_UPB_H__UPBDEFS_H_ + +#include "upb/reflection/def.h" +#include "upb/reflection/internal/def_pool.h" + +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern _upb_DefPool_Init cel_expr_syntax_proto_upbdefinit; + +UPB_INLINE const upb_MessageDef *cel_expr_ParsedExpr_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.ParsedExpr"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_Ident_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr.Ident"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_Select_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr.Select"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_Call_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr.Call"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_CreateList_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr.CreateList"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_CreateStruct_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr.CreateStruct"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_CreateStruct_Entry_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr.CreateStruct.Entry"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Expr_Comprehension_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Expr.Comprehension"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_Constant_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.Constant"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_SourceInfo_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.SourceInfo"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_SourceInfo_PositionsEntry_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.SourceInfo.PositionsEntry"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_SourceInfo_MacroCallsEntry_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.SourceInfo.MacroCallsEntry"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_SourceInfo_Extension_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.SourceInfo.Extension"); +} + +UPB_INLINE const upb_MessageDef *cel_expr_SourceInfo_Extension_Version_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &cel_expr_syntax_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "cel.expr.SourceInfo.Extension.Version"); +} + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* CEL_EXPR_SYNTAX_PROTO_UPB_H__UPBDEFS_H_ */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c index 7b7380340d0..5689220603f 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c @@ -22,7 +22,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[4752] = { +static const char descriptor[4765] = { '\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '/', 'v', '3', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', @@ -179,7 +179,7 @@ static const char descriptor[4752] = { '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\027', '\n', '\020', 'f', 'i', 'l', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', - '\022', '\003', '\370', 'B', '\001', '\"', '\371', '\001', '\n', '\020', 'C', 'o', + '\022', '\003', '\370', 'B', '\001', '\"', '\201', '\002', '\n', '\020', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'H', '\n', '\002', 'o', 'p', '\030', '\001', ' ', '\001', '(', '\016', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', @@ -193,29 +193,16 @@ static const char descriptor[4752] = { 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'v', 'a', 'l', 'u', - 'e', '\"', '\034', '\n', '\002', 'O', 'p', '\022', '\006', '\n', '\002', 'E', + 'e', '\"', '$', '\n', '\002', 'O', 'p', '\022', '\006', '\n', '\002', 'E', 'Q', '\020', '\000', '\022', '\006', '\n', '\002', 'G', 'E', '\020', '\001', '\022', - '\006', '\n', '\002', 'L', 'E', '\020', '\002', ':', '8', '\232', '\305', '\210', - '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', - 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', - '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', - 'i', 'l', 't', 'e', 'r', '\"', '\243', '\001', '\n', '\020', 'S', 't', - 'a', 't', 'u', 's', 'C', 'o', 'd', 'e', 'F', 'i', 'l', 't', - 'e', 'r', '\022', 'U', '\n', '\n', 'c', 'o', 'm', 'p', 'a', 'r', - 'i', 's', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '+', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', - 'v', '3', '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', - 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', - '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'c', 'o', 'm', 'p', 'a', - 'r', 'i', 's', 'o', 'n', ':', '8', '\232', '\305', '\210', '\036', '3', - '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', - 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'S', - 't', 'a', 't', 'u', 's', 'C', 'o', 'd', 'e', 'F', 'i', 'l', - 't', 'e', 'r', '\"', '\237', '\001', '\n', '\016', 'D', 'u', 'r', 'a', - 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'U', + '\006', '\n', '\002', 'L', 'E', '\020', '\002', '\022', '\006', '\n', '\002', 'N', + 'E', '\020', '\003', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', + 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'C', 'o', 'm', + 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', + 'r', '\"', '\243', '\001', '\n', '\020', 'S', 't', 'a', 't', 'u', 's', + 'C', 'o', 'd', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'U', '\n', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', @@ -223,202 +210,217 @@ static const char descriptor[4752] = { 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', - 'n', ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', + 'n', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', - 'l', 'o', 'g', '.', 'v', '2', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'T', '\n', - '\024', 'N', 'o', 't', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', - 'e', 'c', 'k', 'F', 'i', 'l', 't', 'e', 'r', ':', '<', '\232', - '\305', '\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o', 'y', '.', + 'l', 'o', 'g', '.', 'v', '2', '.', 'S', 't', 'a', 't', 'u', + 's', 'C', 'o', 'd', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', + '\237', '\001', '\n', '\016', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', + 'F', 'i', 'l', 't', 'e', 'r', '\022', 'U', '\n', '\n', 'c', 'o', + 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', '\030', '\001', ' ', '\001', + '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', + 'l', 'o', 'g', '.', 'v', '3', '.', 'C', 'o', 'm', 'p', 'a', + 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'c', + 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', ':', '6', '\232', + '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', - 'v', '2', '.', 'N', 'o', 't', 'H', 'e', 'a', 'l', 't', 'h', - 'C', 'h', 'e', 'c', 'k', 'F', 'i', 'l', 't', 'e', 'r', '\"', - 'J', '\n', '\017', 'T', 'r', 'a', 'c', 'e', 'a', 'b', 'l', 'e', - 'F', 'i', 'l', 't', 'e', 'r', ':', '7', '\232', '\305', '\210', '\036', - '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', - 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', - 'T', 'r', 'a', 'c', 'e', 'a', 'b', 'l', 'e', 'F', 'i', 'l', - 't', 'e', 'r', '\"', '\371', '\001', '\n', '\r', 'R', 'u', 'n', 't', - 'i', 'm', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\022', '(', '\n', - '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', - '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', - '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', - 'K', 'e', 'y', '\022', 'I', '\n', '\017', 'p', 'e', 'r', 'c', 'e', - 'n', 't', '_', 's', 'a', 'm', 'p', 'l', 'e', 'd', '\030', '\002', - ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', - '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', - 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', - 'n', 't', 'R', '\016', 'p', 'e', 'r', 'c', 'e', 'n', 't', 'S', - 'a', 'm', 'p', 'l', 'e', 'd', '\022', '<', '\n', '\032', 'u', 's', - 'e', '_', 'i', 'n', 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', - 't', '_', 'r', 'a', 'n', 'd', 'o', 'm', 'n', 'e', 's', 's', - '\030', '\003', ' ', '\001', '(', '\010', 'R', '\030', 'u', 's', 'e', 'I', - 'n', 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 't', 'R', 'a', - 'n', 'd', 'o', 'm', 'n', 'e', 's', 's', ':', '5', '\232', '\305', - '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', - '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', - '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'i', 'l', - 't', 'e', 'r', '\"', '\216', '\001', '\n', '\t', 'A', 'n', 'd', 'F', - 'i', 'l', 't', 'e', 'r', '\022', 'N', '\n', '\007', 'f', 'i', 'l', - 't', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '*', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', - 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', - 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', - '\001', '\002', '\010', '\002', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', - 's', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', - 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', - 'l', 'o', 'g', '.', 'v', '2', '.', 'A', 'n', 'd', 'F', 'i', - 'l', 't', 'e', 'r', '\"', '\214', '\001', '\n', '\010', 'O', 'r', 'F', - 'i', 'l', 't', 'e', 'r', '\022', 'N', '\n', '\007', 'f', 'i', 'l', - 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '*', + 'v', '2', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'F', + 'i', 'l', 't', 'e', 'r', '\"', 'T', '\n', '\024', 'N', 'o', 't', + 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'F', + 'i', 'l', 't', 'e', 'r', ':', '<', '\232', '\305', '\210', '\036', '7', + '\n', '5', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', + 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'N', + 'o', 't', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', + 'k', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'J', '\n', '\017', 'T', + 'r', 'a', 'c', 'e', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', + 'e', 'r', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', + 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'T', 'r', 'a', 'c', + 'e', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', + '\371', '\001', '\n', '\r', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', + 'i', 'l', 't', 'e', 'r', '\022', '(', '\n', '\013', 'r', 'u', 'n', + 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', + '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', + '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', '\022', + 'I', '\n', '\017', 'p', 'e', 'r', 'c', 'e', 'n', 't', '_', 's', + 'a', 'm', 'p', 'l', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', + '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', + 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', + 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', + 'p', 'e', 'r', 'c', 'e', 'n', 't', 'S', 'a', 'm', 'p', 'l', + 'e', 'd', '\022', '<', '\n', '\032', 'u', 's', 'e', '_', 'i', 'n', + 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 't', '_', 'r', 'a', + 'n', 'd', 'o', 'm', 'n', 'e', 's', 's', '\030', '\003', ' ', '\001', + '(', '\010', 'R', '\030', 'u', 's', 'e', 'I', 'n', 'd', 'e', 'p', + 'e', 'n', 'd', 'e', 'n', 't', 'R', 'a', 'n', 'd', 'o', 'm', + 'n', 'e', 's', 's', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', - 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', - 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', - '\001', '\002', '\010', '\002', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', - 's', ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', - 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', - 'l', 'o', 'g', '.', 'v', '2', '.', 'O', 'r', 'F', 'i', 'l', - 't', 'e', 'r', '\"', '\214', '\001', '\n', '\014', 'H', 'e', 'a', 'd', - 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'F', '\n', '\006', - 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', - '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', - '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', - 'R', '\006', 'h', 'e', 'a', 'd', 'e', 'r', ':', '4', '\232', '\305', - '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', - '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', - '2', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'i', 'l', 't', - 'e', 'r', '\"', '\372', '\001', '\n', '\022', 'R', 'e', 's', 'p', 'o', - 'n', 's', 'e', 'F', 'l', 'a', 'g', 'F', 'i', 'l', 't', 'e', - 'r', '\022', '\247', '\001', '\n', '\005', 'f', 'l', 'a', 'g', 's', '\030', - '\001', ' ', '\003', '(', '\t', 'B', '\220', '\001', '\372', 'B', '\214', '\001', - '\222', '\001', '\210', '\001', '\"', '\205', '\001', 'r', '\202', '\001', 'R', '\002', - 'L', 'H', 'R', '\002', 'U', 'H', 'R', '\002', 'U', 'T', 'R', '\002', - 'L', 'R', 'R', '\002', 'U', 'R', 'R', '\002', 'U', 'F', 'R', '\002', - 'U', 'C', 'R', '\002', 'U', 'O', 'R', '\002', 'N', 'R', 'R', '\002', - 'D', 'I', 'R', '\002', 'F', 'I', 'R', '\002', 'R', 'L', 'R', '\004', - 'U', 'A', 'E', 'X', 'R', '\004', 'R', 'L', 'S', 'E', 'R', '\002', - 'D', 'C', 'R', '\003', 'U', 'R', 'X', 'R', '\002', 'S', 'I', 'R', - '\002', 'I', 'H', 'R', '\003', 'D', 'P', 'E', 'R', '\005', 'U', 'M', - 'S', 'D', 'R', 'R', '\004', 'R', 'F', 'C', 'F', 'R', '\004', 'N', - 'F', 'C', 'F', 'R', '\002', 'D', 'T', 'R', '\003', 'U', 'P', 'E', - 'R', '\002', 'N', 'C', 'R', '\002', 'O', 'M', 'R', '\002', 'D', 'F', - 'R', '\002', 'D', 'O', 'R', '\002', 'D', 'R', 'R', '\005', 'f', 'l', - 'a', 'g', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', - 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'R', 'e', 's', - 'p', 'o', 'n', 's', 'e', 'F', 'l', 'a', 'g', 'F', 'i', 'l', - 't', 'e', 'r', '\"', '\200', '\004', '\n', '\020', 'G', 'r', 'p', 'c', - 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', 't', 'e', 'r', - '\022', ']', '\n', '\010', 's', 't', 'a', 't', 'u', 's', 'e', 's', - '\030', '\001', ' ', '\003', '(', '\016', '2', '2', '.', 'e', 'n', 'v', + 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', + 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'R', 'u', + 'n', 't', 'i', 'm', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', + '\216', '\001', '\n', '\t', 'A', 'n', 'd', 'F', 'i', 'l', 't', 'e', + 'r', '\022', 'N', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', + '\030', '\001', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', - 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'G', - 'r', 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', - 't', 'e', 'r', '.', 'S', 't', 'a', 't', 'u', 's', 'B', '\r', - '\372', 'B', '\n', '\222', '\001', '\007', '\"', '\005', '\202', '\001', '\002', '\020', - '\001', 'R', '\010', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\022', - '\030', '\n', '\007', 'e', 'x', 'c', 'l', 'u', 'd', 'e', '\030', '\002', - ' ', '\001', '(', '\010', 'R', '\007', 'e', 'x', 'c', 'l', 'u', 'd', - 'e', '\"', '\270', '\002', '\n', '\006', 'S', 't', 'a', 't', 'u', 's', - '\022', '\006', '\n', '\002', 'O', 'K', '\020', '\000', '\022', '\014', '\n', '\010', - 'C', 'A', 'N', 'C', 'E', 'L', 'E', 'D', '\020', '\001', '\022', '\013', - '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\002', '\022', - '\024', '\n', '\020', 'I', 'N', 'V', 'A', 'L', 'I', 'D', '_', 'A', - 'R', 'G', 'U', 'M', 'E', 'N', 'T', '\020', '\003', '\022', '\025', '\n', - '\021', 'D', 'E', 'A', 'D', 'L', 'I', 'N', 'E', '_', 'E', 'X', - 'C', 'E', 'E', 'D', 'E', 'D', '\020', '\004', '\022', '\r', '\n', '\t', - 'N', 'O', 'T', '_', 'F', 'O', 'U', 'N', 'D', '\020', '\005', '\022', - '\022', '\n', '\016', 'A', 'L', 'R', 'E', 'A', 'D', 'Y', '_', 'E', - 'X', 'I', 'S', 'T', 'S', '\020', '\006', '\022', '\025', '\n', '\021', 'P', - 'E', 'R', 'M', 'I', 'S', 'S', 'I', 'O', 'N', '_', 'D', 'E', - 'N', 'I', 'E', 'D', '\020', '\007', '\022', '\026', '\n', '\022', 'R', 'E', - 'S', 'O', 'U', 'R', 'C', 'E', '_', 'E', 'X', 'H', 'A', 'U', - 'S', 'T', 'E', 'D', '\020', '\010', '\022', '\027', '\n', '\023', 'F', 'A', - 'I', 'L', 'E', 'D', '_', 'P', 'R', 'E', 'C', 'O', 'N', 'D', - 'I', 'T', 'I', 'O', 'N', '\020', '\t', '\022', '\013', '\n', '\007', 'A', - 'B', 'O', 'R', 'T', 'E', 'D', '\020', '\n', '\022', '\020', '\n', '\014', - 'O', 'U', 'T', '_', 'O', 'F', '_', 'R', 'A', 'N', 'G', 'E', - '\020', '\013', '\022', '\021', '\n', '\r', 'U', 'N', 'I', 'M', 'P', 'L', - 'E', 'M', 'E', 'N', 'T', 'E', 'D', '\020', '\014', '\022', '\014', '\n', - '\010', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '\020', '\r', '\022', - '\017', '\n', '\013', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', - 'L', 'E', '\020', '\016', '\022', '\r', '\n', '\t', 'D', 'A', 'T', 'A', - '_', 'L', 'O', 'S', 'S', '\020', '\017', '\022', '\023', '\n', '\017', 'U', - 'N', 'A', 'U', 'T', 'H', 'E', 'N', 'T', 'I', 'C', 'A', 'T', - 'E', 'D', '\020', '\020', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', - '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', + 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', 'i', 'l', 't', + 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', + 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', ':', '1', '\232', + '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', + 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', + 'v', '2', '.', 'A', 'n', 'd', 'F', 'i', 'l', 't', 'e', 'r', + '\"', '\214', '\001', '\n', '\010', 'O', 'r', 'F', 'i', 'l', 't', 'e', + 'r', '\022', 'N', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', + '\030', '\002', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', + 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', + 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', 'i', 'l', 't', + 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', + 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', ':', '0', '\232', + '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', + 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', + 'v', '2', '.', 'O', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\"', + '\214', '\001', '\n', '\014', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'i', + 'l', 't', 'e', 'r', '\022', 'F', '\n', '\006', 'h', 'e', 'a', 'd', + 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '$', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', + 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', + '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\006', 'h', 'e', + 'a', 'd', 'e', 'r', ':', '4', '\232', '\305', '\210', '\036', '/', '\n', + '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', - 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'G', 'r', - 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', 't', - 'e', 'r', '\"', '\332', '\001', '\n', '\016', 'M', 'e', 't', 'a', 'd', - 'a', 't', 'a', 'F', 'i', 'l', 't', 'e', 'r', '\022', '@', '\n', - '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', '\001', - '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', - 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', - 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '\022', 'N', '\n', '\026', 'm', 'a', 't', 'c', 'h', - '_', 'i', 'f', '_', 'k', 'e', 'y', '_', 'n', 'o', 't', '_', - 'f', 'o', 'u', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', - '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', - 'l', 'u', 'e', 'R', '\022', 'm', 'a', 't', 'c', 'h', 'I', 'f', - 'K', 'e', 'y', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', ':', - '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v', 'o', + 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'H', 'e', + 'a', 'd', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\377', + '\001', '\n', '\022', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'F', + 'l', 'a', 'g', 'F', 'i', 'l', 't', 'e', 'r', '\022', '\254', '\001', + '\n', '\005', 'f', 'l', 'a', 'g', 's', '\030', '\001', ' ', '\003', '(', + '\t', 'B', '\225', '\001', '\372', 'B', '\221', '\001', '\222', '\001', '\215', '\001', + '\"', '\212', '\001', 'r', '\207', '\001', 'R', '\002', 'L', 'H', 'R', '\002', + 'U', 'H', 'R', '\002', 'U', 'T', 'R', '\002', 'L', 'R', 'R', '\002', + 'U', 'R', 'R', '\002', 'U', 'F', 'R', '\002', 'U', 'C', 'R', '\002', + 'U', 'O', 'R', '\002', 'N', 'R', 'R', '\002', 'D', 'I', 'R', '\002', + 'F', 'I', 'R', '\002', 'R', 'L', 'R', '\004', 'U', 'A', 'E', 'X', + 'R', '\004', 'R', 'L', 'S', 'E', 'R', '\002', 'D', 'C', 'R', '\003', + 'U', 'R', 'X', 'R', '\002', 'S', 'I', 'R', '\002', 'I', 'H', 'R', + '\003', 'D', 'P', 'E', 'R', '\005', 'U', 'M', 'S', 'D', 'R', 'R', + '\004', 'R', 'F', 'C', 'F', 'R', '\004', 'N', 'F', 'C', 'F', 'R', + '\002', 'D', 'T', 'R', '\003', 'U', 'P', 'E', 'R', '\002', 'N', 'C', + 'R', '\002', 'O', 'M', 'R', '\002', 'D', 'F', 'R', '\002', 'D', 'O', + 'R', '\002', 'D', 'R', 'R', '\003', 'U', 'D', 'O', 'R', '\005', 'f', + 'l', 'a', 'g', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', + '3', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', + 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'R', 'e', + 's', 'p', 'o', 'n', 's', 'e', 'F', 'l', 'a', 'g', 'F', 'i', + 'l', 't', 'e', 'r', '\"', '\200', '\004', '\n', '\020', 'G', 'r', 'p', + 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', 't', 'e', + 'r', '\022', ']', '\n', '\010', 's', 't', 'a', 't', 'u', 's', 'e', + 's', '\030', '\001', ' ', '\003', '(', '\016', '2', '2', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', + 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', + 'G', 'r', 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', + 'l', 't', 'e', 'r', '.', 'S', 't', 'a', 't', 'u', 's', 'B', + '\r', '\372', 'B', '\n', '\222', '\001', '\007', '\"', '\005', '\202', '\001', '\002', + '\020', '\001', 'R', '\010', 's', 't', 'a', 't', 'u', 's', 'e', 's', + '\022', '\030', '\n', '\007', 'e', 'x', 'c', 'l', 'u', 'd', 'e', '\030', + '\002', ' ', '\001', '(', '\010', 'R', '\007', 'e', 'x', 'c', 'l', 'u', + 'd', 'e', '\"', '\270', '\002', '\n', '\006', 'S', 't', 'a', 't', 'u', + 's', '\022', '\006', '\n', '\002', 'O', 'K', '\020', '\000', '\022', '\014', '\n', + '\010', 'C', 'A', 'N', 'C', 'E', 'L', 'E', 'D', '\020', '\001', '\022', + '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\002', + '\022', '\024', '\n', '\020', 'I', 'N', 'V', 'A', 'L', 'I', 'D', '_', + 'A', 'R', 'G', 'U', 'M', 'E', 'N', 'T', '\020', '\003', '\022', '\025', + '\n', '\021', 'D', 'E', 'A', 'D', 'L', 'I', 'N', 'E', '_', 'E', + 'X', 'C', 'E', 'E', 'D', 'E', 'D', '\020', '\004', '\022', '\r', '\n', + '\t', 'N', 'O', 'T', '_', 'F', 'O', 'U', 'N', 'D', '\020', '\005', + '\022', '\022', '\n', '\016', 'A', 'L', 'R', 'E', 'A', 'D', 'Y', '_', + 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\006', '\022', '\025', '\n', '\021', + 'P', 'E', 'R', 'M', 'I', 'S', 'S', 'I', 'O', 'N', '_', 'D', + 'E', 'N', 'I', 'E', 'D', '\020', '\007', '\022', '\026', '\n', '\022', 'R', + 'E', 'S', 'O', 'U', 'R', 'C', 'E', '_', 'E', 'X', 'H', 'A', + 'U', 'S', 'T', 'E', 'D', '\020', '\010', '\022', '\027', '\n', '\023', 'F', + 'A', 'I', 'L', 'E', 'D', '_', 'P', 'R', 'E', 'C', 'O', 'N', + 'D', 'I', 'T', 'I', 'O', 'N', '\020', '\t', '\022', '\013', '\n', '\007', + 'A', 'B', 'O', 'R', 'T', 'E', 'D', '\020', '\n', '\022', '\020', '\n', + '\014', 'O', 'U', 'T', '_', 'O', 'F', '_', 'R', 'A', 'N', 'G', + 'E', '\020', '\013', '\022', '\021', '\n', '\r', 'U', 'N', 'I', 'M', 'P', + 'L', 'E', 'M', 'E', 'N', 'T', 'E', 'D', '\020', '\014', '\022', '\014', + '\n', '\010', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '\020', '\r', + '\022', '\017', '\n', '\013', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', + 'B', 'L', 'E', '\020', '\016', '\022', '\r', '\n', '\t', 'D', 'A', 'T', + 'A', '_', 'L', 'O', 'S', 'S', '\020', '\017', '\022', '\023', '\n', '\017', + 'U', 'N', 'A', 'U', 'T', 'H', 'E', 'N', 'T', 'I', 'C', 'A', + 'T', 'E', 'D', '\020', '\020', ':', '8', '\232', '\305', '\210', '\036', '3', + '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', + 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'G', + 'r', 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', + 't', 'e', 'r', '\"', '\332', '\001', '\n', '\016', 'M', 'e', 't', 'a', + 'd', 'a', 't', 'a', 'F', 'i', 'l', 't', 'e', 'r', '\022', '@', + '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', + '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '\022', 'N', '\n', '\026', 'm', 'a', 't', 'c', + 'h', '_', 'i', 'f', '_', 'k', 'e', 'y', '_', 'n', 'o', 't', + '_', 'f', 'o', 'u', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', + 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 't', 'c', 'h', 'I', + 'f', 'K', 'e', 'y', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', + ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', + 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', + 'o', 'g', '.', 'v', '2', '.', 'M', 'e', 't', 'a', 'd', 'a', + 't', 'a', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'v', '\n', '\r', + 'L', 'o', 'g', 'T', 'y', 'p', 'e', 'F', 'i', 'l', 't', 'e', + 'r', '\022', 'K', '\n', '\005', 't', 'y', 'p', 'e', 's', '\030', '\001', + ' ', '\003', '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'd', 'a', 't', 'a', '.', 'a', 'c', 'c', 'e', 's', 's', + 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', + 's', 'L', 'o', 'g', 'T', 'y', 'p', 'e', 'B', '\r', '\372', 'B', + '\n', '\222', '\001', '\007', '\"', '\005', '\202', '\001', '\002', '\020', '\001', 'R', + '\005', 't', 'y', 'p', 'e', 's', '\022', '\030', '\n', '\007', 'e', 'x', + 'c', 'l', 'u', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\010', 'R', + '\007', 'e', 'x', 'c', 'l', 'u', 'd', 'e', '\"', '\266', '\001', '\n', + '\017', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'F', 'i', + 'l', 't', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', + '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', + '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', + 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', + 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', + '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', - 'g', '.', 'v', '2', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', - 'a', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'v', '\n', '\r', 'L', - 'o', 'g', 'T', 'y', 'p', 'e', 'F', 'i', 'l', 't', 'e', 'r', - '\022', 'K', '\n', '\005', 't', 'y', 'p', 'e', 's', '\030', '\001', ' ', - '\003', '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'd', 'a', 't', 'a', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', - 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', - 'L', 'o', 'g', 'T', 'y', 'p', 'e', 'B', '\r', '\372', 'B', '\n', - '\222', '\001', '\007', '\"', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\005', - 't', 'y', 'p', 'e', 's', '\022', '\030', '\n', '\007', 'e', 'x', 'c', - 'l', 'u', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\007', - 'e', 'x', 'c', 'l', 'u', 'd', 'e', '\"', '\266', '\001', '\n', '\017', - 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'F', 'i', 'l', - 't', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', - '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', - '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', - 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '7', - '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', - 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', - '.', 'v', '2', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013', 'c', - 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', - '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', - 'B', '\221', '\001', '\n', '\'', 'i', 'o', '.', 'e', 'n', 'v', 'o', - 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', - 's', 's', 'l', 'o', 'g', '.', 'v', '3', 'B', '\016', 'A', 'c', - 'c', 'e', 's', 's', 'l', 'o', 'g', 'P', 'r', 'o', 't', 'o', - 'P', '\001', 'Z', 'L', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', - 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', - 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', - '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', - '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', - 's', 's', 'l', 'o', 'g', '/', 'v', '3', ';', 'a', 'c', 'c', - 'e', 's', 's', 'l', 'o', 'g', 'v', '3', '\272', '\200', '\310', '\321', - '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'g', '.', 'v', '2', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013', + 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', + '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', + 'g', 'B', '\221', '\001', '\n', '\'', 'i', 'o', '.', 'e', 'n', 'v', + 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', + 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', 'B', '\016', 'A', + 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', 'P', 'r', 'o', 't', + 'o', 'P', '\001', 'Z', 'L', 'g', 'i', 't', 'h', 'u', 'b', '.', + 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', + 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', + 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', + 'e', 's', 's', 'l', 'o', 'g', '/', 'v', '3', ';', 'a', 'c', + 'c', 'e', 's', 's', 'l', 'o', 'g', 'v', '3', '\272', '\200', '\310', + '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', + '3', }; static _upb_DefPool_Init *deps[11] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c index f71f26bc571..3765f5da4ef 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c @@ -25,6 +25,7 @@ extern _upb_DefPool_Init envoy_config_metrics_v3_stats_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_overload_v3_overload_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_trace_v3_http_tracer_proto_upbdefinit; extern _upb_DefPool_Init envoy_extensions_transport_sockets_tls_v3_secret_proto_upbdefinit; +extern _upb_DefPool_Init envoy_type_matcher_v3_string_proto_upbdefinit; extern _upb_DefPool_Init envoy_type_v3_percent_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_struct_proto_upbdefinit; @@ -36,7 +37,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[9581] = { +static const char descriptor[9805] = { '\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '/', 'v', '3', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', @@ -90,7 +91,10 @@ static const char descriptor[9581] = { 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', 'v', '3', '/', 's', 'e', 'c', - 'r', 'e', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'e', + 'r', 'e', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', + 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 's', 't', 'r', + 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'p', 'e', 'r', 'c', 'e', 'n', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', @@ -117,7 +121,7 @@ static const char descriptor[9581] = { 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', - 'o', '\"', '\231', '$', '\n', '\t', 'B', 'o', 'o', 't', 's', 't', + 'o', '\"', '\216', '%', '\n', '\t', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', @@ -193,652 +197,668 @@ static const char descriptor[9581] = { 'o', 'n', '_', 'a', 'd', 'm', 'i', 'n', '\030', '\035', ' ', '\001', '(', '\010', 'B', '\007', '\372', 'B', '\004', 'j', '\002', '\010', '\001', 'H', '\000', 'R', '\021', 's', 't', 'a', 't', 's', 'F', 'l', 'u', 's', - 'h', 'O', 'n', 'A', 'd', 'm', 'i', 'n', '\022', 'L', '\n', '\010', - 'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\030', '\010', ' ', '\001', - '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', - 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', - 'd', 'o', 'g', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', - '\003', '3', '.', '0', 'R', '\010', 'w', 'a', 't', 'c', 'h', 'd', - 'o', 'g', '\022', 'B', '\n', '\t', 'w', 'a', 't', 'c', 'h', 'd', - 'o', 'g', 's', '\030', '\033', ' ', '\001', '(', '\013', '2', '$', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', - '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 's', 'R', - '\t', 'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', 's', '\022', 'E', - '\n', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\030', '\t', ' ', - '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', - '.', 'v', '3', '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'B', - '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'R', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\022', 'R', '\n', - '\017', 'l', 'a', 'y', 'e', 'r', 'e', 'd', '_', 'r', 'u', 'n', - 't', 'i', 'm', 'e', '\030', '\021', ' ', '\001', '(', '\013', '2', ')', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', - 'v', '3', '.', 'L', 'a', 'y', 'e', 'r', 'e', 'd', 'R', 'u', - 'n', 't', 'i', 'm', 'e', 'R', '\016', 'l', 'a', 'y', 'e', 'r', - 'e', 'd', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\022', '6', '\n', - '\005', 'a', 'd', 'm', 'i', 'n', '\030', '\014', ' ', '\001', '(', '\013', - '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'h', 'O', 'n', 'A', 'd', 'm', 'i', 'n', '\022', 'a', '\n', '\027', + 's', 't', 'a', 't', 's', '_', 'e', 'v', 'i', 'c', 't', 'i', + 'o', 'n', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', + '*', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', + '\t', '\252', '\001', '\006', '2', '\004', '\020', '\300', '\204', '=', 'H', '\001', + 'R', '\025', 's', 't', 'a', 't', 's', 'E', 'v', 'i', 'c', 't', + 'i', 'o', 'n', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', + 'L', '\n', '\010', 'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\030', + '\010', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', + 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', + 't', 'c', 'h', 'd', 'o', 'g', 'B', '\013', '\030', '\001', '\222', '\307', + '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\010', 'w', 'a', 't', + 'c', 'h', 'd', 'o', 'g', '\022', 'B', '\n', '\t', 'w', 'a', 't', + 'c', 'h', 'd', 'o', 'g', 's', '\030', '\033', ' ', '\001', '(', '\013', + '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', - 'p', '.', 'v', '3', '.', 'A', 'd', 'm', 'i', 'n', 'R', '\005', - 'a', 'd', 'm', 'i', 'n', '\022', '_', '\n', '\020', 'o', 'v', 'e', - 'r', 'l', 'o', 'a', 'd', '_', 'm', 'a', 'n', 'a', 'g', 'e', - 'r', '\030', '\017', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'o', - 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', '3', '.', 'O', - 'v', 'e', 'r', 'l', 'o', 'a', 'd', 'M', 'a', 'n', 'a', 'g', - 'e', 'r', 'B', '\t', '\212', '\223', '\267', '*', '\004', '\010', '\001', '\020', - '\001', 'R', '\017', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', 'M', - 'a', 'n', 'a', 'g', 'e', 'r', '\022', '6', '\n', '\027', 'e', 'n', - 'a', 'b', 'l', 'e', '_', 'd', 'i', 's', 'p', 'a', 't', 'c', - 'h', 'e', 'r', '_', 's', 't', 'a', 't', 's', '\030', '\020', ' ', - '\001', '(', '\010', 'R', '\025', 'e', 'n', 'a', 'b', 'l', 'e', 'D', - 'i', 's', 'p', 'a', 't', 'c', 'h', 'e', 'r', 'S', 't', 'a', - 't', 's', '\022', '#', '\n', '\r', 'h', 'e', 'a', 'd', 'e', 'r', - '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\022', ' ', '\001', '(', - '\t', 'R', '\014', 'h', 'e', 'a', 'd', 'e', 'r', 'P', 'r', 'e', - 'f', 'i', 'x', '\022', '_', '\n', '\035', 's', 't', 'a', 't', 's', - '_', 's', 'e', 'r', 'v', 'e', 'r', '_', 'v', 'e', 'r', 's', - 'i', 'o', 'n', '_', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', - '\030', '\023', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', - 'R', '\032', 's', 't', 'a', 't', 's', 'S', 'e', 'r', 'v', 'e', - 'r', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'O', 'v', 'e', 'r', - 'r', 'i', 'd', 'e', '\022', 'A', '\n', '\027', 'u', 's', 'e', '_', - 't', 'c', 'p', '_', 'f', 'o', 'r', '_', 'd', 'n', 's', '_', - 'l', 'o', 'o', 'k', 'u', 'p', 's', '\030', '\024', ' ', '\001', '(', - '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', - '.', '0', 'R', '\023', 'u', 's', 'e', 'T', 'c', 'p', 'F', 'o', - 'r', 'D', 'n', 's', 'L', 'o', 'o', 'k', 'u', 'p', 's', '\022', - 'j', '\n', '\025', 'd', 'n', 's', '_', 'r', 'e', 's', 'o', 'l', - 'u', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'i', 'g', - '\030', '\036', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'D', 'n', 's', 'R', 'e', 's', - 'o', 'l', 'u', 't', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', - 'g', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', - '.', '0', 'R', '\023', 'd', 'n', 's', 'R', 'e', 's', 'o', 'l', - 'u', 't', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - 'e', '\n', '\031', 't', 'y', 'p', 'e', 'd', '_', 'd', 'n', 's', - '_', 'r', 'e', 's', 'o', 'l', 'v', 'e', 'r', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '\037', ' ', '\001', '(', '\013', '2', '*', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', - 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 't', 'y', 'p', 'e', - 'd', 'D', 'n', 's', 'R', 'e', 's', 'o', 'l', 'v', 'e', 'r', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', ']', '\n', '\024', 'b', 'o', - 'o', 't', 's', 't', 'r', 'a', 'p', '_', 'e', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', 's', '\030', '\025', ' ', '\003', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'b', 'o', - 'o', 't', 's', 't', 'r', 'a', 'p', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '\022', 'K', '\n', '\r', 'f', 'a', 't', - 'a', 'l', '_', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\034', - ' ', '\003', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', - 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'F', 'a', 't', - 'a', 'l', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\014', 'f', 'a', - 't', 'a', 'l', 'A', 'c', 't', 'i', 'o', 'n', 's', '\022', 'I', - '\n', '\016', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', - 'r', 'c', 'e', 's', '\030', '\026', ' ', '\003', '(', '\013', '2', '\"', + 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', + 'g', 's', 'R', '\t', 'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', + 's', '\022', 'E', '\n', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', + '\030', '\t', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', + 'a', 'c', 'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'c', 'i', + 'n', 'g', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', + '3', '.', '0', 'R', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', + '\022', 'R', '\n', '\017', 'l', 'a', 'y', 'e', 'r', 'e', 'd', '_', + 'r', 'u', 'n', 't', 'i', 'm', 'e', '\030', '\021', ' ', '\001', '(', + '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', + 'a', 'p', '.', 'v', '3', '.', 'L', 'a', 'y', 'e', 'r', 'e', + 'd', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'R', '\016', 'l', 'a', + 'y', 'e', 'r', 'e', 'd', 'R', 'u', 'n', 't', 'i', 'm', 'e', + '\022', '6', '\n', '\005', 'a', 'd', 'm', 'i', 'n', '\030', '\014', ' ', + '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'A', 'd', 'm', 'i', + 'n', 'R', '\005', 'a', 'd', 'm', 'i', 'n', '\022', '_', '\n', '\020', + 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '\030', '\017', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', - 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\r', - 'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', - 's', '\022', 'V', '\n', '\025', 'd', 'e', 'f', 'a', 'u', 'l', 't', - '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', - 'c', 'e', '\030', '\027', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', - 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\023', 'd', 'e', - 'f', 'a', 'u', 'l', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'S', - 'o', 'u', 'r', 'c', 'e', '\022', '8', '\n', '\030', 'd', 'e', 'f', - 'a', 'u', 'l', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '_', - 'i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', '\030', '\030', ' ', - '\001', '(', '\t', 'R', '\026', 'd', 'e', 'f', 'a', 'u', 'l', 't', - 'S', 'o', 'c', 'k', 'e', 't', 'I', 'n', 't', 'e', 'r', 'f', - 'a', 'c', 'e', '\022', '\214', '\001', '\n', '\036', 'c', 'e', 'r', 't', - 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', - 'i', 'd', 'e', 'r', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', - 'e', 's', '\030', '\031', ' ', '\003', '(', '\013', '2', 'F', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', - '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'C', - 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', - 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', - 'c', 'e', 's', 'E', 'n', 't', 'r', 'y', 'R', '\034', 'c', 'e', - 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', - 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', - 'e', 's', '\022', 'T', '\n', '\016', 'i', 'n', 'l', 'i', 'n', 'e', - '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', ' ', ' ', '\003', - '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', - 'r', 'a', 'p', '.', 'v', '3', '.', 'C', 'u', 's', 't', 'o', - 'm', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', - 'r', 'R', '\r', 'i', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', - 'd', 'e', 'r', 's', '\022', '3', '\n', '\026', 'p', 'e', 'r', 'f', - '_', 't', 'r', 'a', 'c', 'i', 'n', 'g', '_', 'f', 'i', 'l', - 'e', '_', 'p', 'a', 't', 'h', '\030', '!', ' ', '\001', '(', '\t', - 'R', '\023', 'p', 'e', 'r', 'f', 'T', 'r', 'a', 'c', 'i', 'n', - 'g', 'F', 'i', 'l', 'e', 'P', 'a', 't', 'h', '\022', '\\', '\n', - '\024', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'r', 'e', 'g', - 'e', 'x', '_', 'e', 'n', 'g', 'i', 'n', 'e', '\030', '\"', ' ', - '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', + '3', '.', 'O', 'v', 'e', 'r', 'l', 'o', 'a', 'd', 'M', 'a', + 'n', 'a', 'g', 'e', 'r', 'B', '\t', '\212', '\223', '\267', '*', '\004', + '\010', '\001', '\020', '\001', 'R', '\017', 'o', 'v', 'e', 'r', 'l', 'o', + 'a', 'd', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', '6', '\n', + '\027', 'e', 'n', 'a', 'b', 'l', 'e', '_', 'd', 'i', 's', 'p', + 'a', 't', 'c', 'h', 'e', 'r', '_', 's', 't', 'a', 't', 's', + '\030', '\020', ' ', '\001', '(', '\010', 'R', '\025', 'e', 'n', 'a', 'b', + 'l', 'e', 'D', 'i', 's', 'p', 'a', 't', 'c', 'h', 'e', 'r', + 'S', 't', 'a', 't', 's', '\022', '#', '\n', '\r', 'h', 'e', 'a', + 'd', 'e', 'r', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\022', + ' ', '\001', '(', '\t', 'R', '\014', 'h', 'e', 'a', 'd', 'e', 'r', + 'P', 'r', 'e', 'f', 'i', 'x', '\022', '_', '\n', '\035', 's', 't', + 'a', 't', 's', '_', 's', 'e', 'r', 'v', 'e', 'r', '_', 'v', + 'e', 'r', 's', 'i', 'o', 'n', '_', 'o', 'v', 'e', 'r', 'r', + 'i', 'd', 'e', '\030', '\023', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', + 'l', 'u', 'e', 'R', '\032', 's', 't', 'a', 't', 's', 'S', 'e', + 'r', 'v', 'e', 'r', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'O', + 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\022', 'A', '\n', '\027', 'u', + 's', 'e', '_', 't', 'c', 'p', '_', 'f', 'o', 'r', '_', 'd', + 'n', 's', '_', 'l', 'o', 'o', 'k', 'u', 'p', 's', '\030', '\024', + ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', + '\004', '\003', '3', '.', '0', 'R', '\023', 'u', 's', 'e', 'T', 'c', + 'p', 'F', 'o', 'r', 'D', 'n', 's', 'L', 'o', 'o', 'k', 'u', + 'p', 's', '\022', 'j', '\n', '\025', 'd', 'n', 's', '_', 'r', 'e', + 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '\030', '\036', ' ', '\001', '(', '\013', '2', ')', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'n', 's', + 'R', 'e', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', + '\004', '\003', '3', '.', '0', 'R', '\023', 'd', 'n', 's', 'R', 'e', + 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', 'e', '\n', '\031', 't', 'y', 'p', 'e', 'd', '_', + 'd', 'n', 's', '_', 'r', 'e', 's', 'o', 'l', 'v', 'e', 'r', + '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\037', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 't', + 'y', 'p', 'e', 'd', 'D', 'n', 's', 'R', 'e', 's', 'o', 'l', + 'v', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', ']', '\n', + '\024', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '_', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\030', '\025', ' ', + '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\022', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'R', 'e', 'g', 'e', - 'x', 'E', 'n', 'g', 'i', 'n', 'e', '\022', '`', '\n', '\026', 'x', - 'd', 's', '_', 'd', 'e', 'l', 'e', 'g', 'a', 't', 'e', '_', - 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '#', ' ', + '\023', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'E', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\022', 'K', '\n', '\r', + 'f', 'a', 't', 'a', 'l', '_', 'a', 'c', 't', 'i', 'o', 'n', + 's', '\030', '\034', ' ', '\003', '(', '\013', '2', '&', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', + 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', + 'F', 'a', 't', 'a', 'l', 'A', 'c', 't', 'i', 'o', 'n', 'R', + '\014', 'f', 'a', 't', 'a', 'l', 'A', 'c', 't', 'i', 'o', 'n', + 's', '\022', 'I', '\n', '\016', 'c', 'o', 'n', 'f', 'i', 'g', '_', + 's', 'o', 'u', 'r', 'c', 'e', 's', '\030', '\026', ' ', '\003', '(', + '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', + 'e', 'R', '\r', 'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', + 'r', 'c', 'e', 's', '\022', 'V', '\n', '\025', 'd', 'e', 'f', 'a', + 'u', 'l', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', + 'o', 'u', 'r', 'c', 'e', '\030', '\027', ' ', '\001', '(', '\013', '2', + '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', + 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', + '\023', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'C', 'o', 'n', 'f', + 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '8', '\n', '\030', + 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 's', 'o', 'c', 'k', + 'e', 't', '_', 'i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', + '\030', '\030', ' ', '\001', '(', '\t', 'R', '\026', 'd', 'e', 'f', 'a', + 'u', 'l', 't', 'S', 'o', 'c', 'k', 'e', 't', 'I', 'n', 't', + 'e', 'r', 'f', 'a', 'c', 'e', '\022', '\214', '\001', '\n', '\036', 'c', + 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', + 'r', 'o', 'v', 'i', 'd', 'e', 'r', '_', 'i', 'n', 's', 't', + 'a', 'n', 'c', 'e', 's', '\030', '\031', ' ', '\003', '(', '\013', '2', + 'F', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', + '.', 'v', '3', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', + 'p', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', + 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', + 't', 'a', 'n', 'c', 'e', 's', 'E', 'n', 't', 'r', 'y', 'R', + '\034', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', + 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', + 'a', 'n', 'c', 'e', 's', '\022', 'T', '\n', '\016', 'i', 'n', 'l', + 'i', 'n', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', + ' ', ' ', '\003', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', + 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'C', 'u', + 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', + 'a', 'd', 'e', 'r', 'R', '\r', 'i', 'n', 'l', 'i', 'n', 'e', + 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '3', '\n', '\026', 'p', + 'e', 'r', 'f', '_', 't', 'r', 'a', 'c', 'i', 'n', 'g', '_', + 'f', 'i', 'l', 'e', '_', 'p', 'a', 't', 'h', '\030', '!', ' ', + '\001', '(', '\t', 'R', '\023', 'p', 'e', 'r', 'f', 'T', 'r', 'a', + 'c', 'i', 'n', 'g', 'F', 'i', 'l', 'e', 'P', 'a', 't', 'h', + '\022', '\\', '\n', '\024', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', + 'r', 'e', 'g', 'e', 'x', '_', 'e', 'n', 'g', 'i', 'n', 'e', + '\030', '\"', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', + 'i', 'g', 'R', '\022', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'R', + 'e', 'g', 'e', 'x', 'E', 'n', 'g', 'i', 'n', 'e', '\022', '`', + '\n', '\026', 'x', 'd', 's', '_', 'd', 'e', 'l', 'e', 'g', 'a', + 't', 'e', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + '\030', '#', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', + 'i', 'g', 'R', '\024', 'x', 'd', 's', 'D', 'e', 'l', 'e', 'g', + 'a', 't', 'e', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + '\022', 'k', '\n', '\034', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '_', 't', 'r', 'a', 'c', 'k', 'e', 'r', '_', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '$', ' ', '\001', + '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\031', + 'x', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'T', 'r', 'a', + 'c', 'k', 'e', 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', '\022', 'U', '\n', '\020', 'l', 'i', 's', 't', 'e', 'n', 'e', + 'r', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '\030', '%', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\024', 'x', 'd', 's', 'D', 'e', 'l', 'e', 'g', 'a', 't', 'e', - 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', 'k', '\n', - '\034', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', - 't', 'r', 'a', 'c', 'k', 'e', 'r', '_', 'e', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', '\030', '$', ' ', '\001', '(', '\013', '2', - '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', - 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\031', 'x', 'd', 's', - 'C', 'o', 'n', 'f', 'i', 'g', 'T', 'r', 'a', 'c', 'k', 'e', - 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', 'U', - '\n', '\020', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'm', - 'a', 'n', 'a', 'g', 'e', 'r', '\030', '%', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\017', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', - 'r', '\022', 'o', '\n', '\026', 'a', 'p', 'p', 'l', 'i', 'c', 'a', - 't', 'i', 'o', 'n', '_', 'l', 'o', 'g', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '&', ' ', '\001', '(', '\013', '2', '9', '.', + '\017', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'M', 'a', 'n', + 'a', 'g', 'e', 'r', '\022', 'o', '\n', '\026', 'a', 'p', 'p', 'l', + 'i', 'c', 'a', 't', 'i', 'o', 'n', '_', 'l', 'o', 'g', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '&', ' ', '\001', '(', '\013', + '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', + 'p', '.', 'v', '3', '.', 'B', 'o', 'o', 't', 's', 't', 'r', + 'a', 'p', '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', + 'o', 'n', 'L', 'o', 'g', 'C', 'o', 'n', 'f', 'i', 'g', 'R', + '\024', 'a', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', + 'L', 'o', 'g', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\211', '\001', + '\n', ' ', 'g', 'r', 'p', 'c', '_', 'a', 's', 'y', 'n', 'c', + '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'm', 'a', 'n', 'a', + 'g', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '(', + ' ', '\001', '(', '\013', '2', 'A', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', + 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'B', 'o', 'o', + 't', 's', 't', 'r', 'a', 'p', '.', 'G', 'r', 'p', 'c', 'A', + 's', 'y', 'n', 'c', 'C', 'l', 'i', 'e', 'n', 't', 'M', 'a', + 'n', 'a', 'g', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'R', + '\034', 'g', 'r', 'p', 'c', 'A', 's', 'y', 'n', 'c', 'C', 'l', + 'i', 'e', 'n', 't', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'C', + 'o', 'n', 'f', 'i', 'g', '\022', 'k', '\n', '\030', 'm', 'e', 'm', + 'o', 'r', 'y', '_', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'o', + 'r', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '\030', ')', ' ', + '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'M', 'e', 'm', 'o', + 'r', 'y', 'A', 'l', 'l', 'o', 'c', 'a', 't', 'o', 'r', 'M', + 'a', 'n', 'a', 'g', 'e', 'r', 'R', '\026', 'm', 'e', 'm', 'o', + 'r', 'y', 'A', 'l', 'l', 'o', 'c', 'a', 't', 'o', 'r', 'M', + 'a', 'n', 'a', 'g', 'e', 'r', '\032', '\232', '\002', '\n', '\017', 'S', + 't', 'a', 't', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', + 'e', 's', '\022', '@', '\n', '\t', 'l', 'i', 's', 't', 'e', 'n', + 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\"', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', + '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\t', 'l', + 'i', 's', 't', 'e', 'n', 'e', 'r', 's', '\022', '<', '\n', '\010', + 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', + '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', + 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', + 'R', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'K', + '\n', '\007', 's', 'e', 'c', 'r', 'e', 't', 's', '\030', '\003', ' ', + '\003', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', + 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', + 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', + 'S', 'e', 'c', 'r', 'e', 't', 'R', '\007', 's', 'e', 'c', 'r', + 'e', 't', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', - '3', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', - 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'L', - 'o', 'g', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\024', 'a', 'p', - 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'L', 'o', 'g', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\211', '\001', '\n', ' ', 'g', - 'r', 'p', 'c', '_', 'a', 's', 'y', 'n', 'c', '_', 'c', 'l', - 'i', 'e', 'n', 't', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', - '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '(', ' ', '\001', '(', - '\013', '2', 'A', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', - 'a', 'p', '.', 'v', '3', '.', 'B', 'o', 'o', 't', 's', 't', - 'r', 'a', 'p', '.', 'G', 'r', 'p', 'c', 'A', 's', 'y', 'n', - 'c', 'C', 'l', 'i', 'e', 'n', 't', 'M', 'a', 'n', 'a', 'g', - 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\034', 'g', 'r', - 'p', 'c', 'A', 's', 'y', 'n', 'c', 'C', 'l', 'i', 'e', 'n', - 't', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', 'k', '\n', '\030', 'm', 'e', 'm', 'o', 'r', 'y', - '_', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'o', 'r', '_', 'm', - 'a', 'n', 'a', 'g', 'e', 'r', '\030', ')', ' ', '\001', '(', '\013', - '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + '2', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', + 'S', 't', 'a', 't', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', + 'c', 'e', 's', '\032', '\211', '\003', '\n', '\020', 'D', 'y', 'n', 'a', + 'm', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', + '\022', 'A', '\n', '\n', 'l', 'd', 's', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', + 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'l', 'd', + 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '2', '\n', '\025', 'l', + 'd', 's', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', + '_', 'l', 'o', 'c', 'a', 't', 'o', 'r', '\030', '\005', ' ', '\001', + '(', '\t', 'R', '\023', 'l', 'd', 's', 'R', 'e', 's', 'o', 'u', + 'r', 'c', 'e', 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', + 'A', '\n', '\n', 'c', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', + 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'c', 'd', 's', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', '2', '\n', '\025', 'c', 'd', + 's', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '_', + 'l', 'o', 'c', 'a', 't', 'o', 'r', '\030', '\006', ' ', '\001', '(', + '\t', 'R', '\023', 'c', 'd', 's', 'R', 'e', 's', 'o', 'u', 'r', + 'c', 'e', 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', 'D', + '\n', '\n', 'a', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', + '\030', '\003', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', + 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'a', + 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', ':', ';', '\232', '\305', + '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', + 'r', 'a', 'p', '.', 'v', '2', '.', 'B', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', + 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', 'J', '\004', '\010', + '\004', '\020', '\005', '\032', '\371', '\001', '\n', '\024', 'A', 'p', 'p', 'l', + 'i', 'c', 'a', 't', 'i', 'o', 'n', 'L', 'o', 'g', 'C', 'o', + 'n', 'f', 'i', 'g', '\022', 'b', '\n', '\n', 'l', 'o', 'g', '_', + 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\013', + '2', 'C', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', - 'p', '.', 'v', '3', '.', 'M', 'e', 'm', 'o', 'r', 'y', 'A', - 'l', 'l', 'o', 'c', 'a', 't', 'o', 'r', 'M', 'a', 'n', 'a', - 'g', 'e', 'r', 'R', '\026', 'm', 'e', 'm', 'o', 'r', 'y', 'A', - 'l', 'l', 'o', 'c', 'a', 't', 'o', 'r', 'M', 'a', 'n', 'a', - 'g', 'e', 'r', '\032', '\232', '\002', '\n', '\017', 'S', 't', 'a', 't', - 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', - '@', '\n', '\t', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', - '\030', '\001', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', - 's', 't', 'e', 'n', 'e', 'r', 'R', '\t', 'l', 'i', 's', 't', - 'e', 'n', 'e', 'r', 's', '\022', '<', '\n', '\010', 'c', 'l', 'u', - 's', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', - ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', - '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'R', '\010', 'c', - 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'K', '\n', '\007', 's', - 'e', 'c', 'r', 'e', 't', 's', '\030', '\003', ' ', '\003', '(', '\013', - '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', - 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', - 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'e', 'c', - 'r', 'e', 't', 'R', '\007', 's', 'e', 'c', 'r', 'e', 't', 's', - ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3', 'e', 'n', 'v', + 'p', '.', 'v', '3', '.', 'B', 'o', 'o', 't', 's', 't', 'r', + 'a', 'p', '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', + 'o', 'n', 'L', 'o', 'g', 'C', 'o', 'n', 'f', 'i', 'g', '.', + 'L', 'o', 'g', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\t', 'l', + 'o', 'g', 'F', 'o', 'r', 'm', 'a', 't', '\032', '}', '\n', '\t', + 'L', 'o', 'g', 'F', 'o', 'r', 'm', 'a', 't', '\022', ':', '\n', + '\013', 'j', 's', 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', + '\030', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'S', 't', 'r', 'u', 'c', 't', 'H', '\000', 'R', '\n', 'j', + 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', '\022', '!', '\n', + '\013', 't', 'e', 'x', 't', '_', 'f', 'o', 'r', 'm', 'a', 't', + '\030', '\002', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\n', 't', 'e', + 'x', 't', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\021', '\n', '\n', + 'l', 'o', 'g', '_', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\003', + '\370', 'B', '\001', '\032', 'Z', '\n', '\023', 'D', 'e', 'f', 'e', 'r', + 'r', 'e', 'd', 'S', 't', 'a', 't', 'O', 'p', 't', 'i', 'o', + 'n', 's', '\022', 'C', '\n', '\036', 'e', 'n', 'a', 'b', 'l', 'e', + '_', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '_', 'c', 'r', + 'e', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'a', 't', 's', + '\030', '\001', ' ', '\001', '(', '\010', 'R', '\033', 'e', 'n', 'a', 'b', + 'l', 'e', 'D', 'e', 'f', 'e', 'r', 'r', 'e', 'd', 'C', 'r', + 'e', 'a', 't', 'i', 'o', 'n', 'S', 't', 'a', 't', 's', '\032', + '\211', '\001', '\n', '\034', 'G', 'r', 'p', 'c', 'A', 's', 'y', 'n', + 'c', 'C', 'l', 'i', 'e', 'n', 't', 'M', 'a', 'n', 'a', 'g', + 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'i', '\n', '\036', + 'm', 'a', 'x', '_', 'c', 'a', 'c', 'h', 'e', 'd', '_', 'e', + 'n', 't', 'r', 'y', '_', 'i', 'd', 'l', 'e', '_', 'd', 'u', + 'r', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', + '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', + 'i', 'o', 'n', 'B', '\n', '\372', 'B', '\007', '\252', '\001', '\004', '2', + '\002', '\010', '\005', 'R', '\032', 'm', 'a', 'x', 'C', 'a', 'c', 'h', + 'e', 'd', 'E', 'n', 't', 'r', 'y', 'I', 'd', 'l', 'e', 'D', + 'u', 'r', 'a', 't', 'i', 'o', 'n', '\032', '{', '\n', '!', 'C', + 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', + 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', + 'c', 'e', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', + 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', + 'e', 'y', '\022', '@', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', + '\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', + 'g', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', + ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'B', - 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'S', 't', 'a', - 't', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', - '\032', '\211', '\003', '\n', '\020', 'D', 'y', 'n', 'a', 'm', 'i', 'c', - 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', 'A', '\n', - '\n', 'l', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', - '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', - 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'l', 'd', 's', 'C', 'o', - 'n', 'f', 'i', 'g', '\022', '2', '\n', '\025', 'l', 'd', 's', '_', - 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '_', 'l', 'o', - 'c', 'a', 't', 'o', 'r', '\030', '\005', ' ', '\001', '(', '\t', 'R', - '\023', 'l', 'd', 's', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', - 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', 'A', '\n', '\n', - 'c', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', - 'u', 'r', 'c', 'e', 'R', '\t', 'c', 'd', 's', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', '2', '\n', '\025', 'c', 'd', 's', '_', 'r', - 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '_', 'l', 'o', 'c', - 'a', 't', 'o', 'r', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\023', - 'c', 'd', 's', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', - 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', 'D', '\n', '\n', 'a', - 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', - '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', - 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'a', 'd', 's', 'C', - 'o', 'n', 'f', 'i', 'g', ':', ';', '\232', '\305', '\210', '\036', '6', - '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', - '.', 'v', '2', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', - 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'e', 's', - 'o', 'u', 'r', 'c', 'e', 's', 'J', '\004', '\010', '\004', '\020', '\005', - '\032', '\371', '\001', '\n', '\024', 'A', 'p', 'p', 'l', 'i', 'c', 'a', - 't', 'i', 'o', 'n', 'L', 'o', 'g', 'C', 'o', 'n', 'f', 'i', - 'g', '\022', 'b', '\n', '\n', 'l', 'o', 'g', '_', 'f', 'o', 'r', - 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', 'C', '.', + 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'B', '\r', '\n', '\013', + 's', 't', 'a', 't', 's', '_', 'f', 'l', 'u', 's', 'h', 'B', + '\020', '\n', '\016', 's', 't', 'a', 't', 's', '_', 'e', 'v', 'i', + 'c', 't', 'i', 'o', 'n', 'J', '\004', '\010', '\n', '\020', '\013', 'J', + '\004', '\010', '\013', '\020', '\014', 'R', '\007', 'r', 'u', 'n', 't', 'i', + 'm', 'e', '\"', '\320', '\003', '\n', '\005', 'A', 'd', 'm', 'i', 'n', + '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', + 'o', 'g', '\030', '\005', ' ', '\003', '(', '\013', '2', '$', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', + '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'R', '\t', + 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', '\022', '3', '\n', + '\017', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '_', + 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', + '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', + '\r', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'P', 'a', + 't', 'h', '\022', '!', '\n', '\014', 'p', 'r', 'o', 'f', 'i', 'l', + 'e', '_', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\t', + 'R', '\013', 'p', 'r', 'o', 'f', 'i', 'l', 'e', 'P', 'a', 't', + 'h', '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', + '\030', '\003', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', + 's', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\022', 'I', + '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', + 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\"', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'o', + 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\r', + 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', + 's', '\022', '7', '\n', '\030', 'i', 'g', 'n', 'o', 'r', 'e', '_', + 'g', 'l', 'o', 'b', 'a', 'l', '_', 'c', 'o', 'n', 'n', '_', + 'l', 'i', 'm', 'i', 't', '\030', '\006', ' ', '\001', '(', '\010', 'R', + '\025', 'i', 'g', 'n', 'o', 'r', 'e', 'G', 'l', 'o', 'b', 'a', + 'l', 'C', 'o', 'n', 'n', 'L', 'i', 'm', 'i', 't', '\022', 'E', + '\n', '\013', 'a', 'l', 'l', 'o', 'w', '_', 'p', 'a', 't', 'h', + 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', + 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', + 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\n', 'a', + 'l', 'l', 'o', 'w', 'P', 'a', 't', 'h', 's', ':', '&', '\232', + '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'A', 'd', 'm', 'i', + 'n', '\"', '\224', '\005', '\n', '\016', 'C', 'l', 'u', 's', 't', 'e', + 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', ',', '\n', '\022', + 'l', 'o', 'c', 'a', 'l', '_', 'c', 'l', 'u', 's', 't', 'e', + 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', + 'R', '\020', 'l', 'o', 'c', 'a', 'l', 'C', 'l', 'u', 's', 't', + 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'g', '\n', '\021', 'o', 'u', + 't', 'l', 'i', 'e', 'r', '_', 'd', 'e', 't', 'e', 'c', 't', + 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', - '3', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', - 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'L', - 'o', 'g', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'o', 'g', - 'F', 'o', 'r', 'm', 'a', 't', 'R', '\t', 'l', 'o', 'g', 'F', - 'o', 'r', 'm', 'a', 't', '\032', '}', '\n', '\t', 'L', 'o', 'g', - 'F', 'o', 'r', 'm', 'a', 't', '\022', ':', '\n', '\013', 'j', 's', - 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', - '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', - 'r', 'u', 'c', 't', 'H', '\000', 'R', '\n', 'j', 's', 'o', 'n', - 'F', 'o', 'r', 'm', 'a', 't', '\022', '!', '\n', '\013', 't', 'e', - 'x', 't', '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', - '\001', '(', '\t', 'H', '\000', 'R', '\n', 't', 'e', 'x', 't', 'F', - 'o', 'r', 'm', 'a', 't', 'B', '\021', '\n', '\n', 'l', 'o', 'g', - '_', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\003', '\370', 'B', '\001', - '\032', 'Z', '\n', '\023', 'D', 'e', 'f', 'e', 'r', 'r', 'e', 'd', - 'S', 't', 'a', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', - 'C', '\n', '\036', 'e', 'n', 'a', 'b', 'l', 'e', '_', 'd', 'e', - 'f', 'e', 'r', 'r', 'e', 'd', '_', 'c', 'r', 'e', 'a', 't', - 'i', 'o', 'n', '_', 's', 't', 'a', 't', 's', '\030', '\001', ' ', - '\001', '(', '\010', 'R', '\033', 'e', 'n', 'a', 'b', 'l', 'e', 'D', - 'e', 'f', 'e', 'r', 'r', 'e', 'd', 'C', 'r', 'e', 'a', 't', - 'i', 'o', 'n', 'S', 't', 'a', 't', 's', '\032', '\211', '\001', '\n', - '\034', 'G', 'r', 'p', 'c', 'A', 's', 'y', 'n', 'c', 'C', 'l', - 'i', 'e', 'n', 't', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'C', - 'o', 'n', 'f', 'i', 'g', '\022', 'i', '\n', '\036', 'm', 'a', 'x', - '_', 'c', 'a', 'c', 'h', 'e', 'd', '_', 'e', 'n', 't', 'r', - 'y', '_', 'i', 'd', 'l', 'e', '_', 'd', 'u', 'r', 'a', 't', - 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', - 'B', '\n', '\372', 'B', '\007', '\252', '\001', '\004', '2', '\002', '\010', '\005', - 'R', '\032', 'm', 'a', 'x', 'C', 'a', 'c', 'h', 'e', 'd', 'E', - 'n', 't', 'r', 'y', 'I', 'd', 'l', 'e', 'D', 'u', 'r', 'a', - 't', 'i', 'o', 'n', '\032', '{', '\n', '!', 'C', 'e', 'r', 't', - 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', - 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 's', - 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', - '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', - '@', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', - '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\005', - 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '*', '\232', - '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', - 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'B', 'o', 'o', 't', - 's', 't', 'r', 'a', 'p', 'B', '\r', '\n', '\013', 's', 't', 'a', - 't', 's', '_', 'f', 'l', 'u', 's', 'h', 'J', '\004', '\010', '\n', - '\020', '\013', 'J', '\004', '\010', '\013', '\020', '\014', 'R', '\007', 'r', 'u', - 'n', 't', 'i', 'm', 'e', '\"', '\211', '\003', '\n', '\005', 'A', 'd', - 'm', 'i', 'n', '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', 's', - 's', '_', 'l', 'o', 'g', '\030', '\005', ' ', '\003', '(', '\013', '2', - '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', - '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', - 'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', - '\022', '3', '\n', '\017', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', - 'o', 'g', '_', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', - '\t', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', - '.', '0', 'R', '\r', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', - 'g', 'P', 'a', 't', 'h', '\022', '!', '\n', '\014', 'p', 'r', 'o', - 'f', 'i', 'l', 'e', '_', 'p', 'a', 't', 'h', '\030', '\002', ' ', - '\001', '(', '\t', 'R', '\013', 'p', 'r', 'o', 'f', 'i', 'l', 'e', - 'P', 'a', 't', 'h', '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', - 'e', 's', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '\035', '.', + '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', + 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', 'R', '\020', 'o', + 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', + 'i', 'o', 'n', '\022', 'R', '\n', '\024', 'u', 'p', 's', 't', 'r', + 'e', 'a', 'm', '_', 'b', 'i', 'n', 'd', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', - 'r', 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', - 's', '\022', 'I', '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', '_', - 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', - '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', - 'n', 'R', '\r', 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', - 'i', 'o', 'n', 's', '\022', '7', '\n', '\030', 'i', 'g', 'n', 'o', - 'r', 'e', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 'c', 'o', - 'n', 'n', '_', 'l', 'i', 'm', 'i', 't', '\030', '\006', ' ', '\001', - '(', '\010', 'R', '\025', 'i', 'g', 'n', 'o', 'r', 'e', 'G', 'l', - 'o', 'b', 'a', 'l', 'C', 'o', 'n', 'n', 'L', 'i', 'm', 'i', - 't', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', - 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', - 'A', 'd', 'm', 'i', 'n', '\"', '\224', '\005', '\n', '\016', 'C', 'l', - 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', - '\022', ',', '\n', '\022', 'l', 'o', 'c', 'a', 'l', '_', 'c', 'l', - 'u', 's', 't', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\020', 'l', 'o', 'c', 'a', 'l', 'C', - 'l', 'u', 's', 't', 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'g', - '\n', '\021', 'o', 'u', 't', 'l', 'i', 'e', 'r', '_', 'd', 'e', - 't', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', - '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', - 'a', 'p', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', - 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'O', 'u', 't', - 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', - 'n', 'R', '\020', 'o', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', - 't', 'e', 'c', 't', 'i', 'o', 'n', '\022', 'R', '\n', '\024', 'u', - 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'b', 'i', 'n', 'd', - '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', - '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'B', 'i', 'n', + 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\022', 'u', 'p', 's', + 't', 'r', 'e', 'a', 'm', 'B', 'i', 'n', 'd', 'C', 'o', 'n', + 'f', 'i', 'g', '\022', 'Q', '\n', '\021', 'l', 'o', 'a', 'd', '_', + 's', 't', 'a', 't', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', + '\030', '\004', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', + 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\017', 'l', + 'o', 'a', 'd', 'S', 't', 'a', 't', 's', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', 'G', '\n', ' ', 'e', 'n', 'a', 'b', 'l', 'e', + '_', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '_', 'c', 'l', + 'u', 's', 't', 'e', 'r', '_', 'c', 'r', 'e', 'a', 't', 'i', + 'o', 'n', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\035', 'e', 'n', + 'a', 'b', 'l', 'e', 'D', 'e', 'f', 'e', 'r', 'r', 'e', 'd', + 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'r', 'e', 'a', 't', + 'i', 'o', 'n', '\032', '\311', '\001', '\n', '\020', 'O', 'u', 't', 'l', + 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', + '\022', '$', '\n', '\016', 'e', 'v', 'e', 'n', 't', '_', 'l', 'o', + 'g', '_', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', '\t', + 'R', '\014', 'e', 'v', 'e', 'n', 't', 'L', 'o', 'g', 'P', 'a', + 't', 'h', '\022', 'M', '\n', '\r', 'e', 'v', 'e', 'n', 't', '_', + 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\002', ' ', '\001', '(', + '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'B', 'i', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\022', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', 'i', 'n', - 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'Q', '\n', '\021', 'l', - 'o', 'a', 'd', '_', 's', 't', 'a', 't', 's', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '%', + '.', 'E', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', + 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\014', 'e', 'v', 'e', + 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', 'e', ':', '@', '\232', + '\305', '\210', '\036', ';', '\n', '9', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'C', 'l', 'u', 's', + 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'O', + 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', + 'i', 'o', 'n', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', + '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', + 'a', 'g', 'e', 'r', '\"', '\260', '\001', '\n', '\t', 'W', 'a', 't', + 'c', 'h', 'd', 'o', 'g', 's', '\022', 'U', '\n', '\024', 'm', 'a', + 'i', 'n', '_', 't', 'h', 'r', 'e', 'a', 'd', '_', 'w', 'a', + 't', 'c', 'h', 'd', 'o', 'g', '\030', '\001', ' ', '\001', '(', '\013', + '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', + 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', + 'g', 'R', '\022', 'm', 'a', 'i', 'n', 'T', 'h', 'r', 'e', 'a', + 'd', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\022', 'L', '\n', + '\017', 'w', 'o', 'r', 'k', 'e', 'r', '_', 'w', 'a', 't', 'c', + 'h', 'd', 'o', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', - 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', - 'e', 'R', '\017', 'l', 'o', 'a', 'd', 'S', 't', 'a', 't', 's', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'G', '\n', ' ', 'e', 'n', - 'a', 'b', 'l', 'e', '_', 'd', 'e', 'f', 'e', 'r', 'r', 'e', - 'd', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'c', 'r', - 'e', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\010', - 'R', '\035', 'e', 'n', 'a', 'b', 'l', 'e', 'D', 'e', 'f', 'e', - 'r', 'r', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', - 'r', 'e', 'a', 't', 'i', 'o', 'n', '\032', '\311', '\001', '\n', '\020', - 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', - 't', 'i', 'o', 'n', '\022', '$', '\n', '\016', 'e', 'v', 'e', 'n', - 't', '_', 'l', 'o', 'g', '_', 'p', 'a', 't', 'h', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'L', - 'o', 'g', 'P', 'a', 't', 'h', '\022', 'M', '\n', '\r', 'e', 'v', - 'e', 'n', 't', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', - '\002', ' ', '\001', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'E', 'v', 'e', 'n', 't', 'S', 'e', - 'r', 'v', 'i', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\014', 'e', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', - 'e', ':', '@', '\232', '\305', '\210', '\036', ';', '\n', '9', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', - 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', - 'e', 'r', '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', - 't', 'e', 'c', 't', 'i', 'o', 'n', ':', '/', '\232', '\305', '\210', - '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', - 'a', 'p', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', - 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\"', '\260', '\001', '\n', - '\t', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 's', '\022', 'U', - '\n', '\024', 'm', 'a', 'i', 'n', '_', 't', 'h', 'r', 'e', 'a', - 'd', '_', 'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\030', '\001', - ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', - 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', - 'c', 'h', 'd', 'o', 'g', 'R', '\022', 'm', 'a', 'i', 'n', 'T', - 'h', 'r', 'e', 'a', 'd', 'W', 'a', 't', 'c', 'h', 'd', 'o', - 'g', '\022', 'L', '\n', '\017', 'w', 'o', 'r', 'k', 'e', 'r', '_', - 'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\030', '\002', ' ', '\001', - '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', - 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', - 'd', 'o', 'g', 'R', '\016', 'w', 'o', 'r', 'k', 'e', 'r', 'W', - 'a', 't', 'c', 'h', 'd', 'o', 'g', '\"', '\272', '\006', '\n', '\010', - 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\022', 'L', '\n', '\007', - 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\003', '(', - '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', - 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', - 'o', 'g', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A', - 'c', 't', 'i', 'o', 'n', 'R', '\007', 'a', 'c', 't', 'i', 'o', - 'n', 's', '\022', '<', '\n', '\014', 'm', 'i', 's', 's', '_', 't', - 'i', 'm', 'e', 'o', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', - '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'R', '\013', 'm', 'i', 's', 's', 'T', 'i', 'm', - 'e', 'o', 'u', 't', '\022', 'D', '\n', '\020', 'm', 'e', 'g', 'a', - 'm', 'i', 's', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', - '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', + 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', + 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'R', + '\016', 'w', 'o', 'r', 'k', 'e', 'r', 'W', 'a', 't', 'c', 'h', + 'd', 'o', 'g', '\"', '\272', '\006', '\n', '\010', 'W', 'a', 't', 'c', + 'h', 'd', 'o', 'g', '\022', 'L', '\n', '\007', 'a', 'c', 't', 'i', + 'o', 'n', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '2', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', + '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '.', 'W', + 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A', 'c', 't', 'i', 'o', + 'n', 'R', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\022', '<', + '\n', '\014', 'm', 'i', 's', 's', '_', 't', 'i', 'm', 'e', 'o', + 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', + '\013', 'm', 'i', 's', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', + '\022', 'D', '\n', '\020', 'm', 'e', 'g', 'a', 'm', 'i', 's', 's', + '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 'R', '\017', 'm', 'e', 'g', 'a', 'm', + 'i', 's', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '<', + '\n', '\014', 'k', 'i', 'l', 'l', '_', 't', 'i', 'm', 'e', 'o', + 'u', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', + '\013', 'k', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', + '\022', 'Z', '\n', '\027', 'm', 'a', 'x', '_', 'k', 'i', 'l', 'l', + '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'j', 'i', 't', + 't', 'e', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', + 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '2', '\000', 'R', '\024', + 'm', 'a', 'x', 'K', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o', + 'u', 't', 'J', 'i', 't', 't', 'e', 'r', '\022', 'F', '\n', '\021', + 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', '_', 't', 'i', + 'm', 'e', 'o', 'u', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', + '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', + 'o', 'n', 'R', '\020', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', + 'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'G', '\n', '\023', + 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', '_', 't', 'h', + 'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', '\005', ' ', '\001', '(', + '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', + 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', + 't', 'R', '\022', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', + 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\032', '\205', '\002', + '\n', '\016', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A', 'c', + 't', 'i', 'o', 'n', '\022', 'B', '\n', '\006', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', + 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', + '\022', '`', '\n', '\005', 'e', 'v', 'e', 'n', 't', '\030', '\002', ' ', + '\001', '(', '\016', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', + 'h', 'd', 'o', 'g', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', + 'g', 'A', 'c', 't', 'i', 'o', 'n', '.', 'W', 'a', 't', 'c', + 'h', 'd', 'o', 'g', 'E', 'v', 'e', 'n', 't', 'B', '\010', '\372', + 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\005', 'e', 'v', 'e', + 'n', 't', '\"', 'M', '\n', '\r', 'W', 'a', 't', 'c', 'h', 'd', + 'o', 'g', 'E', 'v', 'e', 'n', 't', '\022', '\013', '\n', '\007', 'U', + 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\010', '\n', '\004', + 'K', 'I', 'L', 'L', '\020', '\001', '\022', '\r', '\n', '\t', 'M', 'U', + 'L', 'T', 'I', 'K', 'I', 'L', 'L', '\020', '\002', '\022', '\014', '\n', + '\010', 'M', 'E', 'G', 'A', 'M', 'I', 'S', 'S', '\020', '\003', '\022', + '\010', '\n', '\004', 'M', 'I', 'S', 'S', '\020', '\004', ':', ')', '\232', + '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'W', 'a', 't', 'c', + 'h', 'd', 'o', 'g', '\"', 'Q', '\n', '\013', 'F', 'a', 't', 'a', + 'l', 'A', 'c', 't', 'i', 'o', 'n', '\022', 'B', '\n', '\006', 'c', + 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', + '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', + 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\006', 'c', 'o', 'n', + 'f', 'i', 'g', '\"', '\334', '\001', '\n', '\007', 'R', 'u', 'n', 't', + 'i', 'm', 'e', '\022', '!', '\n', '\014', 's', 'y', 'm', 'l', 'i', + 'n', 'k', '_', 'r', 'o', 'o', 't', '\030', '\001', ' ', '\001', '(', + '\t', 'R', '\013', 's', 'y', 'm', 'l', 'i', 'n', 'k', 'R', 'o', + 'o', 't', '\022', '\"', '\n', '\014', 's', 'u', 'b', 'd', 'i', 'r', + 'e', 'c', 't', 'o', 'r', 'y', '\030', '\002', ' ', '\001', '(', '\t', + 'R', '\014', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', + 'r', 'y', '\022', '3', '\n', '\025', 'o', 'v', 'e', 'r', 'r', 'i', + 'd', 'e', '_', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', + 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\024', 'o', + 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 'u', 'b', 'd', 'i', + 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', '+', '\n', '\004', 'b', + 'a', 's', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\027', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\004', + 'b', 'a', 's', 'e', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', + '!', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', + 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\"', '\333', + '\006', '\n', '\014', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', + 'y', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', + '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', + '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '<', '\n', '\014', + 's', 't', 'a', 't', 'i', 'c', '_', 'l', 'a', 'y', 'e', 'r', + '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\017', 'm', - 'e', 'g', 'a', 'm', 'i', 's', 's', 'T', 'i', 'm', 'e', 'o', - 'u', 't', '\022', '<', '\n', '\014', 'k', 'i', 'l', 'l', '_', 't', - 'i', 'm', 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', '(', '\013', - '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'R', '\013', 'k', 'i', 'l', 'l', 'T', 'i', 'm', - 'e', 'o', 'u', 't', '\022', 'Z', '\n', '\027', 'm', 'a', 'x', '_', - 'k', 'i', 'l', 'l', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', - '_', 'j', 'i', 't', 't', 'e', 'r', '\030', '\006', ' ', '\001', '(', - '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', - 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', - '2', '\000', 'R', '\024', 'm', 'a', 'x', 'K', 'i', 'l', 'l', 'T', - 'i', 'm', 'e', 'o', 'u', 't', 'J', 'i', 't', 't', 'e', 'r', - '\022', 'F', '\n', '\021', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', - 'l', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\004', ' ', - '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', - 'r', 'a', 't', 'i', 'o', 'n', 'R', '\020', 'm', 'u', 'l', 't', - 'i', 'k', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', - '\022', 'G', '\n', '\023', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', - 'l', '_', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', - '\005', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', - 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', - 'r', 'c', 'e', 'n', 't', 'R', '\022', 'm', 'u', 'l', 't', 'i', - 'k', 'i', 'l', 'l', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', - 'd', '\032', '\205', '\002', '\n', '\016', 'W', 'a', 't', 'c', 'h', 'd', - 'o', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\022', 'B', '\n', '\006', - 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\006', 'c', 'o', - 'n', 'f', 'i', 'g', '\022', '`', '\n', '\005', 'e', 'v', 'e', 'n', - 't', '\030', '\002', ' ', '\001', '(', '\016', '2', '@', '.', 'e', 'n', + '.', 'S', 't', 'r', 'u', 'c', 't', 'H', '\000', 'R', '\013', 's', + 't', 'a', 't', 'i', 'c', 'L', 'a', 'y', 'e', 'r', '\022', 'R', + '\n', '\n', 'd', 'i', 's', 'k', '_', 'l', 'a', 'y', 'e', 'r', + '\030', '\003', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', + 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'R', + 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', + 'D', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', 'H', '\000', 'R', + '\t', 'd', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', '\022', 'U', + '\n', '\013', 'a', 'd', 'm', 'i', 'n', '_', 'l', 'a', 'y', 'e', + 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', - 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '.', 'W', 'a', 't', - 'c', 'h', 'd', 'o', 'g', 'A', 'c', 't', 'i', 'o', 'n', '.', - 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'E', 'v', 'e', 'n', - 't', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', - '\005', 'e', 'v', 'e', 'n', 't', '\"', 'M', '\n', '\r', 'W', 'a', - 't', 'c', 'h', 'd', 'o', 'g', 'E', 'v', 'e', 'n', 't', '\022', - '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', - '\022', '\010', '\n', '\004', 'K', 'I', 'L', 'L', '\020', '\001', '\022', '\r', - '\n', '\t', 'M', 'U', 'L', 'T', 'I', 'K', 'I', 'L', 'L', '\020', - '\002', '\022', '\014', '\n', '\010', 'M', 'E', 'G', 'A', 'M', 'I', 'S', - 'S', '\020', '\003', '\022', '\010', '\n', '\004', 'M', 'I', 'S', 'S', '\020', - '\004', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', - 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', - 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\"', 'Q', '\n', '\013', - 'F', 'a', 't', 'a', 'l', 'A', 'c', 't', 'i', 'o', 'n', '\022', - 'B', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', - '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\334', '\001', '\n', '\007', - 'R', 'u', 'n', 't', 'i', 'm', 'e', '\022', '!', '\n', '\014', 's', - 'y', 'm', 'l', 'i', 'n', 'k', '_', 'r', 'o', 'o', 't', '\030', - '\001', ' ', '\001', '(', '\t', 'R', '\013', 's', 'y', 'm', 'l', 'i', - 'n', 'k', 'R', 'o', 'o', 't', '\022', '\"', '\n', '\014', 's', 'u', - 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\002', - ' ', '\001', '(', '\t', 'R', '\014', 's', 'u', 'b', 'd', 'i', 'r', - 'e', 'c', 't', 'o', 'r', 'y', '\022', '3', '\n', '\025', 'o', 'v', - 'e', 'r', 'r', 'i', 'd', 'e', '_', 's', 'u', 'b', 'd', 'i', - 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', - '\t', 'R', '\024', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', - 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', - '+', '\n', '\004', 'b', 'a', 's', 'e', '\030', '\004', ' ', '\001', '(', - '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', - 'c', 't', 'R', '\004', 'b', 'a', 's', 'e', ':', '(', '\232', '\305', - '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', + '.', 'A', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r', 'H', + '\000', 'R', '\n', 'a', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', + 'r', '\022', 'R', '\n', '\n', 'r', 't', 'd', 's', '_', 'l', 'a', + 'y', 'e', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '1', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', + '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', + 'e', 'r', '.', 'R', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', + 'H', '\000', 'R', '\t', 'r', 't', 'd', 's', 'L', 'a', 'y', 'e', + 'r', '\032', '\301', '\001', '\n', '\t', 'D', 'i', 's', 'k', 'L', 'a', + 'y', 'e', 'r', '\022', '!', '\n', '\014', 's', 'y', 'm', 'l', 'i', + 'n', 'k', '_', 'r', 'o', 'o', 't', '\030', '\001', ' ', '\001', '(', + '\t', 'R', '\013', 's', 'y', 'm', 'l', 'i', 'n', 'k', 'R', 'o', + 'o', 't', '\022', '\"', '\n', '\014', 's', 'u', 'b', 'd', 'i', 'r', + 'e', 'c', 't', 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\t', + 'R', '\014', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', + 'r', 'y', '\022', '4', '\n', '\026', 'a', 'p', 'p', 'e', 'n', 'd', + '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'c', 'l', 'u', + 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\024', + 'a', 'p', 'p', 'e', 'n', 'd', 'S', 'e', 'r', 'v', 'i', 'c', + 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '7', '\232', '\305', + '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', - 'm', 'e', '\"', '\333', '\006', '\n', '\014', 'R', 'u', 'n', 't', 'i', - 'm', 'e', 'L', 'a', 'y', 'e', 'r', '\022', '\033', '\n', '\004', 'n', - 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', - 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', - '\022', '<', '\n', '\014', 's', 't', 'a', 't', 'i', 'c', '_', 'l', - 'a', 'y', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'H', - '\000', 'R', '\013', 's', 't', 'a', 't', 'i', 'c', 'L', 'a', 'y', - 'e', 'r', '\022', 'R', '\n', '\n', 'd', 'i', 's', 'k', '_', 'l', - 'a', 'y', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '1', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', - 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', - 'y', 'e', 'r', '.', 'D', 'i', 's', 'k', 'L', 'a', 'y', 'e', - 'r', 'H', '\000', 'R', '\t', 'd', 'i', 's', 'k', 'L', 'a', 'y', - 'e', 'r', '\022', 'U', '\n', '\013', 'a', 'd', 'm', 'i', 'n', '_', - 'l', 'a', 'y', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', - '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', - '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', - 'a', 'y', 'e', 'r', '.', 'A', 'd', 'm', 'i', 'n', 'L', 'a', - 'y', 'e', 'r', 'H', '\000', 'R', '\n', 'a', 'd', 'm', 'i', 'n', - 'L', 'a', 'y', 'e', 'r', '\022', 'R', '\n', '\n', 'r', 't', 'd', - 's', '_', 'l', 'a', 'y', 'e', 'r', '\030', '\005', ' ', '\001', '(', - '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'D', 'i', 's', 'k', + 'L', 'a', 'y', 'e', 'r', '\032', 'F', '\n', '\n', 'A', 'd', 'm', + 'i', 'n', 'L', 'a', 'y', 'e', 'r', ':', '8', '\232', '\305', '\210', + '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', - 'a', 'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', - 'e', 'L', 'a', 'y', 'e', 'r', '.', 'R', 't', 'd', 's', 'L', - 'a', 'y', 'e', 'r', 'H', '\000', 'R', '\t', 'r', 't', 'd', 's', - 'L', 'a', 'y', 'e', 'r', '\032', '\301', '\001', '\n', '\t', 'D', 'i', - 's', 'k', 'L', 'a', 'y', 'e', 'r', '\022', '!', '\n', '\014', 's', - 'y', 'm', 'l', 'i', 'n', 'k', '_', 'r', 'o', 'o', 't', '\030', - '\001', ' ', '\001', '(', '\t', 'R', '\013', 's', 'y', 'm', 'l', 'i', - 'n', 'k', 'R', 'o', 'o', 't', '\022', '\"', '\n', '\014', 's', 'u', - 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\003', - ' ', '\001', '(', '\t', 'R', '\014', 's', 'u', 'b', 'd', 'i', 'r', - 'e', 'c', 't', 'o', 'r', 'y', '\022', '4', '\n', '\026', 'a', 'p', - 'p', 'e', 'n', 'd', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', - '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', - '(', '\010', 'R', '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'S', 'e', - 'r', 'v', 'i', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', + 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', + 'e', 'L', 'a', 'y', 'e', 'r', '.', 'A', 'd', 'm', 'i', 'n', + 'L', 'a', 'y', 'e', 'r', '\032', '\235', '\001', '\n', '\t', 'R', 't', + 'd', 's', 'L', 'a', 'y', 'e', 'r', '\022', '\022', '\n', '\004', 'n', + 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', + 'a', 'm', 'e', '\022', 'C', '\n', '\013', 'r', 't', 'd', 's', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', + 'R', '\n', 'r', 't', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', - 'D', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', '\032', 'F', '\n', - '\n', 'A', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r', ':', - '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', - 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', - 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'A', - 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r', '\032', '\235', '\001', - '\n', '\t', 'R', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', '\022', - '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', - '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'C', '\n', '\013', 'r', - 't', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', - 'u', 'r', 'c', 'e', 'R', '\n', 'r', 't', 'd', 's', 'C', 'o', - 'n', 'f', 'i', 'g', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', - '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', - 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', - 'y', 'e', 'r', '.', 'R', 't', 'd', 's', 'L', 'a', 'y', 'e', - 'r', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', + 'R', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', ':', '-', '\232', + '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', + 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', + 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', 'B', '\026', '\n', '\017', + 'l', 'a', 'y', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', + 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\202', '\001', '\n', + '\016', 'L', 'a', 'y', 'e', 'r', 'e', 'd', 'R', 'u', 'n', 't', + 'i', 'm', 'e', '\022', '?', '\n', '\006', 'l', 'a', 'y', 'e', 'r', + 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', - 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', + 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', - 'B', '\026', '\n', '\017', 'l', 'a', 'y', 'e', 'r', '_', 's', 'p', - 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', - '\"', '\202', '\001', '\n', '\016', 'L', 'a', 'y', 'e', 'r', 'e', 'd', - 'R', 'u', 'n', 't', 'i', 'm', 'e', '\022', '?', '\n', '\006', 'l', - 'a', 'y', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', - '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', - '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', - 'a', 'y', 'e', 'r', 'R', '\006', 'l', 'a', 'y', 'e', 'r', 's', - ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', - 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'L', - 'a', 'y', 'e', 'r', 'e', 'd', 'R', 'u', 'n', 't', 'i', 'm', - 'e', '\"', '\261', '\002', '\n', '\022', 'C', 'u', 's', 't', 'o', 'm', + 'R', '\006', 'l', 'a', 'y', 'e', 'r', 's', ':', '/', '\232', '\305', + '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', + 'r', 'a', 'p', '.', 'v', '2', '.', 'L', 'a', 'y', 'e', 'r', + 'e', 'd', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\"', '\261', '\002', + '\n', '\022', 'C', 'u', 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', + 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', '\022', ';', '\n', '\022', + 'i', 'n', 'l', 'i', 'n', 'e', '_', 'h', 'e', 'a', 'd', 'e', + 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', + 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', + '\310', '\001', '\000', 'R', '\020', 'i', 'n', 'l', 'i', 'n', 'e', 'H', + 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'v', '\n', + '\022', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'h', 'e', 'a', 'd', + 'e', 'r', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', + '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', + 'a', 'p', '.', 'v', '3', '.', 'C', 'u', 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', - '\022', ';', '\n', '\022', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'h', - 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', - ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', - '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\020', 'i', 'n', 'l', - 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', - 'e', '\022', 'v', '\n', '\022', 'i', 'n', 'l', 'i', 'n', 'e', '_', - 'h', 'e', 'a', 'd', 'e', 'r', '_', 't', 'y', 'p', 'e', '\030', - '\002', ' ', '\001', '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', + '.', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', + 'r', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', + '\002', '\020', '\001', 'R', '\020', 'i', 'n', 'l', 'i', 'n', 'e', 'H', + 'e', 'a', 'd', 'e', 'r', 'T', 'y', 'p', 'e', '\"', 'f', '\n', + '\020', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', + 'r', 'T', 'y', 'p', 'e', '\022', '\022', '\n', '\016', 'R', 'E', 'Q', + 'U', 'E', 'S', 'T', '_', 'H', 'E', 'A', 'D', 'E', 'R', '\020', + '\000', '\022', '\023', '\n', '\017', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', + '_', 'T', 'R', 'A', 'I', 'L', 'E', 'R', '\020', '\001', '\022', '\023', + '\n', '\017', 'R', 'E', 'S', 'P', 'O', 'N', 'S', 'E', '_', 'H', + 'E', 'A', 'D', 'E', 'R', '\020', '\002', '\022', '\024', '\n', '\020', 'R', + 'E', 'S', 'P', 'O', 'N', 'S', 'E', '_', 'T', 'R', 'A', 'I', + 'L', 'E', 'R', '\020', '\003', '\"', '\225', '\001', '\n', '\026', 'M', 'e', + 'm', 'o', 'r', 'y', 'A', 'l', 'l', 'o', 'c', 'a', 't', 'o', + 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', '(', '\n', '\020', + 'b', 'y', 't', 'e', 's', '_', 't', 'o', '_', 'r', 'e', 'l', + 'e', 'a', 's', 'e', '\030', '\001', ' ', '\001', '(', '\004', 'R', '\016', + 'b', 'y', 't', 'e', 's', 'T', 'o', 'R', 'e', 'l', 'e', 'a', + 's', 'e', '\022', 'Q', '\n', '\027', 'm', 'e', 'm', 'o', 'r', 'y', + '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '_', 'i', 'n', 't', + 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', + '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', + 'o', 'n', 'R', '\025', 'm', 'e', 'm', 'o', 'r', 'y', 'R', 'e', + 'l', 'e', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', + 'l', 'B', '\221', '\001', '\n', '\'', 'i', 'o', '.', 'e', 'n', 'v', + 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', - 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'C', 'u', - 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', - 'a', 'd', 'e', 'r', '.', 'I', 'n', 'l', 'i', 'n', 'e', 'H', - 'e', 'a', 'd', 'e', 'r', 'T', 'y', 'p', 'e', 'B', '\010', '\372', - 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\020', 'i', 'n', 'l', - 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'y', 'p', - 'e', '\"', 'f', '\n', '\020', 'I', 'n', 'l', 'i', 'n', 'e', 'H', - 'e', 'a', 'd', 'e', 'r', 'T', 'y', 'p', 'e', '\022', '\022', '\n', - '\016', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', '_', 'H', 'E', 'A', - 'D', 'E', 'R', '\020', '\000', '\022', '\023', '\n', '\017', 'R', 'E', 'Q', - 'U', 'E', 'S', 'T', '_', 'T', 'R', 'A', 'I', 'L', 'E', 'R', - '\020', '\001', '\022', '\023', '\n', '\017', 'R', 'E', 'S', 'P', 'O', 'N', - 'S', 'E', '_', 'H', 'E', 'A', 'D', 'E', 'R', '\020', '\002', '\022', - '\024', '\n', '\020', 'R', 'E', 'S', 'P', 'O', 'N', 'S', 'E', '_', - 'T', 'R', 'A', 'I', 'L', 'E', 'R', '\020', '\003', '\"', '\225', '\001', - '\n', '\026', 'M', 'e', 'm', 'o', 'r', 'y', 'A', 'l', 'l', 'o', - 'c', 'a', 't', 'o', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', - '\022', '(', '\n', '\020', 'b', 'y', 't', 'e', 's', '_', 't', 'o', - '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\030', '\001', ' ', '\001', - '(', '\004', 'R', '\016', 'b', 'y', 't', 'e', 's', 'T', 'o', 'R', - 'e', 'l', 'e', 'a', 's', 'e', '\022', 'Q', '\n', '\027', 'm', 'e', - 'm', 'o', 'r', 'y', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', - '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', - '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', - 'r', 'a', 't', 'i', 'o', 'n', 'R', '\025', 'm', 'e', 'm', 'o', - 'r', 'y', 'R', 'e', 'l', 'e', 'a', 's', 'e', 'I', 'n', 't', - 'e', 'r', 'v', 'a', 'l', 'B', '\221', '\001', '\n', '\'', 'i', 'o', - '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', - '3', 'B', '\016', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', - 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'L', 'g', 'i', 't', - 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', - 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', - 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', - 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', - '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '/', 'v', - '3', ';', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'v', - '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', - 'r', 'o', 't', 'o', '3', + 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', 'B', '\016', 'B', + 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'P', 'r', 'o', 't', + 'o', 'P', '\001', 'Z', 'L', 'g', 'i', 't', 'h', 'u', 'b', '.', + 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', + 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', + 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'b', 'o', 'o', + 't', 's', 't', 'r', 'a', 'p', '/', 'v', '3', ';', 'b', 'o', + 'o', 't', 's', 't', 'r', 'a', 'p', 'v', '3', '\272', '\200', '\310', + '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', + '3', }; -static _upb_DefPool_Init *deps[25] = { +static _upb_DefPool_Init *deps[26] = { &envoy_config_accesslog_v3_accesslog_proto_upbdefinit, &envoy_config_cluster_v3_cluster_proto_upbdefinit, &envoy_config_core_v3_address_proto_upbdefinit, @@ -853,6 +873,7 @@ static _upb_DefPool_Init *deps[25] = { &envoy_config_overload_v3_overload_proto_upbdefinit, &envoy_config_trace_v3_http_tracer_proto_upbdefinit, &envoy_extensions_transport_sockets_tls_v3_secret_proto_upbdefinit, + &envoy_type_matcher_v3_string_proto_upbdefinit, &envoy_type_v3_percent_proto_upbdefinit, &google_protobuf_duration_proto_upbdefinit, &google_protobuf_struct_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c index 1ff02c03b90..9c4ba9a4eb7 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c @@ -29,6 +29,7 @@ extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_struct_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; extern _upb_DefPool_Init xds_core_v3_collection_entry_proto_upbdefinit; +extern _upb_DefPool_Init xds_type_matcher_v3_matcher_proto_upbdefinit; extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_security_proto_upbdefinit; @@ -36,7 +37,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[13189] = { +static const char descriptor[13312] = { '\n', '%', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'p', 'r', @@ -97,1049 +98,1059 @@ static const char descriptor[13189] = { 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'x', 'd', 's', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '_', 'e', 'n', 't', - 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', - 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', - 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', - 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', - 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', - 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', - 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', - 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', - 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', - 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', - 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', - 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', - 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', - 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'K', '\n', - '\021', 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'l', 'l', - 'e', 'c', 't', 'i', 'o', 'n', '\022', '6', '\n', '\007', 'e', 'n', - 't', 'r', 'i', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', - '\034', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', - 'E', 'n', 't', 'r', 'y', 'R', '\007', 'e', 'n', 't', 'r', 'i', - 'e', 's', '\"', '\312', 'T', '\n', '\007', 'C', 'l', 'u', 's', 't', - 'e', 'r', '\022', 'o', '\n', '\030', 't', 'r', 'a', 'n', 's', 'p', - 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'm', - 'a', 't', 'c', 'h', 'e', 's', '\030', '+', ' ', '\003', '(', '\013', - '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', - 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'T', - 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', - 'e', 't', 'M', 'a', 't', 'c', 'h', 'R', '\026', 't', 'r', 'a', - 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', - 'M', 'a', 't', 'c', 'h', 'e', 's', '\022', '\033', '\n', '\004', 'n', - 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', - 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', - '\022', '>', '\n', '\r', 'a', 'l', 't', '_', 's', 't', 'a', 't', - '_', 'n', 'a', 'm', 'e', '\030', '\034', ' ', '\001', '(', '\t', 'B', - '\032', '\362', '\230', '\376', '\217', '\005', '\024', '\n', '\022', 'o', 'b', 's', - 'e', 'r', 'v', 'a', 'b', 'i', 'l', 'i', 't', 'y', '_', 'n', - 'a', 'm', 'e', 'R', '\013', 'a', 'l', 't', 'S', 't', 'a', 't', - 'N', 'a', 'm', 'e', '\022', 'N', '\n', '\004', 't', 'y', 'p', 'e', - '\030', '\002', ' ', '\001', '(', '\016', '2', '.', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', - 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', - 's', 't', 'e', 'r', '.', 'D', 'i', 's', 'c', 'o', 'v', 'e', - 'r', 'y', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', - '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\004', 't', 'y', 'p', 'e', - '\022', 'W', '\n', '\014', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', - 't', 'y', 'p', 'e', '\030', '&', ' ', '\001', '(', '\013', '2', '2', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', - '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'u', 's', - 't', 'o', 'm', 'C', 'l', 'u', 's', 't', 'e', 'r', 'T', 'y', - 'p', 'e', 'H', '\000', 'R', '\013', 'c', 'l', 'u', 's', 't', 'e', - 'r', 'T', 'y', 'p', 'e', '\022', '_', '\n', '\022', 'e', 'd', 's', - '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '1', '.', + 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'x', 'd', + 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', + 'e', 'r', '/', 'v', '3', '/', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', + 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', + 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', + 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', + 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', + 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', + 'r', 'o', 't', 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', + 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', + 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', + 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', + 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', + 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', + 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', + 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', + 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', + 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'K', '\n', '\021', + 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'l', 'l', 'e', + 'c', 't', 'i', 'o', 'n', '\022', '6', '\n', '\007', 'e', 'n', 't', + 'r', 'i', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', + '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'E', + 'n', 't', 'r', 'y', 'R', '\007', 'e', 'n', 't', 'r', 'i', 'e', + 's', '\"', '\242', 'U', '\n', '\007', 'C', 'l', 'u', 's', 't', 'e', + 'r', '\022', 'o', '\n', '\030', 't', 'r', 'a', 'n', 's', 'p', 'o', + 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'm', 'a', + 't', 'c', 'h', 'e', 's', '\030', '+', ' ', '\003', '(', '\013', '2', + '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', + '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'T', 'r', + 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', + 't', 'M', 'a', 't', 'c', 'h', 'R', '\026', 't', 'r', 'a', 'n', + 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'M', + 'a', 't', 'c', 'h', 'e', 's', '\022', 'V', '\n', '\030', 't', 'r', + 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', + 'e', 't', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', ';', + ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', + 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', + 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\026', + 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', + 'k', 'e', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', '\033', + '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', + 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', + 'a', 'm', 'e', '\022', '>', '\n', '\r', 'a', 'l', 't', '_', 's', + 't', 'a', 't', '_', 'n', 'a', 'm', 'e', '\030', '\034', ' ', '\001', + '(', '\t', 'B', '\032', '\362', '\230', '\376', '\217', '\005', '\024', '\n', '\022', + 'o', 'b', 's', 'e', 'r', 'v', 'a', 'b', 'i', 'l', 'i', 't', + 'y', '_', 'n', 'a', 'm', 'e', 'R', '\013', 'a', 'l', 't', 'S', + 't', 'a', 't', 'N', 'a', 'm', 'e', '\022', 'N', '\n', '\004', 't', + 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'E', 'd', 's', 'C', - 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', - 'R', '\020', 'e', 'd', 's', 'C', 'l', 'u', 's', 't', 'e', 'r', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'L', '\n', '\017', 'c', 'o', - 'n', 'n', 'e', 'c', 't', '_', 't', 'i', 'm', 'e', 'o', 'u', - 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', - '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\016', 'c', 'o', - 'n', 'n', 'e', 'c', 't', 'T', 'i', 'm', 'e', 'o', 'u', 't', - '\022', 'o', '\n', '!', 'p', 'e', 'r', '_', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'b', 'u', 'f', 'f', 'e', - 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', - 's', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', - 'e', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\020', '\001', 'R', '\035', - 'p', 'e', 'r', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', - 'B', 'y', 't', 'e', 's', '\022', 'P', '\n', '\t', 'l', 'b', '_', - 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\006', ' ', '\001', '(', '\016', - '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'D', 'i', 's', 'c', + 'o', 'v', 'e', 'r', 'y', 'T', 'y', 'p', 'e', 'B', '\010', '\372', + 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\004', 't', + 'y', 'p', 'e', '\022', 'W', '\n', '\014', 'c', 'l', 'u', 's', 't', + 'e', 'r', '_', 't', 'y', 'p', 'e', '\030', '&', ' ', '\001', '(', + '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', + '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', + 'C', 'u', 's', 't', 'o', 'm', 'C', 'l', 'u', 's', 't', 'e', + 'r', 'T', 'y', 'p', 'e', 'H', '\000', 'R', '\013', 'c', 'l', 'u', + 's', 't', 'e', 'r', 'T', 'y', 'p', 'e', '\022', '_', '\n', '\022', + 'e', 'd', 's', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', + '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', - 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', - 'b', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\010', '\372', 'B', '\005', - '\202', '\001', '\002', '\020', '\001', 'R', '\010', 'l', 'b', 'P', 'o', 'l', - 'i', 'c', 'y', '\022', 'X', '\n', '\017', 'l', 'o', 'a', 'd', '_', - 'a', 's', 's', 'i', 'g', 'n', 'm', 'e', 'n', 't', '\030', '!', - ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', - 'o', 'i', 'n', 't', '.', 'v', '3', '.', 'C', 'l', 'u', 's', - 't', 'e', 'r', 'L', 'o', 'a', 'd', 'A', 's', 's', 'i', 'g', - 'n', 'm', 'e', 'n', 't', 'R', '\016', 'l', 'o', 'a', 'd', 'A', - 's', 's', 'i', 'g', 'n', 'm', 'e', 'n', 't', '\022', 'F', '\n', - '\r', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', - 'k', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '!', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', - 't', 'h', 'C', 'h', 'e', 'c', 'k', 'R', '\014', 'h', 'e', 'a', - 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 's', '\022', 'h', '\n', - '\033', 'm', 'a', 'x', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', - 's', '_', 'p', 'e', 'r', '_', 'c', 'o', 'n', 'n', 'e', 'c', - 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\013', '2', '\034', + 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'E', + 'd', 's', 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'n', + 'f', 'i', 'g', 'R', '\020', 'e', 'd', 's', 'C', 'l', 'u', 's', + 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'L', '\n', + '\017', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 't', 'i', 'm', + 'e', 'o', 'u', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', + 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', + '\016', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'T', 'i', 'm', 'e', + 'o', 'u', 't', '\022', 'o', '\n', '!', 'p', 'e', 'r', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'b', 'u', + 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', + 'y', 't', 'e', 's', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', - '\004', '\003', '3', '.', '0', 'R', '\030', 'm', 'a', 'x', 'R', 'e', - 'q', 'u', 'e', 's', 't', 's', 'P', 'e', 'r', 'C', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '\022', 'S', '\n', '\020', 'c', - 'i', 'r', 'c', 'u', 'i', 't', '_', 'b', 'r', 'e', 'a', 'k', - 'e', 'r', 's', '\030', '\n', ' ', '\001', '(', '\013', '2', '(', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', - 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', - 'e', 'r', 's', 'R', '\017', 'c', 'i', 'r', 'c', 'u', 'i', 't', - 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '\022', '\203', '\001', '\n', - '\036', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'h', 't', - 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', - 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '.', ' ', '\001', '(', - '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', - 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', - 'i', 'o', 'n', 's', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', - '\004', '\003', '3', '.', '0', 'R', '\033', 'u', 'p', 's', 't', 'r', - 'e', 'a', 'm', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'w', - '\n', '\034', 'c', 'o', 'm', 'm', 'o', 'n', '_', 'h', 't', 't', - 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', - 'p', 't', 'i', 'o', 'n', 's', '\030', '\035', ' ', '\001', '(', '\013', - '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'a', 'l', 'u', 'e', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\020', + '\001', 'R', '\035', 'p', 'e', 'r', 'C', 'o', 'n', 'n', 'e', 'c', + 't', 'i', 'o', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', + 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\022', 'P', '\n', '\t', + 'l', 'b', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\006', ' ', + '\001', '(', '\016', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', + 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', + 'r', '.', 'L', 'b', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\010', + '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 'l', 'b', + 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'X', '\n', '\017', 'l', 'o', + 'a', 'd', '_', 'a', 's', 's', 'i', 'g', 'n', 'm', 'e', 'n', + 't', '\030', '!', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', + 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'v', '3', '.', 'C', + 'l', 'u', 's', 't', 'e', 'r', 'L', 'o', 'a', 'd', 'A', 's', + 's', 'i', 'g', 'n', 'm', 'e', 'n', 't', 'R', '\016', 'l', 'o', + 'a', 'd', 'A', 's', 's', 'i', 'g', 'n', 'm', 'e', 'n', 't', + '\022', 'F', '\n', '\r', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', + 'h', 'e', 'c', 'k', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', + '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', + 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'R', '\014', + 'h', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 's', + '\022', 'h', '\n', '\033', 'm', 'a', 'x', '_', 'r', 'e', 'q', 'u', + 'e', 's', 't', 's', '_', 'p', 'e', 'r', '_', 'c', 'o', 'n', + 'n', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', + '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', + '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', + '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\030', 'm', 'a', + 'x', 'R', 'e', 'q', 'u', 'e', 's', 't', 's', 'P', 'e', 'r', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\022', 'S', + '\n', '\020', 'c', 'i', 'r', 'c', 'u', 'i', 't', '_', 'b', 'r', + 'e', 'a', 'k', 'e', 'r', 's', '\030', '\n', ' ', '\001', '(', '\013', + '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', + 'v', '3', '.', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', + 'e', 'a', 'k', 'e', 'r', 's', 'R', '\017', 'c', 'i', 'r', 'c', + 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '\022', + '\203', '\001', '\n', '\036', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', + '_', 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', + 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '.', + ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\013', '\030', '\001', '\222', - '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\031', 'c', 'o', - 'm', 'm', 'o', 'n', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', - 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', - 'k', '\n', '\025', 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', - 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', - '\030', '\r', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '1', 'P', + '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\033', 'u', 'p', + 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', 'p', 'P', 'r', + 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', + 's', '\022', 'w', '\n', '\034', 'c', 'o', 'm', 'm', 'o', 'n', '_', + 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', + 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\035', ' ', + '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', + 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\013', + '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', + '\031', 'c', 'o', 'm', 'm', 'o', 'n', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', 'R', '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - '\022', 't', '\n', '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', + 'n', 's', '\022', 'k', '\n', '\025', 'h', 't', 't', 'p', '_', 'p', + 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', + 'o', 'n', 's', '\030', '\r', ' ', '\001', '(', '\013', '2', '*', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', + 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', 'B', '\013', '\030', '\001', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 'h', 't', 't', 'p', + 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', + 'o', 'n', 's', '\022', 't', '\n', '\026', 'h', 't', 't', 'p', '2', + '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', + 't', 'i', 'o', 'n', 's', '\030', '\016', ' ', '\001', '(', '\013', '2', + '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', + 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', + 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\022', '\030', '\001', '\212', + '\223', '\267', '*', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', + '3', '.', '0', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', + 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', + 's', '\022', '\214', '\001', '\n', ' ', 't', 'y', 'p', 'e', 'd', '_', + 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', - 'n', 's', '\030', '\016', ' ', '\001', '(', '\013', '2', '*', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', - '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', - 'i', 'o', 'n', 's', 'B', '\022', '\030', '\001', '\212', '\223', '\267', '*', - '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '\214', - '\001', '\n', ' ', 't', 'y', 'p', 'e', 'd', '_', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', '_', 'p', 'r', 'o', 't', 'o', - 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', - '$', ' ', '\003', '(', '\013', '2', 'C', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', - 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', - 't', 'e', 'r', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'E', 'n', 't', - 'r', 'y', 'R', '\035', 't', 'y', 'p', 'e', 'd', 'E', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '\\', '\n', - '\020', 'd', 'n', 's', '_', 'r', 'e', 'f', 'r', 'e', 's', 'h', - '_', 'r', 'a', 't', 'e', '\030', '\020', ' ', '\001', '(', '\013', '2', - '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', 'B', '\027', '\030', '\001', '\372', 'B', '\t', '\252', '\001', '\006', - '*', '\004', '\020', '\300', '\204', '=', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', 'R', '\016', 'd', 'n', 's', 'R', 'e', 'f', 'r', - 'e', 's', 'h', 'R', 'a', 't', 'e', '\022', 'M', '\n', '\n', 'd', - 'n', 's', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', ':', ' ', - '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', - 'r', 'a', 't', 'i', 'o', 'n', 'B', '\023', '\030', '\001', '\372', 'B', - '\005', '\252', '\001', '\002', '2', '\000', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', 'R', '\t', 'd', 'n', 's', 'J', 'i', 't', 't', - 'e', 'r', '\022', 'r', '\n', '\030', 'd', 'n', 's', '_', 'f', 'a', - 'i', 'l', 'u', 'r', 'e', '_', 'r', 'e', 'f', 'r', 'e', 's', - 'h', '_', 'r', 'a', 't', 'e', '\030', ',', ' ', '\001', '(', '\013', - '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', - 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', - 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', 't', 'e', 'B', '\013', - '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', - '\025', 'd', 'n', 's', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'R', - 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', 't', 'e', '\022', '3', - '\n', '\017', 'r', 'e', 's', 'p', 'e', 'c', 't', '_', 'd', 'n', - 's', '_', 't', 't', 'l', '\030', '\'', ' ', '\001', '(', '\010', 'B', - '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'R', '\r', 'r', 'e', 's', 'p', 'e', 'c', 't', 'D', 'n', 's', - 'T', 't', 'l', '\022', 'f', '\n', '\021', 'd', 'n', 's', '_', 'l', - 'o', 'o', 'k', 'u', 'p', '_', 'f', 'a', 'm', 'i', 'l', 'y', - '\030', '\021', ' ', '\001', '(', '\016', '2', '0', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', - 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', - 's', 't', 'e', 'r', '.', 'D', 'n', 's', 'L', 'o', 'o', 'k', - 'u', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'B', '\010', '\372', 'B', - '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\017', 'd', 'n', 's', 'L', - 'o', 'o', 'k', 'u', 'p', 'F', 'a', 'm', 'i', 'l', 'y', '\022', - 'O', '\n', '\r', 'd', 'n', 's', '_', 'r', 'e', 's', 'o', 'l', - 'v', 'e', 'r', 's', '\030', '\022', ' ', '\003', '(', '\013', '2', '\035', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', - 'd', 'r', 'e', 's', 's', 'B', '\013', '\030', '\001', '\222', '\307', '\206', - '\330', '\004', '\003', '3', '.', '0', 'R', '\014', 'd', 'n', 's', 'R', - 'e', 's', 'o', 'l', 'v', 'e', 'r', 's', '\022', 'A', '\n', '\027', - 'u', 's', 'e', '_', 't', 'c', 'p', '_', 'f', 'o', 'r', '_', - 'd', 'n', 's', '_', 'l', 'o', 'o', 'k', 'u', 'p', 's', '\030', - '-', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', - '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 'u', 's', 'e', 'T', - 'c', 'p', 'F', 'o', 'r', 'D', 'n', 's', 'L', 'o', 'o', 'k', - 'u', 'p', 's', '\022', 'j', '\n', '\025', 'd', 'n', 's', '_', 'r', - 'e', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '5', ' ', '\001', '(', '\013', '2', ')', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'n', - 's', 'R', 'e', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'C', - 'o', 'n', 'f', 'i', 'g', 'B', '\013', '\030', '\001', '\222', '\307', '\206', - '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 'd', 'n', 's', 'R', - 'e', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'e', '\n', '\031', 't', 'y', 'p', 'e', 'd', - '_', 'd', 'n', 's', '_', 'r', 'e', 's', 'o', 'l', 'v', 'e', - 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '7', ' ', '\001', - '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', - 't', 'y', 'p', 'e', 'd', 'D', 'n', 's', 'R', 'e', 's', 'o', - 'l', 'v', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'L', - '\n', '\025', 'w', 'a', 'i', 't', '_', 'f', 'o', 'r', '_', 'w', - 'a', 'r', 'm', '_', 'o', 'n', '_', 'i', 'n', 'i', 't', '\030', - '6', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', - 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', - 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\021', 'w', - 'a', 'i', 't', 'F', 'o', 'r', 'W', 'a', 'r', 'm', 'O', 'n', - 'I', 'n', 'i', 't', '\022', 'V', '\n', '\021', 'o', 'u', 't', 'l', - 'i', 'e', 'r', '_', 'd', 'e', 't', 'e', 'c', 't', 'i', 'o', - 'n', '\030', '\023', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'O', 'u', - 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', - 'o', 'n', 'R', '\020', 'o', 'u', 't', 'l', 'i', 'e', 'r', 'D', - 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\022', 'N', '\n', '\020', - 'c', 'l', 'e', 'a', 'n', 'u', 'p', '_', 'i', 'n', 't', 'e', - 'r', 'v', 'a', 'l', '\030', '\024', ' ', '\001', '(', '\013', '2', '\031', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', - 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', - '\017', 'c', 'l', 'e', 'a', 'n', 'u', 'p', 'I', 'n', 't', 'e', - 'r', 'v', 'a', 'l', '\022', 'R', '\n', '\024', 'u', 'p', 's', 't', - 'r', 'e', 'a', 'm', '_', 'b', 'i', 'n', 'd', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '\025', ' ', '\001', '(', '\013', '2', ' ', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'B', 'i', - 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\022', 'u', 'p', - 's', 't', 'r', 'e', 'a', 'm', 'B', 'i', 'n', 'd', 'C', 'o', - 'n', 'f', 'i', 'g', '\022', 'Y', '\n', '\020', 'l', 'b', '_', 's', - 'u', 'b', 's', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', - '\030', '\026', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', - 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', - 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', - 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'l', 'b', 'S', - 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - 'b', '\n', '\023', 'r', 'i', 'n', 'g', '_', 'h', 'a', 's', 'h', - '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\027', - ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', - 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', - 'e', 'r', '.', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', - 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', '\020', 'r', - 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', '[', '\n', '\020', 'm', 'a', 'g', 'l', 'e', - 'v', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', - '4', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', - 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', - 't', 'e', 'r', '.', 'M', 'a', 'g', 'l', 'e', 'v', 'L', 'b', - 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', '\016', 'm', 'a', - 'g', 'l', 'e', 'v', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', - '\022', 'k', '\n', '\026', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', - '_', 'd', 's', 't', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', - 'i', 'g', '\030', '\"', ' ', '\001', '(', '\013', '2', '4', '.', 'e', + 'n', 's', '\030', '$', ' ', '\003', '(', '\013', '2', 'C', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', - 'l', 'u', 's', 't', 'e', 'r', '.', 'O', 'r', 'i', 'g', 'i', - 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', - 'i', 'g', 'H', '\001', 'R', '\023', 'o', 'r', 'i', 'g', 'i', 'n', - 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', - 'g', '\022', 'n', '\n', '\027', 'l', 'e', 'a', 's', 't', '_', 'r', - 'e', 'q', 'u', 'e', 's', 't', '_', 'l', 'b', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '%', ' ', '\001', '(', '\013', '2', '5', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', - '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'e', 'a', - 's', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', - 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', '\024', 'l', 'e', 'a', - 's', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', - 'o', 'n', 'f', 'i', 'g', '\022', 'h', '\n', '\025', 'r', 'o', 'u', - 'n', 'd', '_', 'r', 'o', 'b', 'i', 'n', '_', 'l', 'b', '_', - 'c', 'o', 'n', 'f', 'i', 'g', '\030', '8', ' ', '\001', '(', '\013', - '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', - 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', - 'o', 'u', 'n', 'd', 'R', 'o', 'b', 'i', 'n', 'L', 'b', 'C', - 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', '\022', 'r', 'o', 'u', - 'n', 'd', 'R', 'o', 'b', 'i', 'n', 'L', 'b', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'Y', '\n', '\020', 'c', 'o', 'm', 'm', 'o', - 'n', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', - '\033', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', - 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', - 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', - 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'c', 'o', 'm', 'm', - 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'P', - '\n', '\020', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', - 's', 'o', 'c', 'k', 'e', 't', '\030', '\030', ' ', '\001', '(', '\013', - '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', - 'k', 'e', 't', 'R', '\017', 't', 'r', 'a', 'n', 's', 'p', 'o', - 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', '\022', ':', '\n', '\010', - 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\031', ' ', '\001', - '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\010', - 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'u', '\n', '\022', - 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 's', 'e', 'l', - 'e', 'c', 't', 'i', 'o', 'n', '\030', '\032', ' ', '\001', '(', '\016', - '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', - 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', - 'l', 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'B', - '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'R', '\021', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'S', 'e', - 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', 'r', '\n', '\033', 'u', - 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'o', 'p', 't', 'i', 'o', - 'n', 's', '\030', '\036', ' ', '\001', '(', '\013', '2', '2', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'U', - 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', - 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', - 'R', '\031', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', - 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', - 'o', 'n', 's', '\022', 'U', '\n', '(', 'c', 'l', 'o', 's', 'e', - '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', - '_', 'o', 'n', '_', 'h', 'o', 's', 't', '_', 'h', 'e', 'a', - 'l', 't', 'h', '_', 'f', 'a', 'i', 'l', 'u', 'r', 'e', '\030', - '\037', ' ', '\001', '(', '\010', 'R', '#', 'c', 'l', 'o', 's', 'e', - 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', 'O', - 'n', 'H', 'o', 's', 't', 'H', 'e', 'a', 'l', 't', 'h', 'F', - 'a', 'i', 'l', 'u', 'r', 'e', '\022', '@', '\n', '\035', 'i', 'g', - 'n', 'o', 'r', 'e', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', - 'o', 'n', '_', 'h', 'o', 's', 't', '_', 'r', 'e', 'm', 'o', - 'v', 'a', 'l', '\030', ' ', ' ', '\001', '(', '\010', 'R', '\031', 'i', - 'g', 'n', 'o', 'r', 'e', 'H', 'e', 'a', 'l', 't', 'h', 'O', - 'n', 'H', 'o', 's', 't', 'R', 'e', 'm', 'o', 'v', 'a', 'l', - '\022', '9', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', - '(', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', - 's', 't', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', - 'e', 'r', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\022', - '`', '\n', '\025', 'l', 'o', 'a', 'd', '_', 'b', 'a', 'l', 'a', - 'n', 'c', 'i', 'n', 'g', '_', 'p', 'o', 'l', 'i', 'c', 'y', - '\030', ')', ' ', '\001', '(', '\013', '2', ',', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', - 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'a', - 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', - 'l', 'i', 'c', 'y', 'R', '\023', 'l', 'o', 'a', 'd', 'B', 'a', - 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', - 'y', '\022', 'A', '\n', '\n', 'l', 'r', 's', '_', 's', 'e', 'r', - 'v', 'e', 'r', '\030', '*', ' ', '\001', '(', '\013', '2', '\"', '.', + 'l', 'u', 's', 't', 'e', 'r', '.', 'T', 'y', 'p', 'e', 'd', + 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', + 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', + 'E', 'n', 't', 'r', 'y', 'R', '\035', 't', 'y', 'p', 'e', 'd', + 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', + 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', + '\022', '\\', '\n', '\020', 'd', 'n', 's', '_', 'r', 'e', 'f', 'r', + 'e', 's', 'h', '_', 'r', 'a', 't', 'e', '\030', '\020', ' ', '\001', + '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 'B', '\027', '\030', '\001', '\372', 'B', '\t', + '\252', '\001', '\006', '*', '\004', '\020', '\300', '\204', '=', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'R', '\016', 'd', 'n', 's', 'R', + 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', 't', 'e', '\022', 'M', + '\n', '\n', 'd', 'n', 's', '_', 'j', 'i', 't', 't', 'e', 'r', + '\030', ':', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\023', '\030', + '\001', '\372', 'B', '\005', '\252', '\001', '\002', '2', '\000', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'R', '\t', 'd', 'n', 's', 'J', + 'i', 't', 't', 'e', 'r', '\022', 'r', '\n', '\030', 'd', 'n', 's', + '_', 'f', 'a', 'i', 'l', 'u', 'r', 'e', '_', 'r', 'e', 'f', + 'r', 'e', 's', 'h', '_', 'r', 'a', 't', 'e', '\030', ',', ' ', + '\001', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', + 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', + 'r', '.', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', 't', + 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', + '.', '0', 'R', '\025', 'd', 'n', 's', 'F', 'a', 'i', 'l', 'u', + 'r', 'e', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', 't', + 'e', '\022', '3', '\n', '\017', 'r', 'e', 's', 'p', 'e', 'c', 't', + '_', 'd', 'n', 's', '_', 't', 't', 'l', '\030', '\'', ' ', '\001', + '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', + '3', '.', '0', 'R', '\r', 'r', 'e', 's', 'p', 'e', 'c', 't', + 'D', 'n', 's', 'T', 't', 'l', '\022', 'f', '\n', '\021', 'd', 'n', + 's', '_', 'l', 'o', 'o', 'k', 'u', 'p', '_', 'f', 'a', 'm', + 'i', 'l', 'y', '\030', '\021', ' ', '\001', '(', '\016', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', - 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'l', - 'r', 's', 'S', 'e', 'r', 'v', 'e', 'r', '\022', '=', '\n', '\033', - 'l', 'r', 's', '_', 'r', 'e', 'p', 'o', 'r', 't', '_', 'e', - 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'm', 'e', 't', 'r', - 'i', 'c', 's', '\030', '9', ' ', '\003', '(', '\t', 'R', '\030', 'l', - 'r', 's', 'R', 'e', 'p', 'o', 'r', 't', 'E', 'n', 'd', 'p', - 'o', 'i', 'n', 't', 'M', 'e', 't', 'r', 'i', 'c', 's', '\022', - '?', '\n', '\025', 't', 'r', 'a', 'c', 'k', '_', 't', 'i', 'm', - 'e', 'o', 'u', 't', '_', 'b', 'u', 'd', 'g', 'e', 't', 's', - '\030', '/', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', - '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 't', 'r', 'a', - 'c', 'k', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'B', 'u', 'd', - 'g', 'e', 't', 's', '\022', 'S', '\n', '\017', 'u', 'p', 's', 't', - 'r', 'e', 'a', 'm', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', - '0', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', + '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', + 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'D', 'n', 's', 'L', + 'o', 'o', 'k', 'u', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'B', + '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\017', 'd', + 'n', 's', 'L', 'o', 'o', 'k', 'u', 'p', 'F', 'a', 'm', 'i', + 'l', 'y', '\022', 'O', '\n', '\r', 'd', 'n', 's', '_', 'r', 'e', + 's', 'o', 'l', 'v', 'e', 'r', 's', '\030', '\022', ' ', '\003', '(', + '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'B', '\013', '\030', '\001', + '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\014', 'd', + 'n', 's', 'R', 'e', 's', 'o', 'l', 'v', 'e', 'r', 's', '\022', + 'A', '\n', '\027', 'u', 's', 'e', '_', 't', 'c', 'p', '_', 'f', + 'o', 'r', '_', 'd', 'n', 's', '_', 'l', 'o', 'o', 'k', 'u', + 'p', 's', '\030', '-', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', + '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 'u', + 's', 'e', 'T', 'c', 'p', 'F', 'o', 'r', 'D', 'n', 's', 'L', + 'o', 'o', 'k', 'u', 'p', 's', '\022', 'j', '\n', '\025', 'd', 'n', + 's', '_', 'r', 'e', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', + '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '5', ' ', '\001', '(', + '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'D', 'n', 's', 'R', 'e', 's', 'o', 'l', 'u', 't', 'i', + 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\013', '\030', '\001', + '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 'd', + 'n', 's', 'R', 'e', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'e', '\n', '\031', 't', 'y', + 'p', 'e', 'd', '_', 'd', 'n', 's', '_', 'r', 'e', 's', 'o', + 'l', 'v', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '7', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', - 'g', 'R', '\016', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', - 'o', 'n', 'f', 'i', 'g', '\022', 'Z', '\n', '\023', 't', 'r', 'a', - 'c', 'k', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', - 't', 'a', 't', 's', '\030', '1', ' ', '\001', '(', '\013', '2', '*', + 'g', 'R', '\026', 't', 'y', 'p', 'e', 'd', 'D', 'n', 's', 'R', + 'e', 's', 'o', 'l', 'v', 'e', 'r', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', 'L', '\n', '\025', 'w', 'a', 'i', 't', '_', 'f', 'o', + 'r', '_', 'w', 'a', 'r', 'm', '_', 'o', 'n', '_', 'i', 'n', + 'i', 't', '\030', '6', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', + 'R', '\021', 'w', 'a', 'i', 't', 'F', 'o', 'r', 'W', 'a', 'r', + 'm', 'O', 'n', 'I', 'n', 'i', 't', '\022', 'V', '\n', '\021', 'o', + 'u', 't', 'l', 'i', 'e', 'r', '_', 'd', 'e', 't', 'e', 'c', + 't', 'i', 'o', 'n', '\030', '\023', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', - '.', 'T', 'r', 'a', 'c', 'k', 'C', 'l', 'u', 's', 't', 'e', - 'r', 'S', 't', 'a', 't', 's', 'R', '\021', 't', 'r', 'a', 'c', - 'k', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', 'a', 't', - 's', '\022', '^', '\n', '\021', 'p', 'r', 'e', 'c', 'o', 'n', 'n', - 'e', 'c', 't', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '2', - ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', - 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', - 'e', 'r', '.', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', - 't', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\020', 'p', 'r', 'e', - 'c', 'o', 'n', 'n', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', - 'y', '\022', 'X', '\n', ')', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', '_', 'p', 'o', 'o', 'l', '_', 'p', 'e', 'r', - '_', 'd', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', '_', - 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\030', '3', - ' ', '\001', '(', '\010', 'R', '%', 'c', 'o', 'n', 'n', 'e', 'c', - 't', 'i', 'o', 'n', 'P', 'o', 'o', 'l', 'P', 'e', 'r', 'D', - 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '\032', '\346', '\001', '\n', '\024', - 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', - 'k', 'e', 't', 'M', 'a', 't', 'c', 'h', '\022', '\033', '\n', '\004', - 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', - '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', - 'e', '\022', '-', '\n', '\005', 'm', 'a', 't', 'c', 'h', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', - 't', 'r', 'u', 'c', 't', 'R', '\005', 'm', 'a', 't', 'c', 'h', - '\022', 'P', '\n', '\020', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', - 't', '_', 's', 'o', 'c', 'k', 'e', 't', '\030', '\003', ' ', '\001', - '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', - 'o', 'c', 'k', 'e', 't', 'R', '\017', 't', 'r', 'a', 'n', 's', - 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', ':', '0', - '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', - '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', - 't', 'e', 'r', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', - 't', 'S', 'o', 'c', 'k', 'e', 't', 'M', 'a', 't', 'c', 'h', - '\032', '\230', '\001', '\n', '\021', 'C', 'u', 's', 't', 'o', 'm', 'C', - 'l', 'u', 's', 't', 'e', 'r', 'T', 'y', 'p', 'e', '\022', '\033', - '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', - 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', - 'a', 'm', 'e', '\022', '7', '\n', '\014', 't', 'y', 'p', 'e', 'd', - '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', - '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', - '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', - ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', - 'u', 's', 't', 'e', 'r', '.', 'C', 'u', 's', 't', 'o', 'm', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'T', 'y', 'p', 'e', '\032', - '\246', '\001', '\n', '\020', 'E', 'd', 's', 'C', 'l', 'u', 's', 't', - 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'A', '\n', '\n', - 'e', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', - ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', - 'u', 'r', 'c', 'e', 'R', '\t', 'e', 'd', 's', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', '!', '\n', '\014', 's', 'e', 'r', 'v', 'i', - 'c', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', - '\t', 'R', '\013', 's', 'e', 'r', 'v', 'i', 'c', 'e', 'N', 'a', - 'm', 'e', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', - 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'E', 'd', 's', 'C', - 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', - '\032', '\244', '\n', '\n', '\016', 'L', 'b', 'S', 'u', 'b', 's', 'e', - 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'y', '\n', '\017', 'f', - 'a', 'l', 'l', 'b', 'a', 'c', 'k', '_', 'p', 'o', 'l', 'i', - 'c', 'y', '\030', '\001', ' ', '\001', '(', '\016', '2', 'F', '.', 'e', + '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', + 'c', 't', 'i', 'o', 'n', 'R', '\020', 'o', 'u', 't', 'l', 'i', + 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\022', + 'N', '\n', '\020', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '_', 'i', + 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\024', ' ', '\001', '(', + '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', + 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', + '*', '\000', 'R', '\017', 'c', 'l', 'e', 'a', 'n', 'u', 'p', 'I', + 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'R', '\n', '\024', 'u', + 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'b', 'i', 'n', 'd', + '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\025', ' ', '\001', '(', + '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'B', 'i', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'R', + '\022', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', 'i', 'n', + 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'Y', '\n', '\020', 'l', + 'b', '_', 's', 'u', 'b', 's', 'e', 't', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '\030', '\026', ' ', '\001', '(', '\013', '2', '/', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', + 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', + 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', + 'l', 'b', 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', 'b', '\n', '\023', 'r', 'i', 'n', 'g', '_', 'h', + 'a', 's', 'h', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '\030', '\027', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', + 'u', 's', 't', 'e', 'r', '.', 'R', 'i', 'n', 'g', 'H', 'a', + 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\001', + 'R', '\020', 'r', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', '[', '\n', '\020', 'm', 'a', + 'g', 'l', 'e', 'v', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '4', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', - 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', - 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'b', - 'S', 'u', 'b', 's', 'e', 't', 'F', 'a', 'l', 'l', 'b', 'a', - 'c', 'k', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\010', '\372', 'B', - '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\016', 'f', 'a', 'l', 'l', - 'b', 'a', 'c', 'k', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '>', - '\n', '\016', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 's', 'u', - 'b', 's', 'e', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', - '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'S', 'u', 'b', 's', - 'e', 't', '\022', 'k', '\n', '\020', 's', 'u', 'b', 's', 'e', 't', - '_', 's', 'e', 'l', 'e', 'c', 't', 'o', 'r', 's', '\030', '\003', - ' ', '\003', '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', - 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', - 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'C', - 'o', 'n', 'f', 'i', 'g', '.', 'L', 'b', 'S', 'u', 'b', 's', - 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', 'o', 'r', 'R', '\017', - 's', 'u', 'b', 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', - 'o', 'r', 's', '\022', '2', '\n', '\025', 'l', 'o', 'c', 'a', 'l', - 'i', 't', 'y', '_', 'w', 'e', 'i', 'g', 'h', 't', '_', 'a', - 'w', 'a', 'r', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\023', - 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', - 'h', 't', 'A', 'w', 'a', 'r', 'e', '\022', '2', '\n', '\025', 's', - 'c', 'a', 'l', 'e', '_', 'l', 'o', 'c', 'a', 'l', 'i', 't', - 'y', '_', 'w', 'e', 'i', 'g', 'h', 't', '\030', '\005', ' ', '\001', - '(', '\010', 'R', '\023', 's', 'c', 'a', 'l', 'e', 'L', 'o', 'c', - 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', '\022', - '$', '\n', '\016', 'p', 'a', 'n', 'i', 'c', '_', 'm', 'o', 'd', - 'e', '_', 'a', 'n', 'y', '\030', '\006', ' ', '\001', '(', '\010', 'R', - '\014', 'p', 'a', 'n', 'i', 'c', 'M', 'o', 'd', 'e', 'A', 'n', - 'y', '\022', '\036', '\n', '\013', 'l', 'i', 's', 't', '_', 'a', 's', - '_', 'a', 'n', 'y', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\t', - 'l', 'i', 's', 't', 'A', 's', 'A', 'n', 'y', '\022', '\222', '\001', - '\n', '\030', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'f', - 'a', 'l', 'l', 'b', 'a', 'c', 'k', '_', 'p', 'o', 'l', 'i', - 'c', 'y', '\030', '\010', ' ', '\001', '(', '\016', '2', 'N', '.', 'e', + 'l', 'u', 's', 't', 'e', 'r', '.', 'M', 'a', 'g', 'l', 'e', + 'v', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', + '\016', 'm', 'a', 'g', 'l', 'e', 'v', 'L', 'b', 'C', 'o', 'n', + 'f', 'i', 'g', '\022', 'k', '\n', '\026', 'o', 'r', 'i', 'g', 'i', + 'n', 'a', 'l', '_', 'd', 's', 't', '_', 'l', 'b', '_', 'c', + 'o', 'n', 'f', 'i', 'g', '\030', '\"', ' ', '\001', '(', '\013', '2', + '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', + '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'O', 'r', + 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', + 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', '\023', 'o', 'r', 'i', + 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', + 'n', 'f', 'i', 'g', '\022', 'n', '\n', '\027', 'l', 'e', 'a', 's', + 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'l', 'b', + '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '%', ' ', '\001', '(', + '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', + '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', + 'L', 'e', 'a', 's', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', + 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', '\024', + 'l', 'e', 'a', 's', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', + 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'h', '\n', '\025', + 'r', 'o', 'u', 'n', 'd', '_', 'r', 'o', 'b', 'i', 'n', '_', + 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '8', ' ', + '\001', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', + 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', + 'r', '.', 'R', 'o', 'u', 'n', 'd', 'R', 'o', 'b', 'i', 'n', + 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\001', 'R', '\022', + 'r', 'o', 'u', 'n', 'd', 'R', 'o', 'b', 'i', 'n', 'L', 'b', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'Y', '\n', '\020', 'c', 'o', + 'm', 'm', 'o', 'n', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\033', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', - 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', - 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'b', - 'S', 'u', 'b', 's', 'e', 't', 'M', 'e', 't', 'a', 'd', 'a', - 't', 'a', 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', 'o', - 'l', 'i', 'c', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', - '\020', '\001', 'R', '\026', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', - 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', 'o', 'l', 'i', - 'c', 'y', '\032', '\332', '\003', '\n', '\020', 'L', 'b', 'S', 'u', 'b', - 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', 'o', 'r', '\022', - '\022', '\n', '\004', 'k', 'e', 'y', 's', '\030', '\001', ' ', '\003', '(', - '\t', 'R', '\004', 'k', 'e', 'y', 's', '\022', '3', '\n', '\026', 's', - 'i', 'n', 'g', 'l', 'e', '_', 'h', 'o', 's', 't', '_', 'p', - 'e', 'r', '_', 's', 'u', 'b', 's', 'e', 't', '\030', '\004', ' ', - '\001', '(', '\010', 'R', '\023', 's', 'i', 'n', 'g', 'l', 'e', 'H', - 'o', 's', 't', 'P', 'e', 'r', 'S', 'u', 'b', 's', 'e', 't', - '\022', '\222', '\001', '\n', '\017', 'f', 'a', 'l', 'l', 'b', 'a', 'c', - 'k', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\002', ' ', '\001', - '(', '\016', '2', '_', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', - 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', - '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', - 'f', 'i', 'g', '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', - 'S', 'e', 'l', 'e', 'c', 't', 'o', 'r', '.', 'L', 'b', 'S', + 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', + 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'c', + 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', 'P', '\n', '\020', 't', 'r', 'a', 'n', 's', 'p', 'o', + 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '\030', '\030', ' ', + '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', + 'S', 'o', 'c', 'k', 'e', 't', 'R', '\017', 't', 'r', 'a', 'n', + 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', '\022', + ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', + '\031', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', + 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', + 'u', '\n', '\022', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', + 's', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\032', ' ', + '\001', '(', '\016', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', + 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', + 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', + 't', 'o', 'c', 'o', 'l', 'S', 'e', 'l', 'e', 'c', 't', 'i', + 'o', 'n', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', + '3', '.', '0', 'R', '\021', 'p', 'r', 'o', 't', 'o', 'c', 'o', + 'l', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', 'r', + '\n', '\033', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'o', 'p', + 't', 'i', 'o', 'n', 's', '\030', '\036', ' ', '\001', '(', '\013', '2', + '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', + '3', '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', + 'o', 'n', 's', 'R', '\031', 'u', 'p', 's', 't', 'r', 'e', 'a', + 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', + 'p', 't', 'i', 'o', 'n', 's', '\022', 'U', '\n', '(', 'c', 'l', + 'o', 's', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 's', '_', 'o', 'n', '_', 'h', 'o', 's', 't', '_', + 'h', 'e', 'a', 'l', 't', 'h', '_', 'f', 'a', 'i', 'l', 'u', + 'r', 'e', '\030', '\037', ' ', '\001', '(', '\010', 'R', '#', 'c', 'l', + 'o', 's', 'e', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', + 'n', 's', 'O', 'n', 'H', 'o', 's', 't', 'H', 'e', 'a', 'l', + 't', 'h', 'F', 'a', 'i', 'l', 'u', 'r', 'e', '\022', '@', '\n', + '\035', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'h', 'e', 'a', 'l', + 't', 'h', '_', 'o', 'n', '_', 'h', 'o', 's', 't', '_', 'r', + 'e', 'm', 'o', 'v', 'a', 'l', '\030', ' ', ' ', '\001', '(', '\010', + 'R', '\031', 'i', 'g', 'n', 'o', 'r', 'e', 'H', 'e', 'a', 'l', + 't', 'h', 'O', 'n', 'H', 'o', 's', 't', 'R', 'e', 'm', 'o', + 'v', 'a', 'l', '\022', '9', '\n', '\007', 'f', 'i', 'l', 't', 'e', + 'r', 's', '\030', '(', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'F', + 'i', 'l', 't', 'e', 'r', 'R', '\007', 'f', 'i', 'l', 't', 'e', + 'r', 's', '\022', '`', '\n', '\025', 'l', 'o', 'a', 'd', '_', 'b', + 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', '_', 'p', 'o', 'l', + 'i', 'c', 'y', '\030', ')', ' ', '\001', '(', '\013', '2', ',', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', + 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', + 'g', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\023', 'l', 'o', 'a', + 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', + 'l', 'i', 'c', 'y', '\022', 'A', '\n', '\n', 'l', 'r', 's', '_', + 's', 'e', 'r', 'v', 'e', 'r', '\030', '*', ' ', '\001', '(', '\013', + '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', + 'R', '\t', 'l', 'r', 's', 'S', 'e', 'r', 'v', 'e', 'r', '\022', + '=', '\n', '\033', 'l', 'r', 's', '_', 'r', 'e', 'p', 'o', 'r', + 't', '_', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'm', + 'e', 't', 'r', 'i', 'c', 's', '\030', '9', ' ', '\003', '(', '\t', + 'R', '\030', 'l', 'r', 's', 'R', 'e', 'p', 'o', 'r', 't', 'E', + 'n', 'd', 'p', 'o', 'i', 'n', 't', 'M', 'e', 't', 'r', 'i', + 'c', 's', '\022', '?', '\n', '\025', 't', 'r', 'a', 'c', 'k', '_', + 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'b', 'u', 'd', 'g', + 'e', 't', 's', '\030', '/', ' ', '\001', '(', '\010', 'B', '\013', '\030', + '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\023', + 't', 'r', 'a', 'c', 'k', 'T', 'i', 'm', 'e', 'o', 'u', 't', + 'B', 'u', 'd', 'g', 'e', 't', 's', '\022', 'S', '\n', '\017', 'u', + 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '0', ' ', '\001', '(', '\013', '2', '*', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', + 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', 'R', '\016', 'u', 'p', 's', 't', 'r', 'e', + 'a', 'm', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'Z', '\n', '\023', + 't', 'r', 'a', 'c', 'k', '_', 'c', 'l', 'u', 's', 't', 'e', + 'r', '_', 's', 't', 'a', 't', 's', '\030', '1', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', + '.', 'v', '3', '.', 'T', 'r', 'a', 'c', 'k', 'C', 'l', 'u', + 's', 't', 'e', 'r', 'S', 't', 'a', 't', 's', 'R', '\021', 't', + 'r', 'a', 'c', 'k', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', + 't', 'a', 't', 's', '\022', '^', '\n', '\021', 'p', 'r', 'e', 'c', + 'o', 'n', 'n', 'e', 'c', 't', '_', 'p', 'o', 'l', 'i', 'c', + 'y', '\030', '2', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', + 'u', 's', 't', 'e', 'r', '.', 'P', 'r', 'e', 'c', 'o', 'n', + 'n', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\020', + 'p', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'P', 'o', + 'l', 'i', 'c', 'y', '\022', 'X', '\n', ')', 'c', 'o', 'n', 'n', + 'e', 'c', 't', 'i', 'o', 'n', '_', 'p', 'o', 'o', 'l', '_', + 'p', 'e', 'r', '_', 'd', 'o', 'w', 'n', 's', 't', 'r', 'e', + 'a', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', + 'n', '\030', '3', ' ', '\001', '(', '\010', 'R', '%', 'c', 'o', 'n', + 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'o', 'o', 'l', 'P', + 'e', 'r', 'D', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\032', '\346', + '\001', '\n', '\024', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', + 'S', 'o', 'c', 'k', 'e', 't', 'M', 'a', 't', 'c', 'h', '\022', + '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', + 'n', 'a', 'm', 'e', '\022', '-', '\n', '\005', 'm', 'a', 't', 'c', + 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\005', 'm', 'a', + 't', 'c', 'h', '\022', 'P', '\n', '\020', 't', 'r', 'a', 'n', 's', + 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '\030', + '\003', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', + 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'R', '\017', 't', 'r', + 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', + 't', ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', + 'l', 'u', 's', 't', 'e', 'r', '.', 'T', 'r', 'a', 'n', 's', + 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'M', 'a', + 't', 'c', 'h', '\032', '\230', '\001', '\n', '\021', 'C', 'u', 's', 't', + 'o', 'm', 'C', 'l', 'u', 's', 't', 'e', 'r', 'T', 'y', 'p', + 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', + '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', + 'R', '\004', 'n', 'a', 'm', 'e', '\022', '7', '\n', '\014', 't', 'y', + 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', + 'n', 'y', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', + 'f', 'i', 'g', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', + 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', + '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'u', 's', + 't', 'o', 'm', 'C', 'l', 'u', 's', 't', 'e', 'r', 'T', 'y', + 'p', 'e', '\032', '\246', '\001', '\n', '\020', 'E', 'd', 's', 'C', 'l', + 'u', 's', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', + 'A', '\n', '\n', 'e', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', + 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'e', 'd', 's', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', 's', 'e', + 'r', 'v', 'i', 'c', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', + ' ', '\001', '(', '\t', 'R', '\013', 's', 'e', 'r', 'v', 'i', 'c', + 'e', 'N', 'a', 'm', 'e', ':', ',', '\232', '\305', '\210', '\036', '\'', + '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'E', + 'd', 's', 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'n', + 'f', 'i', 'g', '\032', '\244', '\n', '\n', '\016', 'L', 'b', 'S', 'u', + 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'y', + '\n', '\017', 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', '_', 'p', + 'o', 'l', 'i', 'c', 'y', '\030', '\001', ' ', '\001', '(', '\016', '2', + 'F', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', + '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', + 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', + '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'F', 'a', 'l', + 'l', 'b', 'a', 'c', 'k', 'P', 'o', 'l', 'i', 'c', 'y', 'B', + '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\016', 'f', + 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', 'o', 'l', 'i', 'c', + 'y', '\022', '>', '\n', '\016', 'd', 'e', 'f', 'a', 'u', 'l', 't', + '_', 's', 'u', 'b', 's', 'e', 't', '\030', '\002', ' ', '\001', '(', + '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', + 'c', 't', 'R', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'S', + 'u', 'b', 's', 'e', 't', '\022', 'k', '\n', '\020', 's', 'u', 'b', + 's', 'e', 't', '_', 's', 'e', 'l', 'e', 'c', 't', 'o', 'r', + 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '@', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', + 'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', 's', + 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', 'o', - 'r', 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', 'o', 'l', - 'i', 'c', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', - '\001', 'R', '\016', 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', - 'o', 'l', 'i', 'c', 'y', '\022', '0', '\n', '\024', 'f', 'a', 'l', - 'l', 'b', 'a', 'c', 'k', '_', 'k', 'e', 'y', 's', '_', 's', - 'u', 'b', 's', 'e', 't', '\030', '\003', ' ', '\003', '(', '\t', 'R', - '\022', 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'K', 'e', 'y', - 's', 'S', 'u', 'b', 's', 'e', 't', '\"', 'y', '\n', '\036', 'L', - 'b', 'S', 'u', 'b', 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', - 't', 'o', 'r', 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', - 'o', 'l', 'i', 'c', 'y', '\022', '\017', '\n', '\013', 'N', 'O', 'T', - '_', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\017', - '\n', '\013', 'N', 'O', '_', 'F', 'A', 'L', 'L', 'B', 'A', 'C', - 'K', '\020', '\001', '\022', '\020', '\n', '\014', 'A', 'N', 'Y', '_', 'E', - 'N', 'D', 'P', 'O', 'I', 'N', 'T', '\020', '\002', '\022', '\022', '\n', - '\016', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '_', 'S', 'U', 'B', - 'S', 'E', 'T', '\020', '\003', '\022', '\017', '\n', '\013', 'K', 'E', 'Y', - 'S', '_', 'S', 'U', 'B', 'S', 'E', 'T', '\020', '\004', ':', ';', - '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', - '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', + 'r', 'R', '\017', 's', 'u', 'b', 's', 'e', 't', 'S', 'e', 'l', + 'e', 'c', 't', 'o', 'r', 's', '\022', '2', '\n', '\025', 'l', 'o', + 'c', 'a', 'l', 'i', 't', 'y', '_', 'w', 'e', 'i', 'g', 'h', + 't', '_', 'a', 'w', 'a', 'r', 'e', '\030', '\004', ' ', '\001', '(', + '\010', 'R', '\023', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', + 'e', 'i', 'g', 'h', 't', 'A', 'w', 'a', 'r', 'e', '\022', '2', + '\n', '\025', 's', 'c', 'a', 'l', 'e', '_', 'l', 'o', 'c', 'a', + 'l', 'i', 't', 'y', '_', 'w', 'e', 'i', 'g', 'h', 't', '\030', + '\005', ' ', '\001', '(', '\010', 'R', '\023', 's', 'c', 'a', 'l', 'e', + 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', + 'h', 't', '\022', '$', '\n', '\016', 'p', 'a', 'n', 'i', 'c', '_', + 'm', 'o', 'd', 'e', '_', 'a', 'n', 'y', '\030', '\006', ' ', '\001', + '(', '\010', 'R', '\014', 'p', 'a', 'n', 'i', 'c', 'M', 'o', 'd', + 'e', 'A', 'n', 'y', '\022', '\036', '\n', '\013', 'l', 'i', 's', 't', + '_', 'a', 's', '_', 'a', 'n', 'y', '\030', '\007', ' ', '\001', '(', + '\010', 'R', '\t', 'l', 'i', 's', 't', 'A', 's', 'A', 'n', 'y', + '\022', '\222', '\001', '\n', '\030', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', '_', 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', '_', 'p', + 'o', 'l', 'i', 'c', 'y', '\030', '\010', ' ', '\001', '(', '\016', '2', + 'N', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', + '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', + 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', + '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'M', 'e', 't', + 'a', 'd', 'a', 't', 'a', 'F', 'a', 'l', 'l', 'b', 'a', 'c', + 'k', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\010', '\372', 'B', '\005', + '\202', '\001', '\002', '\020', '\001', 'R', '\026', 'm', 'e', 't', 'a', 'd', + 'a', 't', 'a', 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', + 'o', 'l', 'i', 'c', 'y', '\032', '\332', '\003', '\n', '\020', 'L', 'b', + 'S', 'u', 'b', 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', + 'o', 'r', '\022', '\022', '\n', '\004', 'k', 'e', 'y', 's', '\030', '\001', + ' ', '\003', '(', '\t', 'R', '\004', 'k', 'e', 'y', 's', '\022', '3', + '\n', '\026', 's', 'i', 'n', 'g', 'l', 'e', '_', 'h', 'o', 's', + 't', '_', 'p', 'e', 'r', '_', 's', 'u', 'b', 's', 'e', 't', + '\030', '\004', ' ', '\001', '(', '\010', 'R', '\023', 's', 'i', 'n', 'g', + 'l', 'e', 'H', 'o', 's', 't', 'P', 'e', 'r', 'S', 'u', 'b', + 's', 'e', 't', '\022', '\222', '\001', '\n', '\017', 'f', 'a', 'l', 'l', + 'b', 'a', 'c', 'k', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', + '\002', ' ', '\001', '(', '\016', '2', '_', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', + 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'b', 'S', 'u', 'b', - 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', 'o', 'r', '\"', - 'O', '\n', '\026', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'F', - 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', 'o', 'l', 'i', 'c', - 'y', '\022', '\017', '\n', '\013', 'N', 'O', '_', 'F', 'A', 'L', 'L', - 'B', 'A', 'C', 'K', '\020', '\000', '\022', '\020', '\n', '\014', 'A', 'N', - 'Y', '_', 'E', 'N', 'D', 'P', 'O', 'I', 'N', 'T', '\020', '\001', + 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', 'o', 'r', '.', + 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'S', 'e', 'l', 'e', + 'c', 't', 'o', 'r', 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', + 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\010', '\372', 'B', '\005', '\202', + '\001', '\002', '\020', '\001', 'R', '\016', 'f', 'a', 'l', 'l', 'b', 'a', + 'c', 'k', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '0', '\n', '\024', + 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', '_', 'k', 'e', 'y', + 's', '_', 's', 'u', 'b', 's', 'e', 't', '\030', '\003', ' ', '\003', + '(', '\t', 'R', '\022', 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', + 'K', 'e', 'y', 's', 'S', 'u', 'b', 's', 'e', 't', '\"', 'y', + '\n', '\036', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'S', 'e', + 'l', 'e', 'c', 't', 'o', 'r', 'F', 'a', 'l', 'l', 'b', 'a', + 'c', 'k', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\017', '\n', '\013', + 'N', 'O', 'T', '_', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', + '\000', '\022', '\017', '\n', '\013', 'N', 'O', '_', 'F', 'A', 'L', 'L', + 'B', 'A', 'C', 'K', '\020', '\001', '\022', '\020', '\n', '\014', 'A', 'N', + 'Y', '_', 'E', 'N', 'D', 'P', 'O', 'I', 'N', 'T', '\020', '\002', '\022', '\022', '\n', '\016', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '_', - 'S', 'U', 'B', 'S', 'E', 'T', '\020', '\002', '\"', 'M', '\n', '\036', - 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'M', 'e', 't', 'a', - 'd', 'a', 't', 'a', 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', - 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\030', '\n', '\024', 'M', 'E', - 'T', 'A', 'D', 'A', 'T', 'A', '_', 'N', 'O', '_', 'F', 'A', - 'L', 'L', 'B', 'A', 'C', 'K', '\020', '\000', '\022', '\021', '\n', '\r', - 'F', 'A', 'L', 'L', 'B', 'A', 'C', 'K', '_', 'L', 'I', 'S', - 'T', '\020', '\001', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', - 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032', - '\343', '\001', '\n', '\017', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', - 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'E', '\n', '\021', 's', - 'l', 'o', 'w', '_', 's', 't', 'a', 'r', 't', '_', 'w', 'i', - 'n', 'd', 'o', 'w', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', - 'n', 'R', '\017', 's', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', - 'W', 'i', 'n', 'd', 'o', 'w', '\022', 'C', '\n', '\n', 'a', 'g', - 'g', 'r', 'e', 's', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\001', - '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'D', 'o', 'u', - 'b', 'l', 'e', 'R', '\n', 'a', 'g', 'g', 'r', 'e', 's', 's', - 'i', 'o', 'n', '\022', 'D', '\n', '\022', 'm', 'i', 'n', '_', 'w', - 'e', 'i', 'g', 'h', 't', '_', 'p', 'e', 'r', 'c', 'e', 'n', - 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', - 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', - 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\020', 'm', 'i', 'n', - 'W', 'e', 'i', 'g', 'h', 't', 'P', 'e', 'r', 'c', 'e', 'n', - 't', '\032', 'r', '\n', '\022', 'R', 'o', 'u', 'n', 'd', 'R', 'o', - 'b', 'i', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - '\\', '\n', '\021', 's', 'l', 'o', 'w', '_', 's', 't', 'a', 'r', - 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', - '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', - 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', - '.', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', - 'n', 'f', 'i', 'g', 'R', '\017', 's', 'l', 'o', 'w', 'S', 't', - 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\305', '\002', - '\n', '\024', 'L', 'e', 'a', 's', 't', 'R', 'e', 'q', 'u', 'e', - 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'H', - '\n', '\014', 'c', 'h', 'o', 'i', 'c', 'e', '_', 'c', 'o', 'u', - 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', - 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\002', 'R', - '\013', 'c', 'h', 'o', 'i', 'c', 'e', 'C', 'o', 'u', 'n', 't', - '\022', 'S', '\n', '\023', 'a', 'c', 't', 'i', 'v', 'e', '_', 'r', - 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'i', 'a', 's', '\030', + 'S', 'U', 'B', 'S', 'E', 'T', '\020', '\003', '\022', '\017', '\n', '\013', + 'K', 'E', 'Y', 'S', '_', 'S', 'U', 'B', 'S', 'E', 'T', '\020', + '\004', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', + 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', + 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'b', + 'S', 'u', 'b', 's', 'e', 't', 'S', 'e', 'l', 'e', 'c', 't', + 'o', 'r', '\"', 'O', '\n', '\026', 'L', 'b', 'S', 'u', 'b', 's', + 'e', 't', 'F', 'a', 'l', 'l', 'b', 'a', 'c', 'k', 'P', 'o', + 'l', 'i', 'c', 'y', '\022', '\017', '\n', '\013', 'N', 'O', '_', 'F', + 'A', 'L', 'L', 'B', 'A', 'C', 'K', '\020', '\000', '\022', '\020', '\n', + '\014', 'A', 'N', 'Y', '_', 'E', 'N', 'D', 'P', 'O', 'I', 'N', + 'T', '\020', '\001', '\022', '\022', '\n', '\016', 'D', 'E', 'F', 'A', 'U', + 'L', 'T', '_', 'S', 'U', 'B', 'S', 'E', 'T', '\020', '\002', '\"', + 'M', '\n', '\036', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'M', + 'e', 't', 'a', 'd', 'a', 't', 'a', 'F', 'a', 'l', 'l', 'b', + 'a', 'c', 'k', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\030', '\n', + '\024', 'M', 'E', 'T', 'A', 'D', 'A', 'T', 'A', '_', 'N', 'O', + '_', 'F', 'A', 'L', 'L', 'B', 'A', 'C', 'K', '\020', '\000', '\022', + '\021', '\n', '\r', 'F', 'A', 'L', 'L', 'B', 'A', 'C', 'K', '_', + 'L', 'I', 'S', 'T', '\020', '\001', ':', '*', '\232', '\305', '\210', '\036', + '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', + 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', + 'i', 'g', '\032', '\343', '\001', '\n', '\017', 'S', 'l', 'o', 'w', 'S', + 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'E', + '\n', '\021', 's', 'l', 'o', 'w', '_', 's', 't', 'a', 'r', 't', + '_', 'w', 'i', 'n', 'd', 'o', 'w', '\030', '\001', ' ', '\001', '(', + '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', + 't', 'i', 'o', 'n', 'R', '\017', 's', 'l', 'o', 'w', 'S', 't', + 'a', 'r', 't', 'W', 'i', 'n', 'd', 'o', 'w', '\022', 'C', '\n', + '\n', 'a', 'g', 'g', 'r', 'e', 's', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', - 'D', 'o', 'u', 'b', 'l', 'e', 'R', '\021', 'a', 'c', 't', 'i', - 'v', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'B', 'i', 'a', - 's', '\022', '\\', '\n', '\021', 's', 'l', 'o', 'w', '_', 's', 't', - 'a', 'r', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', - ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', - 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', - 'e', 'r', '.', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', - 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\017', 's', 'l', 'o', 'w', - 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', ':', - '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', - 's', 't', 'e', 'r', '.', 'L', 'e', 'a', 's', 't', 'R', 'e', - 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', - 'g', '\032', '\221', '\003', '\n', '\020', 'R', 'i', 'n', 'g', 'H', 'a', - 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'T', - '\n', '\021', 'm', 'i', 'n', 'i', 'm', 'u', 'm', '_', 'r', 'i', - 'n', 'g', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', - '2', '\005', '\030', '\200', '\200', '\200', '\004', 'R', '\017', 'm', 'i', 'n', - 'i', 'm', 'u', 'm', 'R', 'i', 'n', 'g', 'S', 'i', 'z', 'e', - '\022', 'm', '\n', '\r', 'h', 'a', 's', 'h', '_', 'f', 'u', 'n', - 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\016', '2', - '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', - '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', 'i', - 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', - 'i', 'g', '.', 'H', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', - 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', - '\001', 'R', '\014', 'h', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', - 'i', 'o', 'n', '\022', 'T', '\n', '\021', 'm', 'a', 'x', 'i', 'm', - 'u', 'm', '_', 'r', 'i', 'n', 'g', '_', 's', 'i', 'z', 'e', - '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', - 'B', '\n', '\372', 'B', '\007', '2', '\005', '\030', '\200', '\200', '\200', '\004', - 'R', '\017', 'm', 'a', 'x', 'i', 'm', 'u', 'm', 'R', 'i', 'n', - 'g', 'S', 'i', 'z', 'e', '\"', '.', '\n', '\014', 'H', 'a', 's', - 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '\013', '\n', - '\007', 'X', 'X', '_', 'H', 'A', 'S', 'H', '\020', '\000', '\022', '\021', - '\n', '\r', 'M', 'U', 'R', 'M', 'U', 'R', '_', 'H', 'A', 'S', - 'H', '_', '2', '\020', '\001', ':', ',', '\232', '\305', '\210', '\036', '\'', - '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', - 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', - 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', - 'f', 'i', 'g', 'J', '\004', '\010', '\002', '\020', '\003', '\032', 'Y', '\n', - '\016', 'M', 'a', 'g', 'l', 'e', 'v', 'L', 'b', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'G', '\n', '\n', 't', 'a', 'b', 'l', 'e', - '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', - 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', '2', '\005', - '\030', '\313', '\226', '\261', '\002', 'R', '\t', 't', 'a', 'b', 'l', 'e', - 'S', 'i', 'z', 'e', '\032', '\277', '\002', '\n', '\023', 'O', 'r', 'i', - 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', - 'n', 'f', 'i', 'g', '\022', '&', '\n', '\017', 'u', 's', 'e', '_', - 'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', - '\001', ' ', '\001', '(', '\010', 'R', '\r', 'u', 's', 'e', 'H', 't', - 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '(', '\n', '\020', - 'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', - 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\016', - 'h', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 'N', 'a', - 'm', 'e', '\022', ']', '\n', '\026', 'u', 'p', 's', 't', 'r', 'e', - 'a', 'm', '_', 'p', 'o', 'r', 't', '_', 'o', 'v', 'e', 'r', - 'r', 'i', 'd', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'B', '\t', '\372', 'B', '\006', '*', '\004', '\030', - '\377', '\377', '\003', 'R', '\024', 'u', 'p', 's', 't', 'r', 'e', 'a', - 'm', 'P', 'o', 'r', 't', 'O', 'v', 'e', 'r', 'r', 'i', 'd', - 'e', '\022', 'F', '\n', '\014', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '_', 'k', 'e', 'y', '\030', '\004', ' ', '\001', '(', '\013', '2', - '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', - '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', - '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', - 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', - 'y', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', - 'l', 'u', 's', 't', 'e', 'r', '.', 'O', 'r', 'i', 'g', 'i', - 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', - 'i', 'g', '\032', '\325', '\013', '\n', '\016', 'C', 'o', 'm', 'm', 'o', - 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'N', '\n', - '\027', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'p', 'a', 'n', - 'i', 'c', '_', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', - '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', - 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', - 'e', 'r', 'c', 'e', 'n', 't', 'R', '\025', 'h', 'e', 'a', 'l', - 't', 'h', 'y', 'P', 'a', 'n', 'i', 'c', 'T', 'h', 'r', 'e', - 's', 'h', 'o', 'l', 'd', '\022', 't', '\n', '\024', 'z', 'o', 'n', - 'e', '_', 'a', 'w', 'a', 'r', 'e', '_', 'l', 'b', '_', 'c', - 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', - 'A', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', - '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', - 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', - '.', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', - 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\021', 'z', 'o', - 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', '\211', '\001', '\n', '\033', 'l', 'o', 'c', 'a', - 'l', 'i', 't', 'y', '_', 'w', 'e', 'i', 'g', 'h', 't', 'e', - 'd', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', - '\003', ' ', '\001', '(', '\013', '2', 'H', '.', 'e', 'n', 'v', 'o', + 'D', 'o', 'u', 'b', 'l', 'e', 'R', '\n', 'a', 'g', 'g', 'r', + 'e', 's', 's', 'i', 'o', 'n', '\022', 'D', '\n', '\022', 'm', 'i', + 'n', '_', 'w', 'e', 'i', 'g', 'h', 't', '_', 'p', 'e', 'r', + 'c', 'e', 'n', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\026', + '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', + 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\020', + 'm', 'i', 'n', 'W', 'e', 'i', 'g', 'h', 't', 'P', 'e', 'r', + 'c', 'e', 'n', 't', '\032', 'r', '\n', '\022', 'R', 'o', 'u', 'n', + 'd', 'R', 'o', 'b', 'i', 'n', 'L', 'b', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', '\\', '\n', '\021', 's', 'l', 'o', 'w', '_', 's', + 't', 'a', 'r', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '\001', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', - 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', - 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'o', 'c', 'a', 'l', - 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', - 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\030', 'l', - 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', - 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - 'I', '\n', '\023', 'u', 'p', 'd', 'a', 't', 'e', '_', 'm', 'e', - 'r', 'g', 'e', '_', 'w', 'i', 'n', 'd', 'o', 'w', '\030', '\004', - ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', - 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'u', 'p', 'd', - 'a', 't', 'e', 'M', 'e', 'r', 'g', 'e', 'W', 'i', 'n', 'd', - 'o', 'w', '\022', 'C', '\n', '\037', 'i', 'g', 'n', 'o', 'r', 'e', - '_', 'n', 'e', 'w', '_', 'h', 'o', 's', 't', 's', '_', 'u', - 'n', 't', 'i', 'l', '_', 'f', 'i', 'r', 's', 't', '_', 'h', - 'c', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\032', 'i', 'g', 'n', - 'o', 'r', 'e', 'N', 'e', 'w', 'H', 'o', 's', 't', 's', 'U', - 'n', 't', 'i', 'l', 'F', 'i', 'r', 's', 't', 'H', 'c', '\022', - 'M', '\n', '$', 'c', 'l', 'o', 's', 'e', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '_', 'o', 'n', '_', - 'h', 'o', 's', 't', '_', 's', 'e', 't', '_', 'c', 'h', 'a', - 'n', 'g', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\037', 'c', - 'l', 'o', 's', 'e', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', - 'o', 'n', 's', 'O', 'n', 'H', 'o', 's', 't', 'S', 'e', 't', - 'C', 'h', 'a', 'n', 'g', 'e', '\022', '\212', '\001', '\n', '\034', 'c', - 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', '_', 'h', 'a', - 's', 'h', 'i', 'n', 'g', '_', 'l', 'b', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', 'I', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', - 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', - 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', - 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', - 'R', '\031', 'c', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', - 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'W', '\n', '\024', 'o', 'v', 'e', 'r', 'r', - 'i', 'd', 'e', '_', 'h', 'o', 's', 't', '_', 's', 't', 'a', - 't', 'u', 's', '\030', '\010', ' ', '\001', '(', '\013', '2', '%', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', - 'l', 't', 'h', 'S', 't', 'a', 't', 'u', 's', 'S', 'e', 't', - 'R', '\022', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'H', 'o', - 's', 't', 'S', 't', 'a', 't', 'u', 's', '\032', '\215', '\002', '\n', - '\021', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', '?', '\n', '\017', 'r', 'o', - 'u', 't', 'i', 'n', 'g', '_', 'e', 'n', 'a', 'b', 'l', 'e', - 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', - 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', - 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'r', 'o', 'u', - 't', 'i', 'n', 'g', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\022', - 'F', '\n', '\020', 'm', 'i', 'n', '_', 'c', 'l', 'u', 's', 't', - 'e', 'r', '_', 's', 'i', 'z', 'e', '\030', '\002', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '6', '4', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'm', 'i', 'n', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'i', 'z', 'e', '\022', - '1', '\n', '\025', 'f', 'a', 'i', 'l', '_', 't', 'r', 'a', 'f', - 'f', 'i', 'c', '_', 'o', 'n', '_', 'p', 'a', 'n', 'i', 'c', - '\030', '\003', ' ', '\001', '(', '\010', 'R', '\022', 'f', 'a', 'i', 'l', - 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'O', 'n', 'P', 'a', 'n', - 'i', 'c', ':', '<', '\232', '\305', '\210', '\036', '7', '\n', '5', 'e', + 't', 'e', 'r', '.', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', + 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\017', 's', 'l', 'o', + 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', + '\032', '\305', '\002', '\n', '\024', 'L', 'e', 'a', 's', 't', 'R', 'e', + 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', 'H', '\n', '\014', 'c', 'h', 'o', 'i', 'c', 'e', '_', + 'c', 'o', 'u', 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', + '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', + 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', + '(', '\002', 'R', '\013', 'c', 'h', 'o', 'i', 'c', 'e', 'C', 'o', + 'u', 'n', 't', '\022', 'S', '\n', '\023', 'a', 'c', 't', 'i', 'v', + 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'i', + 'a', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', + 'i', 'm', 'e', 'D', 'o', 'u', 'b', 'l', 'e', 'R', '\021', 'a', + 'c', 't', 'i', 'v', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', + 'B', 'i', 'a', 's', '\022', '\\', '\n', '\021', 's', 'l', 'o', 'w', + '_', 's', 't', 'a', 'r', 't', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', + 'u', 's', 't', 'e', 'r', '.', 'S', 'l', 'o', 'w', 'S', 't', + 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\017', 's', + 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', + 'i', 'g', ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', - 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'Z', - 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', - 'n', 'f', 'i', 'g', '\032', '_', '\n', '\030', 'L', 'o', 'c', 'a', - 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', - 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', ':', 'C', '\232', '\305', - '\210', '\036', '>', '\n', '<', 'e', 'n', 'v', 'o', 'y', '.', 'a', + 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L', 'e', 'a', 's', + 't', 'R', 'e', 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', 'o', + 'n', 'f', 'i', 'g', '\032', '\221', '\003', '\n', '\020', 'R', 'i', 'n', + 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', 'T', '\n', '\021', 'm', 'i', 'n', 'i', 'm', 'u', 'm', + '_', 'r', 'i', 'n', 'g', '_', 's', 'i', 'z', 'e', '\030', '\001', + ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', + 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\n', + '\372', 'B', '\007', '2', '\005', '\030', '\200', '\200', '\200', '\004', 'R', '\017', + 'm', 'i', 'n', 'i', 'm', 'u', 'm', 'R', 'i', 'n', 'g', 'S', + 'i', 'z', 'e', '\022', 'm', '\n', '\r', 'h', 'a', 's', 'h', '_', + 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', + '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', + 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', + '.', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', + 'o', 'n', 'f', 'i', 'g', '.', 'H', 'a', 's', 'h', 'F', 'u', + 'n', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', + '\001', '\002', '\020', '\001', 'R', '\014', 'h', 'a', 's', 'h', 'F', 'u', + 'n', 'c', 't', 'i', 'o', 'n', '\022', 'T', '\n', '\021', 'm', 'a', + 'x', 'i', 'm', 'u', 'm', '_', 'r', 'i', 'n', 'g', '_', 's', + 'i', 'z', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', + 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', '2', '\005', '\030', '\200', + '\200', '\200', '\004', 'R', '\017', 'm', 'a', 'x', 'i', 'm', 'u', 'm', + 'R', 'i', 'n', 'g', 'S', 'i', 'z', 'e', '\"', '.', '\n', '\014', + 'H', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', + '\022', '\013', '\n', '\007', 'X', 'X', '_', 'H', 'A', 'S', 'H', '\020', + '\000', '\022', '\021', '\n', '\r', 'M', 'U', 'R', 'M', 'U', 'R', '_', + 'H', 'A', 'S', 'H', '_', '2', '\020', '\001', ':', ',', '\232', '\305', + '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', - 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', - 'n', 'f', 'i', 'g', '.', 'L', 'o', 'c', 'a', 'l', 'i', 't', - 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', - 'o', 'n', 'f', 'i', 'g', '\032', '\361', '\001', '\n', '\031', 'C', 'o', - 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', 'h', - 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - '7', '\n', '\030', 'u', 's', 'e', '_', 'h', 'o', 's', 't', 'n', - 'a', 'm', 'e', '_', 'f', 'o', 'r', '_', 'h', 'a', 's', 'h', - 'i', 'n', 'g', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\025', 'u', - 's', 'e', 'H', 'o', 's', 't', 'n', 'a', 'm', 'e', 'F', 'o', - 'r', 'H', 'a', 's', 'h', 'i', 'n', 'g', '\022', 'U', '\n', '\023', - 'h', 'a', 's', 'h', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', - '_', 'f', 'a', 'c', 't', 'o', 'r', '\030', '\002', ' ', '\001', '(', + 'r', '.', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', + 'C', 'o', 'n', 'f', 'i', 'g', 'J', '\004', '\010', '\002', '\020', '\003', + '\032', 'Y', '\n', '\016', 'M', 'a', 'g', 'l', 'e', 'v', 'L', 'b', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'G', '\n', '\n', 't', 'a', + 'b', 'l', 'e', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', + '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', + 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', + '\007', '2', '\005', '\030', '\313', '\226', '\261', '\002', 'R', '\t', 't', 'a', + 'b', 'l', 'e', 'S', 'i', 'z', 'e', '\032', '\277', '\002', '\n', '\023', + 'O', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', + 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '&', '\n', '\017', 'u', + 's', 'e', '_', 'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'd', + 'e', 'r', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\r', 'u', 's', + 'e', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', '\022', + '(', '\n', '\020', 'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'd', + 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', + '\t', 'R', '\016', 'h', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', + 'r', 'N', 'a', 'm', 'e', '\022', ']', '\n', '\026', 'u', 'p', 's', + 't', 'r', 'e', 'a', 'm', '_', 'p', 'o', 'r', 't', '_', 'o', + 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', - '*', '\002', '(', 'd', 'R', '\021', 'h', 'a', 's', 'h', 'B', 'a', - 'l', 'a', 'n', 'c', 'e', 'F', 'a', 'c', 't', 'o', 'r', ':', - 'D', '\232', '\305', '\210', '\036', '?', '\n', '=', 'e', 'n', 'v', 'o', + '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\t', '\372', 'B', '\006', + '*', '\004', '\030', '\377', '\377', '\003', 'R', '\024', 'u', 'p', 's', 't', + 'r', 'e', 'a', 'm', 'P', 'o', 'r', 't', 'O', 'v', 'e', 'r', + 'r', 'i', 'd', 'e', '\022', 'F', '\n', '\014', 'm', 'e', 't', 'a', + 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\004', ' ', '\001', + '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', + 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', + '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + 'K', 'e', 'y', 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', 'K', 'e', 'y', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', + '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', + '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'O', 'r', + 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', + 'o', 'n', 'f', 'i', 'g', '\032', '\325', '\013', '\n', '\016', 'C', 'o', + 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', + '\022', 'N', '\n', '\027', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', + 'p', 'a', 'n', 'i', 'c', '_', 't', 'h', 'r', 'e', 's', 'h', + 'o', 'l', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', + 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', + '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\025', 'h', + 'e', 'a', 'l', 't', 'h', 'y', 'P', 'a', 'n', 'i', 'c', 'T', + 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\022', 't', '\n', '\024', + 'z', 'o', 'n', 'e', '_', 'a', 'w', 'a', 'r', 'e', '_', 'l', + 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', + '(', '\013', '2', 'A', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', + 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', + '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', + 'f', 'i', 'g', '.', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', + 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', + '\021', 'z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\211', '\001', '\n', '\033', 'l', + 'o', 'c', 'a', 'l', 'i', 't', 'y', '_', 'w', 'e', 'i', 'g', + 'h', 't', 'e', 'd', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', 'H', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', + 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', + 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'o', + 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', + 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', + 'R', '\030', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', + 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', 'I', '\n', '\023', 'u', 'p', 'd', 'a', 't', 'e', + '_', 'm', 'e', 'r', 'g', 'e', '_', 'w', 'i', 'n', 'd', 'o', + 'w', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', + 'u', 'p', 'd', 'a', 't', 'e', 'M', 'e', 'r', 'g', 'e', 'W', + 'i', 'n', 'd', 'o', 'w', '\022', 'C', '\n', '\037', 'i', 'g', 'n', + 'o', 'r', 'e', '_', 'n', 'e', 'w', '_', 'h', 'o', 's', 't', + 's', '_', 'u', 'n', 't', 'i', 'l', '_', 'f', 'i', 'r', 's', + 't', '_', 'h', 'c', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\032', + 'i', 'g', 'n', 'o', 'r', 'e', 'N', 'e', 'w', 'H', 'o', 's', + 't', 's', 'U', 'n', 't', 'i', 'l', 'F', 'i', 'r', 's', 't', + 'H', 'c', '\022', 'M', '\n', '$', 'c', 'l', 'o', 's', 'e', '_', + 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '_', + 'o', 'n', '_', 'h', 'o', 's', 't', '_', 's', 'e', 't', '_', + 'c', 'h', 'a', 'n', 'g', 'e', '\030', '\006', ' ', '\001', '(', '\010', + 'R', '\037', 'c', 'l', 'o', 's', 'e', 'C', 'o', 'n', 'n', 'e', + 'c', 't', 'i', 'o', 'n', 's', 'O', 'n', 'H', 'o', 's', 't', + 'S', 'e', 't', 'C', 'h', 'a', 'n', 'g', 'e', '\022', '\212', '\001', + '\n', '\034', 'c', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', + '_', 'h', 'a', 's', 'h', 'i', 'n', 'g', '_', 'l', 'b', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\007', ' ', '\001', '(', '\013', + '2', 'I', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', + 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', + 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', + 'g', '.', 'C', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', + 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', + 'f', 'i', 'g', 'R', '\031', 'c', 'o', 'n', 's', 'i', 's', 't', + 'e', 'n', 't', 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'W', '\n', '\024', 'o', 'v', + 'e', 'r', 'r', 'i', 'd', 'e', '_', 'h', 'o', 's', 't', '_', + 's', 't', 'a', 't', 'u', 's', '\030', '\010', ' ', '\001', '(', '\013', + '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'H', 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', 'u', 's', + 'S', 'e', 't', 'R', '\022', 'o', 'v', 'e', 'r', 'r', 'i', 'd', + 'e', 'H', 'o', 's', 't', 'S', 't', 'a', 't', 'u', 's', '\032', + '\215', '\002', '\n', '\021', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', + 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '?', '\n', + '\017', 'r', 'o', 'u', 't', 'i', 'n', 'g', '_', 'e', 'n', 'a', + 'b', 'l', 'e', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', + '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', + 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', + 'r', 'o', 'u', 't', 'i', 'n', 'g', 'E', 'n', 'a', 'b', 'l', + 'e', 'd', '\022', 'F', '\n', '\020', 'm', 'i', 'n', '_', 'c', 'l', + 'u', 's', 't', 'e', 'r', '_', 's', 'i', 'z', 'e', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', + 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'R', '\016', + 'm', 'i', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'i', + 'z', 'e', '\022', '1', '\n', '\025', 'f', 'a', 'i', 'l', '_', 't', + 'r', 'a', 'f', 'f', 'i', 'c', '_', 'o', 'n', '_', 'p', 'a', + 'n', 'i', 'c', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\022', 'f', + 'a', 'i', 'l', 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'O', 'n', + 'P', 'a', 'n', 'i', 'c', ':', '<', '\232', '\305', '\210', '\036', '7', + '\n', '5', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', + 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', + 'g', '.', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', + 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '_', '\n', '\030', 'L', + 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', + 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', ':', + 'C', '\232', '\305', '\210', '\036', '>', '\n', '<', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', - 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', 'o', 'n', 's', - 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', 'h', 'i', 'n', - 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', ':', '*', '\232', - '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', - 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', - 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', - 'o', 'n', 'f', 'i', 'g', 'B', '\033', '\n', '\031', 'l', 'o', 'c', - 'a', 'l', 'i', 't', 'y', '_', 'c', 'o', 'n', 'f', 'i', 'g', - '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\032', '\322', - '\001', '\n', '\013', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', - 't', 'e', '\022', 'N', '\n', '\r', 'b', 'a', 's', 'e', '_', 'i', - 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', - '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', - 't', 'i', 'o', 'n', 'B', '\016', '\372', 'B', '\013', '\252', '\001', '\010', - '\010', '\001', '*', '\004', '\020', '\300', '\204', '=', 'R', '\014', 'b', 'a', - 's', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'J', - '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'v', - 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', - '\014', '\372', 'B', '\t', '\252', '\001', '\006', '*', '\004', '\020', '\300', '\204', - '=', 'R', '\013', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'v', - 'a', 'l', ':', '\'', '\232', '\305', '\210', '\036', '\"', '\n', ' ', 'e', + 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'o', 'c', 'a', + 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', + 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\361', '\001', '\n', + '\031', 'C', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', + 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', '7', '\n', '\030', 'u', 's', 'e', '_', 'h', 'o', + 's', 't', 'n', 'a', 'm', 'e', '_', 'f', 'o', 'r', '_', 'h', + 'a', 's', 'h', 'i', 'n', 'g', '\030', '\001', ' ', '\001', '(', '\010', + 'R', '\025', 'u', 's', 'e', 'H', 'o', 's', 't', 'n', 'a', 'm', + 'e', 'F', 'o', 'r', 'H', 'a', 's', 'h', 'i', 'n', 'g', '\022', + 'U', '\n', '\023', 'h', 'a', 's', 'h', '_', 'b', 'a', 'l', 'a', + 'n', 'c', 'e', '_', 'f', 'a', 'c', 't', 'o', 'r', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', + 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', + '\372', 'B', '\004', '*', '\002', '(', 'd', 'R', '\021', 'h', 'a', 's', + 'h', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'F', 'a', 'c', 't', + 'o', 'r', ':', 'D', '\232', '\305', '\210', '\036', '?', '\n', '=', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', 'e', 'f', 'r', - 'e', 's', 'h', 'R', 'a', 't', 'e', '\032', '\203', '\002', '\n', '\020', - 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'P', 'o', - 'l', 'i', 'c', 'y', '\022', 'x', '\n', '\035', 'p', 'e', 'r', '_', - 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'p', 'r', 'e', - 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'r', 'a', 't', 'i', - 'o', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', 'u', - 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022', '\031', '\000', '\000', '\000', - '\000', '\000', '\000', '\010', '@', ')', '\000', '\000', '\000', '\000', '\000', '\000', - '\360', '?', 'R', '\032', 'p', 'e', 'r', 'U', 'p', 's', 't', 'r', - 'e', 'a', 'm', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', - 't', 'R', 'a', 't', 'i', 'o', '\022', 'u', '\n', '\033', 'p', 'r', - 'e', 'd', 'i', 'c', 't', 'i', 'v', 'e', '_', 'p', 'r', 'e', - 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'r', 'a', 't', 'i', - 'o', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', + 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', + 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', + 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', + 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', + ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', + 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', + 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\033', '\n', '\031', + 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', + 'r', '\032', '\322', '\001', '\n', '\013', 'R', 'e', 'f', 'r', 'e', 's', + 'h', 'R', 'a', 't', 'e', '\022', 'N', '\n', '\r', 'b', 'a', 's', + 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', + ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', + 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\016', '\372', 'B', '\013', + '\252', '\001', '\010', '\010', '\001', '*', '\004', '\020', '\300', '\204', '=', 'R', + '\014', 'b', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', + 'l', '\022', 'J', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', + 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', + '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', + 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', '\006', '*', '\004', + '\020', '\300', '\204', '=', 'R', '\013', 'm', 'a', 'x', 'I', 'n', 't', + 'e', 'r', 'v', 'a', 'l', ':', '\'', '\232', '\305', '\210', '\036', '\"', + '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', + 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', 't', 'e', '\032', '\203', + '\002', '\n', '\020', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', + 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'x', '\n', '\035', 'p', + 'e', 'r', '_', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', + 'p', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'r', + 'a', 't', 'i', 'o', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', + 'a', 'l', 'u', 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022', '\031', + '\000', '\000', '\000', '\000', '\000', '\000', '\010', '@', ')', '\000', '\000', '\000', + '\000', '\000', '\000', '\360', '?', 'R', '\032', 'p', 'e', 'r', 'U', 'p', + 's', 't', 'r', 'e', 'a', 'm', 'P', 'r', 'e', 'c', 'o', 'n', + 'n', 'e', 'c', 't', 'R', 'a', 't', 'i', 'o', '\022', 'u', '\n', + '\033', 'p', 'r', 'e', 'd', 'i', 'c', 't', 'i', 'v', 'e', '_', + 'p', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'r', + 'a', 't', 'i', 'o', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', + 'a', 'l', 'u', 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022', '\031', + '\000', '\000', '\000', '\000', '\000', '\000', '\010', '@', ')', '\000', '\000', '\000', + '\000', '\000', '\000', '\360', '?', 'R', '\031', 'p', 'r', 'e', 'd', 'i', + 'c', 't', 'i', 'v', 'e', 'P', 'r', 'e', 'c', 'o', 'n', 'n', + 'e', 'c', 't', 'R', 'a', 't', 'i', 'o', '\032', 'f', '\n', '\"', + 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', + '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', + 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', 'u', - 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022', '\031', '\000', '\000', '\000', - '\000', '\000', '\000', '\010', '@', ')', '\000', '\000', '\000', '\000', '\000', '\000', - '\360', '?', 'R', '\031', 'p', 'r', 'e', 'd', 'i', 'c', 't', 'i', - 'v', 'e', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'R', 'a', 't', 'i', 'o', '\032', 'f', '\n', '\"', 'T', 'y', 'p', - 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', - 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', - 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', - 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', - '\001', '\"', 'W', '\n', '\r', 'D', 'i', 's', 'c', 'o', 'v', 'e', - 'r', 'y', 'T', 'y', 'p', 'e', '\022', '\n', '\n', '\006', 'S', 'T', - 'A', 'T', 'I', 'C', '\020', '\000', '\022', '\016', '\n', '\n', 'S', 'T', - 'R', 'I', 'C', 'T', '_', 'D', 'N', 'S', '\020', '\001', '\022', '\017', - '\n', '\013', 'L', 'O', 'G', 'I', 'C', 'A', 'L', '_', 'D', 'N', - 'S', '\020', '\002', '\022', '\007', '\n', '\003', 'E', 'D', 'S', '\020', '\003', - '\022', '\020', '\n', '\014', 'O', 'R', 'I', 'G', 'I', 'N', 'A', 'L', - '_', 'D', 'S', 'T', '\020', '\004', '\"', '\244', '\001', '\n', '\010', 'L', - 'b', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\017', '\n', '\013', 'R', - 'O', 'U', 'N', 'D', '_', 'R', 'O', 'B', 'I', 'N', '\020', '\000', - '\022', '\021', '\n', '\r', 'L', 'E', 'A', 'S', 'T', '_', 'R', 'E', - 'Q', 'U', 'E', 'S', 'T', '\020', '\001', '\022', '\r', '\n', '\t', 'R', - 'I', 'N', 'G', '_', 'H', 'A', 'S', 'H', '\020', '\002', '\022', '\n', - '\n', '\006', 'R', 'A', 'N', 'D', 'O', 'M', '\020', '\003', '\022', '\n', - '\n', '\006', 'M', 'A', 'G', 'L', 'E', 'V', '\020', '\005', '\022', '\024', - '\n', '\020', 'C', 'L', 'U', 'S', 'T', 'E', 'R', '_', 'P', 'R', - 'O', 'V', 'I', 'D', 'E', 'D', '\020', '\006', '\022', ' ', '\n', '\034', - 'L', 'O', 'A', 'D', '_', 'B', 'A', 'L', 'A', 'N', 'C', 'I', - 'N', 'G', '_', 'P', 'O', 'L', 'I', 'C', 'Y', '_', 'C', 'O', - 'N', 'F', 'I', 'G', '\020', '\007', '\"', '\004', '\010', '\004', '\020', '\004', - '*', '\017', 'O', 'R', 'I', 'G', 'I', 'N', 'A', 'L', '_', 'D', - 'S', 'T', '_', 'L', 'B', '\"', 'P', '\n', '\017', 'D', 'n', 's', - 'L', 'o', 'o', 'k', 'u', 'p', 'F', 'a', 'm', 'i', 'l', 'y', - '\022', '\010', '\n', '\004', 'A', 'U', 'T', 'O', '\020', '\000', '\022', '\013', - '\n', '\007', 'V', '4', '_', 'O', 'N', 'L', 'Y', '\020', '\001', '\022', - '\013', '\n', '\007', 'V', '6', '_', 'O', 'N', 'L', 'Y', '\020', '\002', - '\022', '\020', '\n', '\014', 'V', '4', '_', 'P', 'R', 'E', 'F', 'E', - 'R', 'R', 'E', 'D', '\020', '\003', '\022', '\007', '\n', '\003', 'A', 'L', - 'L', '\020', '\004', '\"', 'T', '\n', '\030', 'C', 'l', 'u', 's', 't', - 'e', 'r', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'S', 'e', - 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\027', 'U', - 'S', 'E', '_', 'C', 'O', 'N', 'F', 'I', 'G', 'U', 'R', 'E', - 'D', '_', 'P', 'R', 'O', 'T', 'O', 'C', 'O', 'L', '\020', '\000', - '\022', '\033', '\n', '\027', 'U', 'S', 'E', '_', 'D', 'O', 'W', 'N', - 'S', 'T', 'R', 'E', 'A', 'M', '_', 'P', 'R', 'O', 'T', 'O', - 'C', 'O', 'L', '\020', '\001', ':', '\033', '\232', '\305', '\210', '\036', '\026', - '\n', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', - 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'B', '\030', - '\n', '\026', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'd', 'i', - 's', 'c', 'o', 'v', 'e', 'r', 'y', '_', 't', 'y', 'p', 'e', - 'B', '\013', '\n', '\t', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', - 'g', 'J', '\004', '\010', '\014', '\020', '\r', 'J', '\004', '\010', '\017', '\020', - '\020', 'J', '\004', '\010', '\007', '\020', '\010', 'J', '\004', '\010', '\013', '\020', - '\014', 'J', '\004', '\010', '#', '\020', '$', 'R', '\005', 'h', 'o', 's', - 't', 's', 'R', '\013', 't', 'l', 's', '_', 'c', 'o', 'n', 't', - 'e', 'x', 't', 'R', '\032', 'e', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', - 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\332', '\002', '\n', '\023', - 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', - 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'O', '\n', '\010', 'p', - 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', '\001', ' ', '\003', '(', - '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', - '.', 'v', '3', '.', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', - 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '.', - 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\010', 'p', 'o', 'l', 'i', - 'c', 'i', 'e', 's', '\032', '\310', '\001', '\n', '\006', 'P', 'o', 'l', - 'i', 'c', 'y', '\022', '`', '\n', '\026', 't', 'y', 'p', 'e', 'd', - '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 'c', - 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', - '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', - 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\024', 't', 'y', 'p', - 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', - 'o', 'n', 'f', 'i', 'g', ':', '.', '\232', '\305', '\210', '\036', ')', - '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', - 'v', '2', '.', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', - 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'P', - 'o', 'l', 'i', 'c', 'y', 'J', '\004', '\010', '\002', '\020', '\003', 'J', - '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\003', '\020', '\004', 'R', - '\006', 'c', 'o', 'n', 'f', 'i', 'g', 'R', '\004', 'n', 'a', 'm', - 'e', 'R', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', - 'f', 'i', 'g', ':', '\'', '\232', '\305', '\210', '\036', '\"', '\n', ' ', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', - 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\273', '\005', '\n', - '\031', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', - 'n', 's', '\022', 'G', '\n', '\r', 't', 'c', 'p', '_', 'k', 'e', - 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\030', '\001', ' ', '\001', '(', - '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'T', 'c', 'p', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', - 'e', 'R', '\014', 't', 'c', 'p', 'K', 'e', 'e', 'p', 'a', 'l', - 'i', 'v', 'e', '\022', 'd', '\n', '0', 's', 'e', 't', '_', 'l', - 'o', 'c', 'a', 'l', '_', 'i', 'n', 't', 'e', 'r', 'f', 'a', - 'c', 'e', '_', 'n', 'a', 'm', 'e', '_', 'o', 'n', '_', 'u', - 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', - '\010', 'R', '*', 's', 'e', 't', 'L', 'o', 'c', 'a', 'l', 'I', - 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 'N', 'a', 'm', 'e', - 'O', 'n', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', - 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '\022', 'z', '\n', - '\025', 'h', 'a', 'p', 'p', 'y', '_', 'e', 'y', 'e', 'b', 'a', - 'l', 'l', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', - ' ', '\001', '(', '\013', '2', 'F', '.', 'e', 'n', 'v', 'o', 'y', + 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', + ':', '\002', '8', '\001', '\"', 'W', '\n', '\r', 'D', 'i', 's', 'c', + 'o', 'v', 'e', 'r', 'y', 'T', 'y', 'p', 'e', '\022', '\n', '\n', + '\006', 'S', 'T', 'A', 'T', 'I', 'C', '\020', '\000', '\022', '\016', '\n', + '\n', 'S', 'T', 'R', 'I', 'C', 'T', '_', 'D', 'N', 'S', '\020', + '\001', '\022', '\017', '\n', '\013', 'L', 'O', 'G', 'I', 'C', 'A', 'L', + '_', 'D', 'N', 'S', '\020', '\002', '\022', '\007', '\n', '\003', 'E', 'D', + 'S', '\020', '\003', '\022', '\020', '\n', '\014', 'O', 'R', 'I', 'G', 'I', + 'N', 'A', 'L', '_', 'D', 'S', 'T', '\020', '\004', '\"', '\244', '\001', + '\n', '\010', 'L', 'b', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\017', + '\n', '\013', 'R', 'O', 'U', 'N', 'D', '_', 'R', 'O', 'B', 'I', + 'N', '\020', '\000', '\022', '\021', '\n', '\r', 'L', 'E', 'A', 'S', 'T', + '_', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', '\020', '\001', '\022', '\r', + '\n', '\t', 'R', 'I', 'N', 'G', '_', 'H', 'A', 'S', 'H', '\020', + '\002', '\022', '\n', '\n', '\006', 'R', 'A', 'N', 'D', 'O', 'M', '\020', + '\003', '\022', '\n', '\n', '\006', 'M', 'A', 'G', 'L', 'E', 'V', '\020', + '\005', '\022', '\024', '\n', '\020', 'C', 'L', 'U', 'S', 'T', 'E', 'R', + '_', 'P', 'R', 'O', 'V', 'I', 'D', 'E', 'D', '\020', '\006', '\022', + ' ', '\n', '\034', 'L', 'O', 'A', 'D', '_', 'B', 'A', 'L', 'A', + 'N', 'C', 'I', 'N', 'G', '_', 'P', 'O', 'L', 'I', 'C', 'Y', + '_', 'C', 'O', 'N', 'F', 'I', 'G', '\020', '\007', '\"', '\004', '\010', + '\004', '\020', '\004', '*', '\017', 'O', 'R', 'I', 'G', 'I', 'N', 'A', + 'L', '_', 'D', 'S', 'T', '_', 'L', 'B', '\"', 'P', '\n', '\017', + 'D', 'n', 's', 'L', 'o', 'o', 'k', 'u', 'p', 'F', 'a', 'm', + 'i', 'l', 'y', '\022', '\010', '\n', '\004', 'A', 'U', 'T', 'O', '\020', + '\000', '\022', '\013', '\n', '\007', 'V', '4', '_', 'O', 'N', 'L', 'Y', + '\020', '\001', '\022', '\013', '\n', '\007', 'V', '6', '_', 'O', 'N', 'L', + 'Y', '\020', '\002', '\022', '\020', '\n', '\014', 'V', '4', '_', 'P', 'R', + 'E', 'F', 'E', 'R', 'R', 'E', 'D', '\020', '\003', '\022', '\007', '\n', + '\003', 'A', 'L', 'L', '\020', '\004', '\"', 'T', '\n', '\030', 'C', 'l', + 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'c', 'o', + 'l', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\033', + '\n', '\027', 'U', 'S', 'E', '_', 'C', 'O', 'N', 'F', 'I', 'G', + 'U', 'R', 'E', 'D', '_', 'P', 'R', 'O', 'T', 'O', 'C', 'O', + 'L', '\020', '\000', '\022', '\033', '\n', '\027', 'U', 'S', 'E', '_', 'D', + 'O', 'W', 'N', 'S', 'T', 'R', 'E', 'A', 'M', '_', 'P', 'R', + 'O', 'T', 'O', 'C', 'O', 'L', '\020', '\001', ':', '\033', '\232', '\305', + '\210', '\036', '\026', '\n', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'a', + 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', + 'r', 'B', '\030', '\n', '\026', 'c', 'l', 'u', 's', 't', 'e', 'r', + '_', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '_', 't', + 'y', 'p', 'e', 'B', '\013', '\n', '\t', 'l', 'b', '_', 'c', 'o', + 'n', 'f', 'i', 'g', 'J', '\004', '\010', '\014', '\020', '\r', 'J', '\004', + '\010', '\017', '\020', '\020', 'J', '\004', '\010', '\007', '\020', '\010', 'J', '\004', + '\010', '\013', '\020', '\014', 'J', '\004', '\010', '#', '\020', '$', 'R', '\005', + 'h', 'o', 's', 't', 's', 'R', '\013', 't', 'l', 's', '_', 'c', + 'o', 'n', 't', 'e', 'x', 't', 'R', '\032', 'e', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', + 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\332', + '\002', '\n', '\023', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', + 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'O', + '\n', '\010', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', '\001', + ' ', '\003', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', - 't', 'e', 'r', '.', 'v', '3', '.', 'U', 'p', 's', 't', 'r', - 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'a', 'p', + 't', 'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'a', 'd', 'B', + 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', + 'c', 'y', '.', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\010', 'p', + 'o', 'l', 'i', 'c', 'i', 'e', 's', '\032', '\310', '\001', '\n', '\006', + 'P', 'o', 'l', 'i', 'c', 'y', '\022', '`', '\n', '\026', 't', 'y', + 'p', 'e', 'd', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', + '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\024', + 't', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', ':', '.', '\232', '\305', + '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', + 'p', 'i', '.', 'v', '2', '.', 'L', 'o', 'a', 'd', 'B', 'a', + 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', + 'y', '.', 'P', 'o', 'l', 'i', 'c', 'y', 'J', '\004', '\010', '\002', + '\020', '\003', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\003', + '\020', '\004', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', 'R', '\004', + 'n', 'a', 'm', 'e', 'R', '\014', 't', 'y', 'p', 'e', 'd', '_', + 'c', 'o', 'n', 'f', 'i', 'g', ':', '\'', '\232', '\305', '\210', '\036', + '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', + 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\"', + '\273', '\005', '\n', '\031', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\022', 'G', '\n', '\r', 't', 'c', 'p', + '_', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\030', '\001', + ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'T', 'c', 'p', 'K', 'e', 'e', 'p', 'a', + 'l', 'i', 'v', 'e', 'R', '\014', 't', 'c', 'p', 'K', 'e', 'e', + 'p', 'a', 'l', 'i', 'v', 'e', '\022', 'd', '\n', '0', 's', 'e', + 't', '_', 'l', 'o', 'c', 'a', 'l', '_', 'i', 'n', 't', 'e', + 'r', 'f', 'a', 'c', 'e', '_', 'n', 'a', 'm', 'e', '_', 'o', + 'n', '_', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '\030', '\002', + ' ', '\001', '(', '\010', 'R', '*', 's', 'e', 't', 'L', 'o', 'c', + 'a', 'l', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 'N', + 'a', 'm', 'e', 'O', 'n', 'U', 'p', 's', 't', 'r', 'e', 'a', + 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', + '\022', 'z', '\n', '\025', 'h', 'a', 'p', 'p', 'y', '_', 'e', 'y', + 'e', 'b', 'a', 'l', 'l', 's', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', 'F', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'U', 'p', + 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', + 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', + 'H', 'a', 'p', 'p', 'y', 'E', 'y', 'e', 'b', 'a', 'l', 'l', + 's', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'h', 'a', 'p', 'p', 'y', 'E', 'y', 'e', 'b', 'a', 'l', 'l', 's', 'C', 'o', - 'n', 'f', 'i', 'g', 'R', '\023', 'h', 'a', 'p', 'p', 'y', 'E', - 'y', 'e', 'b', 'a', 'l', 'l', 's', 'C', 'o', 'n', 'f', 'i', - 'g', '\032', '\211', '\002', '\n', '\023', 'H', 'a', 'p', 'p', 'y', 'E', - 'y', 'e', 'b', 'a', 'l', 'l', 's', 'C', 'o', 'n', 'f', 'i', - 'g', '\022', '\215', '\001', '\n', '\034', 'f', 'i', 'r', 's', 't', '_', - 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'f', 'a', 'm', 'i', - 'l', 'y', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\001', - ' ', '\001', '(', '\016', '2', 'L', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', - 't', 'e', 'r', '.', 'v', '3', '.', 'U', 'p', 's', 't', 'r', - 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'F', 'i', 'r', - 's', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 'F', 'a', 'm', - 'i', 'l', 'y', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'R', '\031', - 'f', 'i', 'r', 's', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', + 'n', 'f', 'i', 'g', '\032', '\211', '\002', '\n', '\023', 'H', 'a', 'p', + 'p', 'y', 'E', 'y', 'e', 'b', 'a', 'l', 'l', 's', 'C', 'o', + 'n', 'f', 'i', 'g', '\022', '\215', '\001', '\n', '\034', 'f', 'i', 'r', + 's', 't', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'f', + 'a', 'm', 'i', 'l', 'y', '_', 'v', 'e', 'r', 's', 'i', 'o', + 'n', '\030', '\001', ' ', '\001', '(', '\016', '2', 'L', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'U', 'p', + 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', + 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', + 'F', 'i', 'r', 's', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 'F', 'a', 'm', 'i', 'l', 'y', 'V', 'e', 'r', 's', 'i', 'o', - 'n', '\022', 'b', '\n', '\032', 'f', 'i', 'r', 's', 't', '_', 'a', - 'd', 'd', 'r', 'e', 's', 's', '_', 'f', 'a', 'm', 'i', 'l', - 'y', '_', 'c', 'o', 'u', 'n', 't', '\030', '\002', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', - '*', '\002', '(', '\001', 'R', '\027', 'f', 'i', 'r', 's', 't', 'A', - 'd', 'd', 'r', 'e', 's', 's', 'F', 'a', 'm', 'i', 'l', 'y', - 'C', 'o', 'u', 'n', 't', '\"', '8', '\n', '\031', 'F', 'i', 'r', + 'n', 'R', '\031', 'f', 'i', 'r', 's', 't', 'A', 'd', 'd', 'r', + 'e', 's', 's', 'F', 'a', 'm', 'i', 'l', 'y', 'V', 'e', 'r', + 's', 'i', 'o', 'n', '\022', 'b', '\n', '\032', 'f', 'i', 'r', 's', + 't', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'f', 'a', + 'm', 'i', 'l', 'y', '_', 'c', 'o', 'u', 'n', 't', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', + 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', + '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\027', 'f', 'i', 'r', 's', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 'F', 'a', 'm', - 'i', 'l', 'y', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022', '\013', - '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', - '\006', '\n', '\002', 'V', '4', '\020', '\001', '\022', '\006', '\n', '\002', 'V', - '6', '\020', '\002', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', - 'n', 's', '\"', '\240', '\001', '\n', '\021', 'T', 'r', 'a', 'c', 'k', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', 'a', 't', 's', - '\022', '\'', '\n', '\017', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', - 'b', 'u', 'd', 'g', 'e', 't', 's', '\030', '\001', ' ', '\001', '(', - '\010', 'R', '\016', 't', 'i', 'm', 'e', 'o', 'u', 't', 'B', 'u', - 'd', 'g', 'e', 't', 's', '\022', '4', '\n', '\026', 'r', 'e', 'q', - 'u', 'e', 's', 't', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', - 'e', '_', 's', 'i', 'z', 'e', 's', '\030', '\002', ' ', '\001', '(', - '\010', 'R', '\024', 'r', 'e', 'q', 'u', 'e', 's', 't', 'R', 'e', - 's', 'p', 'o', 'n', 's', 'e', 'S', 'i', 'z', 'e', 's', '\022', - ',', '\n', '\022', 'p', 'e', 'r', '_', 'e', 'n', 'd', 'p', 'o', - 'i', 'n', 't', '_', 's', 't', 'a', 't', 's', '\030', '\003', ' ', - '\001', '(', '\010', 'R', '\020', 'p', 'e', 'r', 'E', 'n', 'd', 'p', - 'o', 'i', 'n', 't', 'S', 't', 'a', 't', 's', 'B', '\211', '\001', - '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', - 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', - '.', 'v', '3', 'B', '\014', 'C', 'l', 'u', 's', 't', 'e', 'r', - 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'H', 'g', 'i', 't', - 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', - 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', - 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', - 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', - '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3', ';', - 'c', 'l', 'u', 's', 't', 'e', 'r', 'v', '3', '\272', '\200', '\310', - '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', - '3', + 'i', 'l', 'y', 'C', 'o', 'u', 'n', 't', '\"', '8', '\n', '\031', + 'F', 'i', 'r', 's', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', + 'F', 'a', 'm', 'i', 'l', 'y', 'V', 'e', 'r', 's', 'i', 'o', + 'n', '\022', '\013', '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', + '\020', '\000', '\022', '\006', '\n', '\002', 'V', '4', '\020', '\001', '\022', '\006', + '\n', '\002', 'V', '6', '\020', '\002', ':', '-', '\232', '\305', '\210', '\036', + '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\"', '\240', '\001', '\n', '\021', 'T', 'r', + 'a', 'c', 'k', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', + 'a', 't', 's', '\022', '\'', '\n', '\017', 't', 'i', 'm', 'e', 'o', + 'u', 't', '_', 'b', 'u', 'd', 'g', 'e', 't', 's', '\030', '\001', + ' ', '\001', '(', '\010', 'R', '\016', 't', 'i', 'm', 'e', 'o', 'u', + 't', 'B', 'u', 'd', 'g', 'e', 't', 's', '\022', '4', '\n', '\026', + 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'r', 'e', 's', 'p', + 'o', 'n', 's', 'e', '_', 's', 'i', 'z', 'e', 's', '\030', '\002', + ' ', '\001', '(', '\010', 'R', '\024', 'r', 'e', 'q', 'u', 'e', 's', + 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'S', 'i', 'z', + 'e', 's', '\022', ',', '\n', '\022', 'p', 'e', 'r', '_', 'e', 'n', + 'd', 'p', 'o', 'i', 'n', 't', '_', 's', 't', 'a', 't', 's', + '\030', '\003', ' ', '\001', '(', '\010', 'R', '\020', 'p', 'e', 'r', 'E', + 'n', 'd', 'p', 'o', 'i', 'n', 't', 'S', 't', 'a', 't', 's', + 'B', '\211', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', + 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', + 't', 'e', 'r', '.', 'v', '3', 'B', '\014', 'C', 'l', 'u', 's', + 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'H', + 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', + 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', + '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', + 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', + 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', + 'v', '3', ';', 'c', 'l', 'u', 's', 't', 'e', 'r', 'v', '3', + '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', + 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[25] = { +static _upb_DefPool_Init *deps[26] = { &envoy_config_cluster_v3_circuit_breaker_proto_upbdefinit, &envoy_config_cluster_v3_filter_proto_upbdefinit, &envoy_config_cluster_v3_outlier_detection_proto_upbdefinit, @@ -1158,6 +1169,7 @@ static _upb_DefPool_Init *deps[25] = { &google_protobuf_struct_proto_upbdefinit, &google_protobuf_wrappers_proto_upbdefinit, &xds_core_v3_collection_entry_proto_upbdefinit, + &xds_type_matcher_v3_matcher_proto_upbdefinit, &envoy_annotations_deprecation_proto_upbdefinit, &udpa_annotations_migrate_proto_upbdefinit, &udpa_annotations_security_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c index d774d29d72e..31f7e31db4f 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c @@ -17,7 +17,7 @@ extern _upb_DefPool_Init envoy_type_matcher_v3_string_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[4192] = { +static const char descriptor[4229] = { '\n', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'm', 'm', 'o', 'n', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', 'a', 't', @@ -39,7 +39,7 @@ static const char descriptor[4192] = { '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', - 't', 'o', '\"', '\332', '\021', '\n', '\007', 'M', 'a', 't', 'c', 'h', + 't', 'o', '\"', '\377', '\021', '\n', '\007', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'X', '\n', '\014', 'm', 'a', 't', 'c', 'h', 'e', 'r', '_', 'l', 'i', 's', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', @@ -62,7 +62,7 @@ static const char descriptor[4192] = { 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'O', 'n', 'M', 'a', 't', 'c', 'h', 'R', '\t', 'o', 'n', 'N', 'o', 'M', 'a', 't', 'c', 'h', '\032', - '\245', '\001', '\n', '\007', 'O', 'n', 'M', 'a', 't', 'c', 'h', '\022', + '\312', '\001', '\n', '\007', 'O', 'n', 'M', 'a', 't', 'c', 'h', '\022', 'C', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', @@ -74,300 +74,303 @@ static const char descriptor[4192] = { 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\006', - 'a', 'c', 't', 'i', 'o', 'n', 'B', '\017', '\n', '\010', 'o', 'n', - '_', 'm', 'a', 't', 'c', 'h', '\022', '\003', '\370', 'B', '\001', '\032', - '\242', '\t', '\n', '\013', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', - 'i', 's', 't', '\022', 'f', '\n', '\010', 'm', 'a', 't', 'c', 'h', - 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '@', '.', + 'a', 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\r', 'k', 'e', + 'e', 'p', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\030', + '\003', ' ', '\001', '(', '\010', 'R', '\014', 'k', 'e', 'e', 'p', 'M', + 'a', 't', 'c', 'h', 'i', 'n', 'g', 'B', '\017', '\n', '\010', 'o', + 'n', '_', 'm', 'a', 't', 'c', 'h', '\022', '\003', '\370', 'B', '\001', + '\032', '\242', '\t', '\n', '\013', 'M', 'a', 't', 'c', 'h', 'e', 'r', + 'L', 'i', 's', 't', '\022', 'f', '\n', '\010', 'm', 'a', 't', 'c', + 'h', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '@', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', + 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', + 'i', 's', 't', '.', 'F', 'i', 'e', 'l', 'd', 'M', 'a', 't', + 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', + '\010', '\001', 'R', '\010', 'm', 'a', 't', 'c', 'h', 'e', 'r', 's', + '\032', '\334', '\006', '\n', '\t', 'P', 'r', 'e', 'd', 'i', 'c', 'a', + 't', 'e', '\022', 'z', '\n', '\020', 's', 'i', 'n', 'g', 'l', 'e', + '_', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\001', + ' ', '\001', '(', '\013', '2', 'M', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', + 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', + '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', + 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'S', 'i', 'n', 'g', + 'l', 'e', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', + '\000', 'R', '\017', 's', 'i', 'n', 'g', 'l', 'e', 'P', 'r', 'e', + 'd', 'i', 'c', 'a', 't', 'e', '\022', 'l', '\n', '\n', 'o', 'r', + '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\002', ' ', '\001', + '(', '\013', '2', 'K', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', + 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', 'd', + 'i', 'c', 'a', 't', 'e', '.', 'P', 'r', 'e', 'd', 'i', 'c', + 'a', 't', 'e', 'L', 'i', 's', 't', 'H', '\000', 'R', '\t', 'o', + 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'n', '\n', '\013', + 'a', 'n', 'd', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', + '\003', ' ', '\001', '(', '\013', '2', 'K', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', + 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', + 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', + 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'P', 'r', 'e', + 'd', 'i', 'c', 'a', 't', 'e', 'L', 'i', 's', 't', 'H', '\000', + 'R', '\n', 'a', 'n', 'd', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '\022', '`', '\n', '\013', 'n', 'o', 't', '_', 'm', 'a', 't', 'c', + 'h', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '=', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', - 's', 't', '.', 'F', 'i', 'e', 'l', 'd', 'M', 'a', 't', 'c', - 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', - '\001', 'R', '\010', 'm', 'a', 't', 'c', 'h', 'e', 'r', 's', '\032', - '\334', '\006', '\n', '\t', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', - 'e', '\022', 'z', '\n', '\020', 's', 'i', 'n', 'g', 'l', 'e', '_', - 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\001', ' ', - '\001', '(', '\013', '2', 'M', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', - 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', - 'd', 'i', 'c', 'a', 't', 'e', '.', 'S', 'i', 'n', 'g', 'l', - 'e', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', - 'R', '\017', 's', 'i', 'n', 'g', 'l', 'e', 'P', 'r', 'e', 'd', - 'i', 'c', 'a', 't', 'e', '\022', 'l', '\n', '\n', 'o', 'r', '_', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\002', ' ', '\001', '(', - '\013', '2', 'K', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', - 't', 'e', 'L', 'i', 's', 't', 'H', '\000', 'R', '\t', 'o', 'r', - 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'n', '\n', '\013', 'a', - 'n', 'd', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\003', - ' ', '\001', '(', '\013', '2', 'K', '.', 'e', 'n', 'v', 'o', 'y', + 's', 't', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', + 'H', '\000', 'R', '\n', 'n', 'o', 't', 'M', 'a', 't', 'c', 'h', + 'e', 'r', '\032', '\207', '\002', '\n', '\017', 'S', 'i', 'n', 'g', 'l', + 'e', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'J', + '\n', '\005', 'i', 'n', 'p', 'u', 't', '\030', '\001', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', + 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'i', 'n', 'p', + 'u', 't', '\022', 'G', '\n', '\013', 'v', 'a', 'l', 'u', 'e', '_', + 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', + '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', + 'r', 'H', '\000', 'R', '\n', 'v', 'a', 'l', 'u', 'e', 'M', 'a', + 't', 'c', 'h', '\022', 'O', '\n', '\014', 'c', 'u', 's', 't', 'o', + 'm', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', + '\013', 'c', 'u', 's', 't', 'o', 'm', 'M', 'a', 't', 'c', 'h', + 'B', '\016', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', + '\003', '\370', 'B', '\001', '\032', 'v', '\n', '\r', 'P', 'r', 'e', 'd', + 'i', 'c', 'a', 't', 'e', 'L', 'i', 's', 't', '\022', 'e', '\n', + '\t', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\001', + ' ', '\003', '(', '\013', '2', '=', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', - 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'P', 'r', 'e', 'd', - 'i', 'c', 'a', 't', 'e', 'L', 'i', 's', 't', 'H', '\000', 'R', - '\n', 'a', 'n', 'd', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', - '`', '\n', '\013', 'n', 'o', 't', '_', 'm', 'a', 't', 'c', 'h', - 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '=', '.', 'e', + 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', '\372', 'B', '\005', + '\222', '\001', '\002', '\010', '\002', 'R', '\t', 'p', 'r', 'e', 'd', 'i', + 'c', 'a', 't', 'e', 'B', '\021', '\n', '\n', 'm', 'a', 't', 'c', + 'h', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\032', + '\313', '\001', '\n', '\014', 'F', 'i', 'e', 'l', 'd', 'M', 'a', 't', + 'c', 'h', 'e', 'r', '\022', 'e', '\n', '\t', 'p', 'r', 'e', 'd', + 'i', 'c', 'a', 't', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', + '=', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', + 'L', 'i', 's', 't', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', + 't', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', + 'R', '\t', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', + 'T', '\n', '\010', 'o', 'n', '_', 'm', 'a', 't', 'c', 'h', '\030', + '\002', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', + 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', + 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'O', + 'n', 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', '\212', + '\001', '\002', '\020', '\001', 'R', '\007', 'o', 'n', 'M', 'a', 't', 'c', + 'h', '\032', '\347', '\004', '\n', '\013', 'M', 'a', 't', 'c', 'h', 'e', + 'r', 'T', 'r', 'e', 'e', '\022', 'J', '\n', '\005', 'i', 'n', 'p', + 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', - 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', - 't', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', - '\000', 'R', '\n', 'n', 'o', 't', 'M', 'a', 't', 'c', 'h', 'e', - 'r', '\032', '\207', '\002', '\n', '\017', 'S', 'i', 'n', 'g', 'l', 'e', - 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'J', '\n', - '\005', 'i', 'n', 'p', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', - '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'i', 'n', 'p', 'u', - 't', '\022', 'G', '\n', '\013', 'v', 'a', 'l', 'u', 'e', '_', 'm', - 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '$', - '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', - 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', - 'H', '\000', 'R', '\n', 'v', 'a', 'l', 'u', 'e', 'M', 'a', 't', - 'c', 'h', '\022', 'O', '\n', '\014', 'c', 'u', 's', 't', 'o', 'm', - '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\013', - 'c', 'u', 's', 't', 'o', 'm', 'M', 'a', 't', 'c', 'h', 'B', - '\016', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', '\003', - '\370', 'B', '\001', '\032', 'v', '\n', '\r', 'P', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', 'L', 'i', 's', 't', '\022', 'e', '\n', '\t', - 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\001', ' ', - '\003', '(', '\013', '2', '=', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', - 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', - 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', '\372', 'B', '\005', '\222', - '\001', '\002', '\010', '\002', 'R', '\t', 'p', 'r', 'e', 'd', 'i', 'c', - 'a', 't', 'e', 'B', '\021', '\n', '\n', 'm', 'a', 't', 'c', 'h', - '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\032', '\313', - '\001', '\n', '\014', 'F', 'i', 'e', 'l', 'd', 'M', 'a', 't', 'c', - 'h', 'e', 'r', '\022', 'e', '\n', '\t', 'p', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '=', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', + 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', + '\020', '\001', 'R', '\005', 'i', 'n', 'p', 'u', 't', '\022', 'f', '\n', + '\017', 'e', 'x', 'a', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', + '_', 'm', 'a', 'p', '\030', '\002', ' ', '\001', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', - 'i', 's', 't', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', - 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', - '\t', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'T', - '\n', '\010', 'o', 'n', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', - ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', - 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', - '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'O', 'n', - 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', '\212', '\001', - '\002', '\020', '\001', 'R', '\007', 'o', 'n', 'M', 'a', 't', 'c', 'h', - '\032', '\347', '\004', '\n', '\013', 'M', 'a', 't', 'c', 'h', 'e', 'r', - 'T', 'r', 'e', 'e', '\022', 'J', '\n', '\005', 'i', 'n', 'p', 'u', - 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', + 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'T', + 'r', 'e', 'e', '.', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', + 'H', '\000', 'R', '\r', 'e', 'x', 'a', 'c', 't', 'M', 'a', 't', + 'c', 'h', 'M', 'a', 'p', '\022', 'h', '\n', '\020', 'p', 'r', 'e', + 'f', 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', '_', 'm', 'a', + 'p', '\030', '\003', ' ', '\001', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', - 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', - 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', - '\001', 'R', '\005', 'i', 'n', 'p', 'u', 't', '\022', 'f', '\n', '\017', - 'e', 'x', 'a', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '_', - 'm', 'a', 'p', '\030', '\002', ' ', '\001', '(', '\013', '2', '<', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', - 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', - 'e', 'e', '.', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', 'H', - '\000', 'R', '\r', 'e', 'x', 'a', 'c', 't', 'M', 'a', 't', 'c', - 'h', 'M', 'a', 'p', '\022', 'h', '\n', '\020', 'p', 'r', 'e', 'f', - 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', '_', 'm', 'a', 'p', - '\030', '\003', ' ', '\001', '(', '\013', '2', '<', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', - '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'M', 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', '.', - 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', 'H', '\000', 'R', '\016', - 'p', 'r', 'e', 'f', 'i', 'x', 'M', 'a', 't', 'c', 'h', 'M', - 'a', 'p', '\022', 'O', '\n', '\014', 'c', 'u', 's', 't', 'o', 'm', - '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\013', - 'c', 'u', 's', 't', 'o', 'm', 'M', 'a', 't', 'c', 'h', '\032', - '\326', '\001', '\n', '\010', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', - '\022', 'a', '\n', '\003', 'm', 'a', 'p', '\030', '\001', ' ', '\003', '(', - '\013', '2', 'E', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', + '.', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', 'H', '\000', 'R', + '\016', 'p', 'r', 'e', 'f', 'i', 'x', 'M', 'a', 't', 'c', 'h', + 'M', 'a', 'p', '\022', 'O', '\n', '\014', 'c', 'u', 's', 't', 'o', + 'm', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', + '\013', 'c', 'u', 's', 't', 'o', 'm', 'M', 'a', 't', 'c', 'h', + '\032', '\326', '\001', '\n', '\010', 'M', 'a', 't', 'c', 'h', 'M', 'a', + 'p', '\022', 'a', '\n', '\003', 'm', 'a', 'p', '\030', '\001', ' ', '\003', + '(', '\013', '2', 'E', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', + 'h', 'e', 'r', 'T', 'r', 'e', 'e', '.', 'M', 'a', 't', 'c', + 'h', 'M', 'a', 'p', '.', 'M', 'a', 'p', 'E', 'n', 't', 'r', + 'y', 'B', '\010', '\372', 'B', '\005', '\232', '\001', '\002', '\010', '\001', 'R', + '\003', 'm', 'a', 'p', '\032', 'g', '\n', '\010', 'M', 'a', 'p', 'E', + 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', + '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', 'E', + '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', + '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'T', 'r', 'e', 'e', '.', 'M', 'a', 't', 'c', 'h', - 'M', 'a', 'p', '.', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y', - 'B', '\010', '\372', 'B', '\005', '\232', '\001', '\002', '\010', '\001', 'R', '\003', - 'm', 'a', 'p', '\032', 'g', '\n', '\010', 'M', 'a', 'p', 'E', 'n', - 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', 'E', '\n', - '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', - '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'a', 't', 'c', 'h', 'e', 'r', '.', 'O', 'n', 'M', 'a', 't', + 'c', 'h', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', + '\001', 'B', '\020', '\n', '\t', 't', 'r', 'e', 'e', '_', 't', 'y', + 'p', 'e', '\022', '\003', '\370', 'B', '\001', 'B', '\023', '\n', '\014', 'm', + 'a', 't', 'c', 'h', 'e', 'r', '_', 't', 'y', 'p', 'e', '\022', + '\003', '\370', 'B', '\001', '\"', '\350', '\010', '\n', '\016', 'M', 'a', 't', + 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', + 'T', '\n', '\010', 'o', 'r', '_', 'm', 'a', 't', 'c', 'h', '\030', + '\001', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', + 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', + 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', + 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', + 'e', 't', 'H', '\000', 'R', '\007', 'o', 'r', 'M', 'a', 't', 'c', + 'h', '\022', 'V', '\n', '\t', 'a', 'n', 'd', '_', 'm', 'a', 't', + 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '7', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', + 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', + 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', + 'c', 'h', 'S', 'e', 't', 'H', '\000', 'R', '\010', 'a', 'n', 'd', + 'M', 'a', 't', 'c', 'h', '\022', 'M', '\n', '\t', 'n', 'o', 't', + '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', + '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'O', 'n', 'M', 'a', 't', 'c', - 'h', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', - 'B', '\020', '\n', '\t', 't', 'r', 'e', 'e', '_', 't', 'y', 'p', - 'e', '\022', '\003', '\370', 'B', '\001', 'B', '\023', '\n', '\014', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '_', 't', 'y', 'p', 'e', '\022', '\003', - '\370', 'B', '\001', '\"', '\350', '\010', '\n', '\016', 'M', 'a', 't', 'c', - 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'T', - '\n', '\010', 'o', 'r', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', - ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', - 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', - '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', - 't', 'H', '\000', 'R', '\007', 'o', 'r', 'M', 'a', 't', 'c', 'h', - '\022', 'V', '\n', '\t', 'a', 'n', 'd', '_', 'm', 'a', 't', 'c', - 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', - 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', - 'h', 'S', 'e', 't', 'H', '\000', 'R', '\010', 'a', 'n', 'd', 'M', - 'a', 't', 'c', 'h', '\022', 'M', '\n', '\t', 'n', 'o', 't', '_', - 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', - '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', - 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', - '\000', 'R', '\010', 'n', 'o', 't', 'M', 'a', 't', 'c', 'h', '\022', - '&', '\n', '\t', 'a', 'n', 'y', '_', 'm', 'a', 't', 'c', 'h', - '\030', '\004', ' ', '\001', '(', '\010', 'B', '\007', '\372', 'B', '\004', 'j', - '\002', '\010', '\001', 'H', '\000', 'R', '\010', 'a', 'n', 'y', 'M', 'a', - 't', 'c', 'h', '\022', 'o', '\n', '\032', 'h', 't', 't', 'p', '_', - 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', - 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\005', ' ', - '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', - 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', - 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\027', 'h', 't', 't', - 'p', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', - 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 'q', '\n', '\033', - 'h', 't', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', - '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', 's', '_', 'm', 'a', - 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '0', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'H', - 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', - '\000', 'R', '\030', 'h', 't', 't', 'p', 'R', 'e', 'q', 'u', 'e', - 's', 't', 'T', 'r', 'a', 'i', 'l', 'e', 'r', 's', 'M', 'a', - 't', 'c', 'h', '\022', 'q', '\n', '\033', 'h', 't', 't', 'p', '_', - 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', - 'd', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\007', + 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', + 'H', '\000', 'R', '\010', 'n', 'o', 't', 'M', 'a', 't', 'c', 'h', + '\022', '&', '\n', '\t', 'a', 'n', 'y', '_', 'm', 'a', 't', 'c', + 'h', '\030', '\004', ' ', '\001', '(', '\010', 'B', '\007', '\372', 'B', '\004', + 'j', '\002', '\010', '\001', 'H', '\000', 'R', '\010', 'a', 'n', 'y', 'M', + 'a', 't', 'c', 'h', '\022', 'o', '\n', '\032', 'h', 't', 't', 'p', + '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', + 'd', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\005', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', - 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\030', 'h', 't', - 't', 'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', - 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 's', - '\n', '\034', 'h', 't', 't', 'p', '_', 'r', 'e', 's', 'p', 'o', - 'n', 's', 'e', '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', 's', - '_', 'm', 'a', 't', 'c', 'h', '\030', '\010', ' ', '\001', '(', '\013', - '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'H', 't', - 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', - 'c', 'h', 'H', '\000', 'R', '\031', 'h', 't', 't', 'p', 'R', 'e', - 's', 'p', 'o', 'n', 's', 'e', 'T', 'r', 'a', 'i', 'l', 'e', - 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', '|', '\n', '\037', 'h', - 't', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', - 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'b', 'o', 'd', 'y', - '_', 'm', 'a', 't', 'c', 'h', '\030', '\t', ' ', '\001', '(', '\013', - '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'H', 't', - 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', - 'y', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\033', 'h', 't', - 't', 'p', 'R', 'e', 'q', 'u', 'e', 's', 't', 'G', 'e', 'n', - 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', - 'h', '\022', '~', '\n', ' ', 'h', 't', 't', 'p', '_', 'r', 'e', - 's', 'p', 'o', 'n', 's', 'e', '_', 'g', 'e', 'n', 'e', 'r', - 'i', 'c', '_', 'b', 'o', 'd', 'y', '_', 'm', 'a', 't', 'c', - 'h', '\030', '\n', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'G', 'e', 'n', - 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', - 'h', 'H', '\000', 'R', '\034', 'h', 't', 't', 'p', 'R', 'e', 's', - 'p', 'o', 'n', 's', 'e', 'G', 'e', 'n', 'e', 'r', 'i', 'c', - 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\032', 'Z', '\n', - '\010', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', '\022', 'N', '\n', - '\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', - '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', - 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', - 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', 'R', '\005', - 'r', 'u', 'l', 'e', 's', 'B', '\013', '\n', '\004', 'r', 'u', 'l', - 'e', '\022', '\003', '\370', 'B', '\001', '\"', 'R', '\n', '\020', 'H', 't', - 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', - 'c', 'h', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', - 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', - 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '\"', '\241', '\002', '\n', '\024', 'H', - 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', - 'd', 'y', 'M', 'a', 't', 'c', 'h', '\022', '\037', '\n', '\013', 'b', - 'y', 't', 'e', 's', '_', 'l', 'i', 'm', 'i', 't', '\030', '\001', - ' ', '\001', '(', '\r', 'R', '\n', 'b', 'y', 't', 'e', 's', 'L', - 'i', 'm', 'i', 't', '\022', 'k', '\n', '\010', 'p', 'a', 't', 't', - 'e', 'r', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', 'E', + 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\027', 'h', 't', + 't', 'p', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', + 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 'q', '\n', + '\033', 'h', 't', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e', 's', + 't', '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', 's', '_', 'm', + 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', - 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', - 'a', 't', 'c', 'h', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', - 'T', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', - 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'p', 'a', 't', - 't', 'e', 'r', 'n', 's', '\032', '{', '\n', '\020', 'G', 'e', 'n', - 'e', 'r', 'i', 'c', 'T', 'e', 'x', 't', 'M', 'a', 't', 'c', - 'h', '\022', ',', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', - 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'B', - '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\013', - 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', - ',', '\n', '\014', 'b', 'i', 'n', 'a', 'r', 'y', '_', 'm', 'a', - 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\014', 'B', '\007', '\372', - 'B', '\004', 'z', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 'b', 'i', - 'n', 'a', 'r', 'y', 'M', 'a', 't', 'c', 'h', 'B', '\013', '\n', - '\004', 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', 'B', '\227', - '\001', '\n', ',', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', - 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', - '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', 'B', - '\014', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'P', 'r', 'o', 't', - 'o', 'P', '\001', 'Z', 'O', 'g', 'i', 't', 'h', 'u', 'b', '.', - 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', - 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', - 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', - 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'm', - 'm', 'o', 'n', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', - 'v', '3', ';', 'm', 'a', 't', 'c', 'h', 'e', 'r', 'v', '3', - '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', - 'o', 't', 'o', '3', + 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', + 'H', '\000', 'R', '\030', 'h', 't', 't', 'p', 'R', 'e', 'q', 'u', + 'e', 's', 't', 'T', 'r', 'a', 'i', 'l', 'e', 'r', 's', 'M', + 'a', 't', 'c', 'h', '\022', 'q', '\n', '\033', 'h', 't', 't', 'p', + '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', + 'a', 'd', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', + '\007', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', + 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', + 'v', '3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', + 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\030', 'h', + 't', 't', 'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', + 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', + 's', '\n', '\034', 'h', 't', 't', 'p', '_', 'r', 'e', 's', 'p', + 'o', 'n', 's', 'e', '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', + 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\010', ' ', '\001', '(', + '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'H', + 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', + 't', 'c', 'h', 'H', '\000', 'R', '\031', 'h', 't', 't', 'p', 'R', + 'e', 's', 'p', 'o', 'n', 's', 'e', 'T', 'r', 'a', 'i', 'l', + 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', '|', '\n', '\037', + 'h', 't', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', + '_', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'b', 'o', 'd', + 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\t', ' ', '\001', '(', + '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'H', + 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', + 'd', 'y', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\033', 'h', + 't', 't', 'p', 'R', 'e', 'q', 'u', 'e', 's', 't', 'G', 'e', + 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', + 'c', 'h', '\022', '~', '\n', ' ', 'h', 't', 't', 'p', '_', 'r', + 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'g', 'e', 'n', 'e', + 'r', 'i', 'c', '_', 'b', 'o', 'd', 'y', '_', 'm', 'a', 't', + 'c', 'h', '\030', '\n', ' ', '\001', '(', '\013', '2', '4', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', + 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'G', 'e', + 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', + 'c', 'h', 'H', '\000', 'R', '\034', 'h', 't', 't', 'p', 'R', 'e', + 's', 'p', 'o', 'n', 's', 'e', 'G', 'e', 'n', 'e', 'r', 'i', + 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\032', 'Z', + '\n', '\010', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', '\022', 'N', + '\n', '\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', + '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', + 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', + 'e', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', 'R', + '\005', 'r', 'u', 'l', 'e', 's', 'B', '\013', '\n', '\004', 'r', 'u', + 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', 'R', '\n', '\020', 'H', + 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', + 't', 'c', 'h', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', + 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '$', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', + 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', + 'h', 'e', 'a', 'd', 'e', 'r', 's', '\"', '\241', '\002', '\n', '\024', + 'H', 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', + 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\022', '\037', '\n', '\013', + 'b', 'y', 't', 'e', 's', '_', 'l', 'i', 'm', 'i', 't', '\030', + '\001', ' ', '\001', '(', '\r', 'R', '\n', 'b', 'y', 't', 'e', 's', + 'L', 'i', 'm', 'i', 't', '\022', 'k', '\n', '\010', 'p', 'a', 't', + 't', 'e', 'r', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', + 'E', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', + 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', + 'M', 'a', 't', 'c', 'h', '.', 'G', 'e', 'n', 'e', 'r', 'i', + 'c', 'T', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'B', '\010', + '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'p', 'a', + 't', 't', 'e', 'r', 'n', 's', '\032', '{', '\n', '\020', 'G', 'e', + 'n', 'e', 'r', 'i', 'c', 'T', 'e', 'x', 't', 'M', 'a', 't', + 'c', 'h', '\022', ',', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', + '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\t', + 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', + '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', + '\022', ',', '\n', '\014', 'b', 'i', 'n', 'a', 'r', 'y', '_', 'm', + 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\014', 'B', '\007', + '\372', 'B', '\004', 'z', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 'b', + 'i', 'n', 'a', 'r', 'y', 'M', 'a', 't', 'c', 'h', 'B', '\013', + '\n', '\004', 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', 'B', + '\227', '\001', '\n', ',', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', + 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', + 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', + 'B', '\014', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'P', 'r', 'o', + 't', 'o', 'P', '\001', 'Z', 'O', 'g', 'i', 't', 'h', 'u', 'b', + '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', + 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', + 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', + 'm', 'm', 'o', 'n', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '/', 'v', '3', ';', 'm', 'a', 't', 'c', 'h', 'e', 'r', 'v', + '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', + 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[6] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c new file mode 100644 index 00000000000..13742d8461d --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c @@ -0,0 +1,152 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/common/mutation_rules/v3/mutation_rules.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + +#include "upb/reflection/def.h" +#include "envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h" +#include "envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h" + +extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit; +extern _upb_DefPool_Init envoy_type_matcher_v3_regex_proto_upbdefinit; +extern _upb_DefPool_Init envoy_type_matcher_v3_string_proto_upbdefinit; +extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; +extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; +extern _upb_DefPool_Init validate_validate_proto_upbdefinit; + +static const char descriptor[1356] = { + '\n', ':', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', + 'i', 'g', '/', 'c', 'o', 'm', 'm', 'o', 'n', '/', 'm', 'u', + 't', 'a', 't', 'i', 'o', 'n', '_', 'r', 'u', 'l', 'e', 's', + '/', 'v', '3', '/', 'm', 'u', 't', 'a', 't', 'i', 'o', 'n', + '_', 'r', 'u', 'l', 'e', 's', '.', 'p', 'r', 'o', 't', 'o', + '\022', '%', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'u', + 't', 'a', 't', 'i', 'o', 'n', '_', 'r', 'u', 'l', 'e', 's', + '.', 'v', '3', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', + 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', + '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', + '\032', '!', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', + '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', + 'r', 'e', 'g', 'e', 'x', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\"', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 's', + 't', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', + 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', + 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', + 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', + 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', + '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', + 'o', 't', 'o', '\"', '\214', '\004', '\n', '\023', 'H', 'e', 'a', 'd', + 'e', 'r', 'M', 'u', 't', 'a', 't', 'i', 'o', 'n', 'R', 'u', + 'l', 'e', 's', '\022', 'F', '\n', '\021', 'a', 'l', 'l', 'o', 'w', + '_', 'a', 'l', 'l', '_', 'r', 'o', 'u', 't', 'i', 'n', 'g', + '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\017', + 'a', 'l', 'l', 'o', 'w', 'A', 'l', 'l', 'R', 'o', 'u', 't', + 'i', 'n', 'g', '\022', ';', '\n', '\013', 'a', 'l', 'l', 'o', 'w', + '_', 'e', 'n', 'v', 'o', 'y', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', + 'a', 'l', 'u', 'e', 'R', '\n', 'a', 'l', 'l', 'o', 'w', 'E', + 'n', 'v', 'o', 'y', '\022', 'C', '\n', '\017', 'd', 'i', 's', 'a', + 'l', 'l', 'o', 'w', '_', 's', 'y', 's', 't', 'e', 'm', '\030', + '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'd', + 'i', 's', 'a', 'l', 'l', 'o', 'w', 'S', 'y', 's', 't', 'e', + 'm', '\022', '=', '\n', '\014', 'd', 'i', 's', 'a', 'l', 'l', 'o', + 'w', '_', 'a', 'l', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', + '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', + 'l', 'u', 'e', 'R', '\013', 'd', 'i', 's', 'a', 'l', 'l', 'o', + 'w', 'A', 'l', 'l', '\022', 'N', '\n', '\020', 'a', 'l', 'l', 'o', + 'w', '_', 'e', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', + '\030', '\005', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', + 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', + 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', 'a', 'l', 'l', + 'o', 'w', 'E', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', + '\022', 'T', '\n', '\023', 'd', 'i', 's', 'a', 'l', 'l', 'o', 'w', + '_', 'e', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '\030', + '\006', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', + 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', + 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'R', '\022', 'd', 'i', 's', 'a', + 'l', 'l', 'o', 'w', 'E', 'x', 'p', 'r', 'e', 's', 's', 'i', + 'o', 'n', '\022', 'F', '\n', '\021', 'd', 'i', 's', 'a', 'l', 'l', + 'o', 'w', '_', 'i', 's', '_', 'e', 'r', 'r', 'o', 'r', '\030', + '\007', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'd', + 'i', 's', 'a', 'l', 'l', 'o', 'w', 'I', 's', 'E', 'r', 'r', + 'o', 'r', '\"', '\332', '\002', '\n', '\016', 'H', 'e', 'a', 'd', 'e', + 'r', 'M', 'u', 't', 'a', 't', 'i', 'o', 'n', '\022', '%', '\n', + '\006', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', + '\001', '\000', 'H', '\000', 'R', '\006', 'r', 'e', 'm', 'o', 'v', 'e', + '\022', 'A', '\n', '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', + 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'H', '\000', 'R', + '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\022', 'm', '\n', '\017', 'r', + 'e', 'm', 'o', 'v', 'e', '_', 'o', 'n', '_', 'm', 'a', 't', + 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', 'C', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'u', 't', 'a', 't', + 'i', 'o', 'n', '_', 'r', 'u', 'l', 'e', 's', '.', 'v', '3', + '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'u', 't', 'a', 't', + 'i', 'o', 'n', '.', 'R', 'e', 'm', 'o', 'v', 'e', 'O', 'n', + 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\r', 'r', 'e', 'm', + 'o', 'v', 'e', 'O', 'n', 'M', 'a', 't', 'c', 'h', '\032', '`', + '\n', '\r', 'R', 'e', 'm', 'o', 'v', 'e', 'O', 'n', 'M', 'a', + 't', 'c', 'h', '\022', 'O', '\n', '\013', 'k', 'e', 'y', '_', 'm', + 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', + '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', + 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', + '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', + 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', + 'R', '\n', 'k', 'e', 'y', 'M', 'a', 't', 'c', 'h', 'e', 'r', + 'B', '\r', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\022', '\003', + '\370', 'B', '\001', 'B', '\262', '\001', '\n', '3', 'i', 'o', '.', 'e', + 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'm', 'm', 'o', 'n', '.', 'm', 'u', 't', 'a', 't', 'i', + 'o', 'n', '_', 'r', 'u', 'l', 'e', 's', '.', 'v', '3', 'B', + '\022', 'M', 'u', 't', 'a', 't', 'i', 'o', 'n', 'R', 'u', 'l', + 'e', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', ']', 'g', + 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', + 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', + 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', + 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', + 'i', 'g', '/', 'c', 'o', 'm', 'm', 'o', 'n', '/', 'm', 'u', + 't', 'a', 't', 'i', 'o', 'n', '_', 'r', 'u', 'l', 'e', 's', + '/', 'v', '3', ';', 'm', 'u', 't', 'a', 't', 'i', 'o', 'n', + '_', 'r', 'u', 'l', 'e', 's', 'v', '3', '\272', '\200', '\310', '\321', + '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', +}; + +static _upb_DefPool_Init *deps[7] = { + &envoy_config_core_v3_base_proto_upbdefinit, + &envoy_type_matcher_v3_regex_proto_upbdefinit, + &envoy_type_matcher_v3_string_proto_upbdefinit, + &google_protobuf_wrappers_proto_upbdefinit, + &udpa_annotations_status_proto_upbdefinit, + &validate_validate_proto_upbdefinit, + NULL, +}; + +_upb_DefPool_Init envoy_config_common_mutation_rules_v3_mutation_rules_proto_upbdefinit = { + deps, + &envoy_config_common_mutation_rules_v3_mutation_rules_proto_upb_file_layout, + "envoy/config/common/mutation_rules/v3/mutation_rules.proto", + UPB_STRINGVIEW_INIT(descriptor, sizeof(descriptor)), +}; diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h new file mode 100644 index 00000000000..951ab9c26f4 --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h @@ -0,0 +1,47 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/common/mutation_rules/v3/mutation_rules.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + + +#ifndef ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPBDEFS_H_ +#define ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPBDEFS_H_ + +#include "upb/reflection/def.h" +#include "upb/reflection/internal/def_pool.h" + +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern _upb_DefPool_Init envoy_config_common_mutation_rules_v3_mutation_rules_proto_upbdefinit; + +UPB_INLINE const upb_MessageDef *envoy_config_common_mutation_rules_v3_HeaderMutationRules_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_common_mutation_rules_v3_mutation_rules_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.common.mutation_rules.v3.HeaderMutationRules"); +} + +UPB_INLINE const upb_MessageDef *envoy_config_common_mutation_rules_v3_HeaderMutation_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_common_mutation_rules_v3_mutation_rules_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.common.mutation_rules.v3.HeaderMutation"); +} + +UPB_INLINE const upb_MessageDef *envoy_config_common_mutation_rules_v3_HeaderMutation_RemoveOnMatch_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_common_mutation_rules_v3_mutation_rules_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.common.mutation_rules.v3.HeaderMutation.RemoveOnMatch"); +} + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_CONFIG_COMMON_MUTATION_RULES_V3_MUTATION_RULES_PROTO_UPB_H__UPBDEFS_H_ */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c index 644bda92f27..13ec45750d0 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c @@ -19,7 +19,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[2534] = { +static const char descriptor[2596] = { '\n', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'p', 'r', 'o', 't', 'o', @@ -64,7 +64,7 @@ static const char descriptor[2534] = { '(', '\t', 'R', '\n', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'I', 'd', 'B', '\035', '\n', '\026', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'n', 'a', 'm', 'e', '_', 's', 'p', 'e', 'c', 'i', - 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\366', '\002', + 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\264', '\003', '\n', '\r', 'S', 'o', 'c', 'k', 'e', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', 'R', '\n', '\010', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '\030', '\001', ' ', '\001', '(', '\016', '2', ',', '.', @@ -88,150 +88,155 @@ static const char descriptor[2534] = { 'l', 'v', 'e', 'r', 'N', 'a', 'm', 'e', '\022', '\037', '\n', '\013', 'i', 'p', 'v', '4', '_', 'c', 'o', 'm', 'p', 'a', 't', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\n', 'i', 'p', 'v', '4', 'C', - 'o', 'm', 'p', 'a', 't', '\"', '\034', '\n', '\010', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', '\022', '\007', '\n', '\003', 'T', 'C', 'P', - '\020', '\000', '\022', '\007', '\n', '\003', 'U', 'D', 'P', '\020', '\001', ':', - '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', - 'e', '.', 'S', 'o', 'c', 'k', 'e', 't', 'A', 'd', 'd', 'r', - 'e', 's', 's', 'B', '\025', '\n', '\016', 'p', 'o', 'r', 't', '_', - 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', - 'B', '\001', '\"', '\220', '\002', '\n', '\014', 'T', 'c', 'p', 'K', 'e', - 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\022', 'G', '\n', '\020', 'k', - 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '_', 'p', 'r', 'o', - 'b', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', - 'l', 'u', 'e', 'R', '\017', 'k', 'e', 'e', 'p', 'a', 'l', 'i', - 'v', 'e', 'P', 'r', 'o', 'b', 'e', 's', '\022', 'C', '\n', '\016', - 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '_', 't', 'i', - 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', - 'u', 'e', 'R', '\r', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', - 'e', 'T', 'i', 'm', 'e', '\022', 'K', '\n', '\022', 'k', 'e', 'e', - 'p', 'a', 'l', 'i', 'v', 'e', '_', 'i', 'n', 't', 'e', 'r', - 'v', 'a', 'l', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', - 'l', 'u', 'e', 'R', '\021', 'k', 'e', 'e', 'p', 'a', 'l', 'i', - 'v', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', ':', '%', - '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', - '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', - '.', 'T', 'c', 'p', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', - 'e', '\"', '\261', '\001', '\n', '\022', 'E', 'x', 't', 'r', 'a', 'S', - 'o', 'u', 'r', 'c', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', - '\022', 'G', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', - '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'A', - 'd', 'd', 'r', 'e', 's', 's', 'B', '\010', '\372', 'B', '\005', '\212', - '\001', '\002', '\020', '\001', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', - 's', '\022', 'R', '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', '_', - 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', - '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', - 'n', 's', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'R', '\r', - 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', - 's', '\"', '\264', '\004', '\n', '\n', 'B', 'i', 'n', 'd', 'C', 'o', - 'n', 'f', 'i', 'g', '\022', 'J', '\n', '\016', 's', 'o', 'u', 'r', - 'c', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\001', - ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'A', 'd', - 'd', 'r', 'e', 's', 's', 'R', '\r', 's', 'o', 'u', 'r', 'c', - 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', '6', '\n', '\010', - 'f', 'r', 'e', 'e', 'b', 'i', 'n', 'd', '\030', '\002', ' ', '\001', - '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', - 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\010', 'f', 'r', 'e', 'e', - 'b', 'i', 'n', 'd', '\022', 'I', '\n', '\016', 's', 'o', 'c', 'k', - 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', - ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', - 't', 'i', 'o', 'n', 'R', '\r', 's', 'o', 'c', 'k', 'e', 't', - 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '^', '\n', '\026', 'e', - 'x', 't', 'r', 'a', '_', 's', 'o', 'u', 'r', 'c', 'e', '_', - 'a', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\030', '\005', ' ', - '\003', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'o', 'm', 'p', 'a', 't', '\022', '<', '\n', '\032', 'n', 'e', 't', + 'w', 'o', 'r', 'k', '_', 'n', 'a', 'm', 'e', 's', 'p', 'a', + 'c', 'e', '_', 'f', 'i', 'l', 'e', 'p', 'a', 't', 'h', '\030', + '\007', ' ', '\001', '(', '\t', 'R', '\030', 'n', 'e', 't', 'w', 'o', + 'r', 'k', 'N', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', 'F', + 'i', 'l', 'e', 'p', 'a', 't', 'h', '\"', '\034', '\n', '\010', 'P', + 'r', 'o', 't', 'o', 'c', 'o', 'l', '\022', '\007', '\n', '\003', 'T', + 'C', 'P', '\020', '\000', '\022', '\007', '\n', '\003', 'U', 'D', 'P', '\020', + '\001', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', + 'o', 'r', 'e', '.', 'S', 'o', 'c', 'k', 'e', 't', 'A', 'd', + 'd', 'r', 'e', 's', 's', 'B', '\025', '\n', '\016', 'p', 'o', 'r', + 't', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', + '\003', '\370', 'B', '\001', '\"', '\220', '\002', '\n', '\014', 'T', 'c', 'p', + 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\022', 'G', '\n', + '\020', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '_', 'p', + 'r', 'o', 'b', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', + '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', + 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'k', 'e', 'e', 'p', 'a', + 'l', 'i', 'v', 'e', 'P', 'r', 'o', 'b', 'e', 's', '\022', 'C', + '\n', '\016', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '_', + 't', 'i', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', + 'a', 'l', 'u', 'e', 'R', '\r', 'k', 'e', 'e', 'p', 'a', 'l', + 'i', 'v', 'e', 'T', 'i', 'm', 'e', '\022', 'K', '\n', '\022', 'k', + 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '_', 'i', 'n', 't', + 'e', 'r', 'v', 'a', 'l', '\030', '\003', ' ', '\001', '(', '\013', '2', + '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', + 'V', 'a', 'l', 'u', 'e', 'R', '\021', 'k', 'e', 'e', 'p', 'a', + 'l', 'i', 'v', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', + ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', + 'r', 'e', '.', 'T', 'c', 'p', 'K', 'e', 'e', 'p', 'a', 'l', + 'i', 'v', 'e', '\"', '\261', '\001', '\n', '\022', 'E', 'x', 't', 'r', + 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'A', 'd', 'd', 'r', 'e', + 's', 's', '\022', 'G', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', + 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', + 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 'B', '\010', '\372', 'B', + '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'a', 'd', 'd', 'r', + 'e', 's', 's', '\022', 'R', '\n', '\016', 's', 'o', 'c', 'k', 'e', + 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', + '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'E', 'x', 't', 'r', 'a', 'S', 'o', 'u', 'r', - 'c', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\024', 'e', - 'x', 't', 'r', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'A', 'd', - 'd', 'r', 'e', 's', 's', 'e', 's', '\022', 'p', '\n', '\033', 'a', - 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', '_', 's', 'o', + 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', + 'i', 'o', 'n', 's', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', + 'R', '\r', 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', + 'o', 'n', 's', '\"', '\264', '\004', '\n', '\n', 'B', 'i', 'n', 'd', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'J', '\n', '\016', 's', 'o', 'u', 'r', 'c', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', - 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '#', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', - 'e', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 'B', '\013', '\030', - '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\031', - 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'S', 'o', - 'u', 'r', 'c', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', - 's', '\022', '`', '\n', '\026', 'l', 'o', 'c', 'a', 'l', '_', 'a', - 'd', 'd', 'r', 'e', 's', 's', '_', 's', 'e', 'l', 'e', 'c', - 't', 'o', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', '*', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', - 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', - 'o', 'n', 'f', 'i', 'g', 'R', '\024', 'l', 'o', 'c', 'a', 'l', - 'A', 'd', 'd', 'r', 'e', 's', 's', 'S', 'e', 'l', 'e', 'c', - 't', 'o', 'r', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'c', 'o', 'r', 'e', '.', 'B', 'i', 'n', 'd', 'C', 'o', - 'n', 'f', 'i', 'g', '\"', '\237', '\002', '\n', '\007', 'A', 'd', 'd', - 'r', 'e', 's', 's', '\022', 'L', '\n', '\016', 's', 'o', 'c', 'k', - 'e', 't', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\001', - ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'A', 'd', - 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\r', 's', 'o', 'c', - 'k', 'e', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', '0', - '\n', '\004', 'p', 'i', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\013', - '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'P', 'i', 'p', 'e', 'H', '\000', 'R', '\004', 'p', 'i', 'p', 'e', - '\022', 'b', '\n', '\026', 'e', 'n', 'v', 'o', 'y', '_', 'i', 'n', - 't', 'e', 'r', 'n', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', - 's', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '*', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'n', 'v', 'o', - 'y', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', - 'r', 'e', 's', 's', 'H', '\000', 'R', '\024', 'e', 'n', 'v', 'o', - 'y', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', - 'r', 'e', 's', 's', ':', ' ', '\232', '\305', '\210', '\036', '\033', '\n', - '\031', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', - '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 'd', 'd', 'r', 'e', - 's', 's', 'B', '\016', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', - 's', '\022', '\003', '\370', 'B', '\001', '\"', '\246', '\001', '\n', '\t', 'C', - 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', '\022', '.', '\n', '\016', - 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'p', 'r', 'e', 'f', - 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', - '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'a', 'd', 'd', 'r', 'e', - 's', 's', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'E', '\n', '\n', - 'p', 'r', 'e', 'f', 'i', 'x', '_', 'l', 'e', 'n', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', - 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\010', - '\372', 'B', '\005', '*', '\003', '\030', '\200', '\001', 'R', '\t', 'p', 'r', - 'e', 'f', 'i', 'x', 'L', 'e', 'n', ':', '\"', '\232', '\305', '\210', - '\036', '\035', '\n', '\033', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'C', 'i', - 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'B', '\200', '\001', '\n', '\"', - 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', - 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\014', - 'A', 'd', 'd', 'r', 'e', 's', 's', 'P', 'r', 'o', 't', 'o', - 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', - 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', - 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', - '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', - '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', - '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', - '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', - 'o', '3', + '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', + 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\r', 's', 'o', 'u', + 'r', 'c', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', '6', + '\n', '\010', 'f', 'r', 'e', 'e', 'b', 'i', 'n', 'd', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', + 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\010', 'f', 'r', + 'e', 'e', 'b', 'i', 'n', 'd', '\022', 'I', '\n', '\016', 's', 'o', + 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', + '\030', '\003', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', + 'O', 'p', 't', 'i', 'o', 'n', 'R', '\r', 's', 'o', 'c', 'k', + 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '^', '\n', + '\026', 'e', 'x', 't', 'r', 'a', '_', 's', 'o', 'u', 'r', 'c', + 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\030', + '\005', ' ', '\003', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'E', 'x', 't', 'r', 'a', 'S', 'o', + 'u', 'r', 'c', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', + '\024', 'e', 'x', 't', 'r', 'a', 'S', 'o', 'u', 'r', 'c', 'e', + 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\022', 'p', '\n', + '\033', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', '_', + 's', 'o', 'u', 'r', 'c', 'e', '_', 'a', 'd', 'd', 'r', 'e', + 's', 's', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '#', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'o', + 'c', 'k', 'e', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 'B', + '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', + 'R', '\031', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', + 'S', 'o', 'u', 'r', 'c', 'e', 'A', 'd', 'd', 'r', 'e', 's', + 's', 'e', 's', '\022', '`', '\n', '\026', 'l', 'o', 'c', 'a', 'l', + '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 's', 'e', 'l', + 'e', 'c', 't', 'o', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', + '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', + 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\024', 'l', 'o', 'c', + 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'S', 'e', 'l', + 'e', 'c', 't', 'o', 'r', ':', '#', '\232', '\305', '\210', '\036', '\036', + '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'B', 'i', 'n', 'd', + 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\237', '\002', '\n', '\007', 'A', + 'd', 'd', 'r', 'e', 's', 's', '\022', 'L', '\n', '\016', 's', 'o', + 'c', 'k', 'e', 't', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', + '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', + 'A', 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\r', 's', + 'o', 'c', 'k', 'e', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', + '\022', '0', '\n', '\004', 'p', 'i', 'p', 'e', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'P', 'i', 'p', 'e', 'H', '\000', 'R', '\004', 'p', 'i', + 'p', 'e', '\022', 'b', '\n', '\026', 'e', 'n', 'v', 'o', 'y', '_', + 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'a', 'd', 'd', + 'r', 'e', 's', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '*', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'n', + 'v', 'o', 'y', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', + 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\024', 'e', 'n', + 'v', 'o', 'y', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', + 'd', 'd', 'r', 'e', 's', 's', ':', ' ', '\232', '\305', '\210', '\036', + '\033', '\n', '\031', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 'd', 'd', + 'r', 'e', 's', 's', 'B', '\016', '\n', '\007', 'a', 'd', 'd', 'r', + 'e', 's', 's', '\022', '\003', '\370', 'B', '\001', '\"', '\246', '\001', '\n', + '\t', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', '\022', '.', + '\n', '\016', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'p', 'r', + 'e', 'f', 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', + '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'a', 'd', 'd', + 'r', 'e', 's', 's', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'E', + '\n', '\n', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'l', 'e', 'n', + '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', + 'B', '\010', '\372', 'B', '\005', '*', '\003', '\030', '\200', '\001', 'R', '\t', + 'p', 'r', 'e', 'f', 'i', 'x', 'L', 'e', 'n', ':', '\"', '\232', + '\305', '\210', '\036', '\035', '\n', '\033', 'e', 'n', 'v', 'o', 'y', '.', + 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', + 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'B', '\200', '\001', + '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + 'B', '\014', 'A', 'd', 'd', 'r', 'e', 's', 's', 'P', 'r', 'o', + 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', + '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', + 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', + 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', + 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', + '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', + 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[8] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c index 22ffa31b1be..44ce89f4c41 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c @@ -26,7 +26,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[6885] = { +static const char descriptor[6847] = { '\n', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', @@ -223,384 +223,381 @@ static const char descriptor[6885] = { ':', '\002', '8', '\001', ':', '!', '\232', '\305', '\210', '\036', '\034', '\n', '\032', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'M', 'e', 't', 'a', 'd', - 'a', 't', 'a', '\"', '\206', '\001', '\n', '\r', 'R', 'u', 'n', 't', - 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', '\022', '#', '\n', - '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', - 'u', 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\014', 'd', 'e', - 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '(', - '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', - 'y', '\030', '\003', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', - 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', - 'e', 'K', 'e', 'y', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', - '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', - '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', 'i', - 'm', 'e', 'U', 'I', 'n', 't', '3', '2', '\"', 'w', '\n', '\016', - 'R', 'u', 'n', 't', 'i', 'm', 'e', 'P', 'e', 'r', 'c', 'e', - 'n', 't', '\022', ';', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', - 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', - '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', - 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', - 't', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', - 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', - 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', - 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', - 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', '\"', '\206', '\001', - '\n', '\r', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'D', 'o', 'u', - 'b', 'l', 'e', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', - 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', - '(', '\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', - 'a', 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', - 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', - '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', - 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '&', - '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', - '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', - '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'D', 'o', 'u', 'b', - 'l', 'e', '\"', '\266', '\001', '\n', '\022', 'R', 'u', 'n', 't', 'i', - 'm', 'e', 'F', 'e', 'a', 't', 'u', 'r', 'e', 'F', 'l', 'a', - 'g', '\022', 'I', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', - '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\013', - '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', - 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', - '\020', '\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', - 'a', 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', - 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', - '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', - 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '+', - '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', - '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', - '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'e', 'a', 't', - 'u', 'r', 'e', 'F', 'l', 'a', 'g', '\"', 'W', '\n', '\010', 'K', - 'e', 'y', 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\003', 'k', - 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\026', '\030', '\001', - '\372', 'B', '\010', 'r', '\006', '\020', '\001', '(', '\200', '\200', '\001', '\222', - '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\003', 'k', 'e', - 'y', '\022', '!', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', - ' ', '\001', '(', '\014', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', - '\004', '\003', '3', '.', '0', 'R', '\005', 'v', 'a', 'l', 'u', 'e', - '\"', '[', '\n', '\014', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', - 'P', 'a', 'i', 'r', '\022', '\035', '\n', '\003', 'k', 'e', 'y', '\030', - '\001', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', - '\020', '\001', '(', '\200', '\200', '\001', 'R', '\003', 'k', 'e', 'y', '\022', - ',', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', - '(', '\013', '2', '\026', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'V', 'a', 'l', - 'u', 'e', 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\"', '\365', '\002', - '\n', '\016', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'A', 'p', - 'p', 'e', 'n', 'd', '\022', ':', '\n', '\006', 'r', 'e', 'c', 'o', - 'r', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'K', 'e', 'y', 'V', - 'a', 'l', 'u', 'e', 'P', 'a', 'i', 'r', 'R', '\006', 'r', 'e', - 'c', 'o', 'r', 'd', '\022', 'I', '\n', '\005', 'e', 'n', 't', 'r', - 'y', '\030', '\001', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'K', 'e', 'y', 'V', 'a', - 'l', 'u', 'e', 'B', '\023', '\030', '\001', '\372', 'B', '\005', '\212', '\001', - '\002', '\010', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'R', '\005', 'e', 'n', 't', 'r', 'y', '\022', '[', '\n', '\006', 'a', - 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\016', '2', - '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'a', 't', 'a', '\"', '}', '\n', '\r', 'R', 'u', 'n', 't', 'i', + 'm', 'e', 'U', 'I', 'n', 't', '3', '2', '\022', '#', '\n', '\r', + 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', + 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\014', 'd', 'e', 'f', + 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '\037', '\n', + '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', + '\030', '\003', ' ', '\001', '(', '\t', 'R', '\n', 'r', 'u', 'n', 't', + 'i', 'm', 'e', 'K', 'e', 'y', ':', '&', '\232', '\305', '\210', '\036', + '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', + 't', 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', '\"', 'n', + '\n', '\016', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'P', 'e', 'r', + 'c', 'e', 'n', 't', '\022', ';', '\n', '\r', 'd', 'e', 'f', 'a', + 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', + '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', + 'e', 'n', 't', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', + 'V', 'a', 'l', 'u', 'e', '\022', '\037', '\n', '\013', 'r', 'u', 'n', + 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', + '(', '\t', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', + 'e', 'y', '\"', '}', '\n', '\r', 'R', 'u', 'n', 't', 'i', 'm', + 'e', 'D', 'o', 'u', 'b', 'l', 'e', '\022', '#', '\n', '\r', 'd', + 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', + '\030', '\001', ' ', '\001', '(', '\001', 'R', '\014', 'd', 'e', 'f', 'a', + 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '\037', '\n', '\013', + 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', + '\002', ' ', '\001', '(', '\t', 'R', '\n', 'r', 'u', 'n', 't', 'i', + 'm', 'e', 'K', 'e', 'y', ':', '&', '\232', '\305', '\210', '\036', '!', + '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', + 'i', 'm', 'e', 'D', 'o', 'u', 'b', 'l', 'e', '\"', '\255', '\001', + '\n', '\022', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'e', 'a', + 't', 'u', 'r', 'e', 'F', 'l', 'a', 'g', '\022', 'I', '\n', '\r', + 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', + 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'd', + 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', + '\037', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', + 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 'r', 'u', + 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '+', '\232', '\305', + '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 'a', + 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', + 'u', 'n', 't', 'i', 'm', 'e', 'F', 'e', 'a', 't', 'u', 'r', + 'e', 'F', 'l', 'a', 'g', '\"', 'W', '\n', '\010', 'K', 'e', 'y', + 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\003', 'k', 'e', 'y', + '\030', '\001', ' ', '\001', '(', '\t', 'B', '\026', '\030', '\001', '\372', 'B', + '\010', 'r', '\006', '\020', '\001', '(', '\200', '\200', '\001', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'R', '\003', 'k', 'e', 'y', '\022', + '!', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', + '(', '\014', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', + '3', '.', '0', 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\"', '[', + '\n', '\014', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'P', 'a', + 'i', 'r', '\022', '\035', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', + '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\020', '\001', + '(', '\200', '\200', '\001', 'R', '\003', 'k', 'e', 'y', '\022', ',', '\n', + '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\026', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'V', 'a', 'l', 'u', 'e', + 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\"', '\365', '\002', '\n', '\016', + 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'A', 'p', 'p', 'e', + 'n', 'd', '\022', ':', '\n', '\006', 'r', 'e', 'c', 'o', 'r', 'd', + '\030', '\003', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'K', 'e', 'y', 'V', 'a', 'l', + 'u', 'e', 'P', 'a', 'i', 'r', 'R', '\006', 'r', 'e', 'c', 'o', + 'r', 'd', '\022', 'I', '\n', '\005', 'e', 'n', 't', 'r', 'y', '\030', + '\001', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'K', 'e', 'y', 'V', 'a', 'l', 'u', + 'e', 'B', '\023', '\030', '\001', '\372', 'B', '\005', '\212', '\001', '\002', '\010', + '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\005', + 'e', 'n', 't', 'r', 'y', '\022', '[', '\n', '\006', 'a', 'c', 't', + 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\016', '2', '9', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'K', 'e', 'y', + 'V', 'a', 'l', 'u', 'e', 'A', 'p', 'p', 'e', 'n', 'd', '.', + 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'A', 'p', 'p', 'e', + 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', + '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'a', 'c', 't', 'i', + 'o', 'n', '\"', '\177', '\n', '\024', 'K', 'e', 'y', 'V', 'a', 'l', + 'u', 'e', 'A', 'p', 'p', 'e', 'n', 'd', 'A', 'c', 't', 'i', + 'o', 'n', '\022', '\033', '\n', '\027', 'A', 'P', 'P', 'E', 'N', 'D', + '_', 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '_', 'O', + 'R', '_', 'A', 'D', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'A', + 'D', 'D', '_', 'I', 'F', '_', 'A', 'B', 'S', 'E', 'N', 'T', + '\020', '\001', '\022', '\036', '\n', '\032', 'O', 'V', 'E', 'R', 'W', 'R', + 'I', 'T', 'E', '_', 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', + 'S', '_', 'O', 'R', '_', 'A', 'D', 'D', '\020', '\002', '\022', '\027', + '\n', '\023', 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T', 'E', '_', + 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\003', '\"', + 's', '\n', '\020', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'M', + 'u', 't', 'a', 't', 'i', 'o', 'n', '\022', '<', '\n', '\006', 'a', + 'p', 'p', 'e', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', + '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'A', 'p', 'p', 'e', 'n', - 'd', '.', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'A', 'p', - 'p', 'e', 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\010', - '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'a', 'c', - 't', 'i', 'o', 'n', '\"', '\177', '\n', '\024', 'K', 'e', 'y', 'V', - 'a', 'l', 'u', 'e', 'A', 'p', 'p', 'e', 'n', 'd', 'A', 'c', - 't', 'i', 'o', 'n', '\022', '\033', '\n', '\027', 'A', 'P', 'P', 'E', - 'N', 'D', '_', 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', - '_', 'O', 'R', '_', 'A', 'D', 'D', '\020', '\000', '\022', '\021', '\n', - '\r', 'A', 'D', 'D', '_', 'I', 'F', '_', 'A', 'B', 'S', 'E', - 'N', 'T', '\020', '\001', '\022', '\036', '\n', '\032', 'O', 'V', 'E', 'R', - 'W', 'R', 'I', 'T', 'E', '_', 'I', 'F', '_', 'E', 'X', 'I', - 'S', 'T', 'S', '_', 'O', 'R', '_', 'A', 'D', 'D', '\020', '\002', - '\022', '\027', '\n', '\023', 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T', - 'E', '_', 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '\020', - '\003', '\"', 's', '\n', '\020', 'K', 'e', 'y', 'V', 'a', 'l', 'u', - 'e', 'M', 'u', 't', 'a', 't', 'i', 'o', 'n', '\022', '<', '\n', - '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\030', '\001', ' ', '\001', '(', - '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'A', 'p', 'p', - 'e', 'n', 'd', 'R', '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\022', - '!', '\n', '\006', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\002', ' ', - '\001', '(', '\t', 'B', '\t', '\372', 'B', '\006', 'r', '\004', '(', '\200', - '\200', '\001', 'R', '\006', 'r', 'e', 'm', 'o', 'v', 'e', '\"', 'A', - '\n', '\016', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', - 'e', 't', 'e', 'r', '\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', - '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', - '\020', '\001', 'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', - 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005', - 'v', 'a', 'l', 'u', 'e', '\"', '\315', '\001', '\n', '\013', 'H', 'e', - 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '#', '\n', - '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\021', - '\372', 'B', '\016', 'r', '\014', '\020', '\001', '(', '\200', '\200', '\001', '\300', - '\001', '\001', '\310', '\001', '\000', 'R', '\003', 'k', 'e', 'y', '\022', '7', - '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', - '\t', 'B', '!', '\372', 'B', '\014', 'r', '\n', '(', '\200', '\200', '\001', - '\300', '\001', '\002', '\310', '\001', '\000', '\362', '\230', '\376', '\217', '\005', '\014', - '\022', '\n', 'v', 'a', 'l', 'u', 'e', '_', 't', 'y', 'p', 'e', - 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\022', ':', '\n', '\t', 'r', - 'a', 'w', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', - '(', '\014', 'B', '\035', '\372', 'B', '\010', 'z', '\006', '\020', '\000', '\030', - '\200', '\200', '\001', '\362', '\230', '\376', '\217', '\005', '\014', '\022', '\n', 'v', - 'a', 'l', 'u', 'e', '_', 't', 'y', 'p', 'e', 'R', '\010', 'r', - 'a', 'w', 'V', 'a', 'l', 'u', 'e', ':', '$', '\232', '\305', '\210', - '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', - 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', '\"', '\331', '\003', - '\n', '\021', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', - 'e', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'C', '\n', '\006', 'h', - 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', - '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', - 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'B', '\010', - '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\006', 'h', 'e', - 'a', 'd', 'e', 'r', '\022', '?', '\n', '\006', 'a', 'p', 'p', 'e', - 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', - 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', - '0', 'R', '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\022', 'i', '\n', - '\r', 'a', 'p', 'p', 'e', 'n', 'd', '_', 'a', 'c', 't', 'i', - 'o', 'n', '\030', '\003', ' ', '\001', '(', '\016', '2', ':', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', - 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', - 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'A', 'p', 'p', 'e', - 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', - '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\014', 'a', 'p', 'p', 'e', - 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', '\022', '(', '\n', '\020', - 'k', 'e', 'e', 'p', '_', 'e', 'm', 'p', 't', 'y', '_', 'v', - 'a', 'l', 'u', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\016', - 'k', 'e', 'e', 'p', 'E', 'm', 'p', 't', 'y', 'V', 'a', 'l', - 'u', 'e', '\"', '}', '\n', '\022', 'H', 'e', 'a', 'd', 'e', 'r', - 'A', 'p', 'p', 'e', 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', - '\022', '\033', '\n', '\027', 'A', 'P', 'P', 'E', 'N', 'D', '_', 'I', - 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '_', 'O', 'R', '_', - 'A', 'D', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'A', 'D', 'D', - '_', 'I', 'F', '_', 'A', 'B', 'S', 'E', 'N', 'T', '\020', '\001', - '\022', '\036', '\n', '\032', 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T', - 'E', '_', 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '_', - 'O', 'R', '_', 'A', 'D', 'D', '\020', '\002', '\022', '\027', '\n', '\023', - 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T', 'E', '_', 'I', 'F', - '_', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\003', ':', '*', '\232', - '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', - 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', + 'd', 'R', '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\022', '!', '\n', + '\006', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\002', ' ', '\001', '(', + '\t', 'B', '\t', '\372', 'B', '\006', 'r', '\004', '(', '\200', '\200', '\001', + 'R', '\006', 'r', 'e', 'm', 'o', 'v', 'e', '\"', 'A', '\n', '\016', + 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', + 'e', 'r', '\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', + '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', + 'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', + 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005', 'v', 'a', + 'l', 'u', 'e', '\"', '\315', '\001', '\n', '\013', 'H', 'e', 'a', 'd', + 'e', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '#', '\n', '\003', 'k', + 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\021', '\372', 'B', + '\016', 'r', '\014', '\020', '\001', '(', '\200', '\200', '\001', '\300', '\001', '\001', + '\310', '\001', '\000', 'R', '\003', 'k', 'e', 'y', '\022', '7', '\n', '\005', + 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'B', + '!', '\372', 'B', '\014', 'r', '\n', '(', '\200', '\200', '\001', '\300', '\001', + '\002', '\310', '\001', '\000', '\362', '\230', '\376', '\217', '\005', '\014', '\022', '\n', + 'v', 'a', 'l', 'u', 'e', '_', 't', 'y', 'p', 'e', 'R', '\005', + 'v', 'a', 'l', 'u', 'e', '\022', ':', '\n', '\t', 'r', 'a', 'w', + '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\014', + 'B', '\035', '\372', 'B', '\010', 'z', '\006', '\020', '\000', '\030', '\200', '\200', + '\001', '\362', '\230', '\376', '\217', '\005', '\014', '\022', '\n', 'v', 'a', 'l', + 'u', 'e', '_', 't', 'y', 'p', 'e', 'R', '\010', 'r', 'a', 'w', + 'V', 'a', 'l', 'u', 'e', ':', '$', '\232', '\305', '\210', '\036', '\037', + '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'd', + 'e', 'r', 'V', 'a', 'l', 'u', 'e', '\"', '\331', '\003', '\n', '\021', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', - 'p', 't', 'i', 'o', 'n', '\"', 'l', '\n', '\t', 'H', 'e', 'a', - 'd', 'e', 'r', 'M', 'a', 'p', '\022', ';', '\n', '\007', 'h', 'e', - 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', - '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', - 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'R', '\007', - 'h', 'e', 'a', 'd', 'e', 'r', 's', ':', '\"', '\232', '\305', '\210', - '\036', '\035', '\n', '\033', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'p', 't', 'i', 'o', 'n', '\022', 'C', '\n', '\006', 'h', 'e', 'a', + 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', + 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', + '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\006', 'h', 'e', 'a', 'd', + 'e', 'r', '\022', '?', '\n', '\006', 'a', 'p', 'p', 'e', 'n', 'd', + '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\013', + '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', + '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\022', 'i', '\n', '\r', 'a', + 'p', 'p', 'e', 'n', 'd', '_', 'a', 'c', 't', 'i', 'o', 'n', + '\030', '\003', ' ', '\001', '(', '\016', '2', ':', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', + 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', '.', + 'H', 'e', 'a', 'd', 'e', 'r', 'A', 'p', 'p', 'e', 'n', 'd', + 'A', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', + '\001', '\002', '\020', '\001', 'R', '\014', 'a', 'p', 'p', 'e', 'n', 'd', + 'A', 'c', 't', 'i', 'o', 'n', '\022', '(', '\n', '\020', 'k', 'e', + 'e', 'p', '_', 'e', 'm', 'p', 't', 'y', '_', 'v', 'a', 'l', + 'u', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\016', 'k', 'e', + 'e', 'p', 'E', 'm', 'p', 't', 'y', 'V', 'a', 'l', 'u', 'e', + '\"', '}', '\n', '\022', 'H', 'e', 'a', 'd', 'e', 'r', 'A', 'p', + 'p', 'e', 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\033', + '\n', '\027', 'A', 'P', 'P', 'E', 'N', 'D', '_', 'I', 'F', '_', + 'E', 'X', 'I', 'S', 'T', 'S', '_', 'O', 'R', '_', 'A', 'D', + 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'A', 'D', 'D', '_', 'I', + 'F', '_', 'A', 'B', 'S', 'E', 'N', 'T', '\020', '\001', '\022', '\036', + '\n', '\032', 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T', 'E', '_', + 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '_', 'O', 'R', + '_', 'A', 'D', 'D', '\020', '\002', '\022', '\027', '\n', '\023', 'O', 'V', + 'E', 'R', 'W', 'R', 'I', 'T', 'E', '_', 'I', 'F', '_', 'E', + 'X', 'I', 'S', 'T', 'S', '\020', '\003', ':', '*', '\232', '\305', '\210', + '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', - 'a', 'd', 'e', 'r', 'M', 'a', 'p', '\"', '/', '\n', '\020', 'W', - 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', - 'o', 'r', 'y', '\022', '\033', '\n', '\004', 'p', 'a', 't', 'h', '\030', - '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', - '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\"', '\311', '\002', '\n', - '\n', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', - '%', '\n', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\030', - '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', - '\020', '\001', 'H', '\000', 'R', '\010', 'f', 'i', 'l', 'e', 'n', 'a', - 'm', 'e', '\022', '#', '\n', '\014', 'i', 'n', 'l', 'i', 'n', 'e', - '_', 'b', 'y', 't', 'e', 's', '\030', '\002', ' ', '\001', '(', '\014', - 'H', '\000', 'R', '\013', 'i', 'n', 'l', 'i', 'n', 'e', 'B', 'y', - 't', 'e', 's', '\022', '%', '\n', '\r', 'i', 'n', 'l', 'i', 'n', - 'e', '_', 's', 't', 'r', 'i', 'n', 'g', '\030', '\003', ' ', '\001', - '(', '\t', 'H', '\000', 'R', '\014', 'i', 'n', 'l', 'i', 'n', 'e', - 'S', 't', 'r', 'i', 'n', 'g', '\022', '<', '\n', '\024', 'e', 'n', - 'v', 'i', 'r', 'o', 'n', 'm', 'e', 'n', 't', '_', 'v', 'a', - 'r', 'i', 'a', 'b', 'l', 'e', '\030', '\004', ' ', '\001', '(', '\t', - 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', - '\023', 'e', 'n', 'v', 'i', 'r', 'o', 'n', 'm', 'e', 'n', 't', - 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', '\022', 'S', '\n', '\021', - 'w', 'a', 't', 'c', 'h', 'e', 'd', '_', 'd', 'i', 'r', 'e', - 'c', 't', 'o', 'r', 'y', '\030', '\005', ' ', '\001', '(', '\013', '2', - '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'W', - 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', - 'o', 'r', 'y', 'R', '\020', 'w', 'a', 't', 'c', 'h', 'e', 'd', - 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', ':', '#', '\232', - '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', - 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', - 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\020', - '\n', '\t', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', - '\003', '\370', 'B', '\001', '\"', '\356', '\005', '\n', '\013', 'R', 'e', 't', - 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'K', '\n', '\016', - 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', 'c', 'k', '_', 'o', - 'f', 'f', '\030', '\001', ' ', '\001', '(', '\013', '2', '%', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'B', 'a', 'c', 'k', - 'o', 'f', 'f', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', 'R', - '\014', 'r', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', - 'f', '\022', 'R', '\n', '\013', 'n', 'u', 'm', '_', 'r', 'e', 't', - 'r', 'i', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'B', '\023', '\362', '\230', '\376', '\217', '\005', '\r', - '\n', '\013', 'm', 'a', 'x', '_', 'r', 'e', 't', 'r', 'i', 'e', - 's', 'R', '\n', 'n', 'u', 'm', 'R', 'e', 't', 'r', 'i', 'e', - 's', '\022', '\031', '\n', '\010', 'r', 'e', 't', 'r', 'y', '_', 'o', - 'n', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 't', - 'r', 'y', 'O', 'n', '\022', 'V', '\n', '\016', 'r', 'e', 't', 'r', - 'y', '_', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\004', - ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', - 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', - 'o', 'r', 'i', 't', 'y', 'R', '\r', 'r', 'e', 't', 'r', 'y', - 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', 'f', '\n', '\024', - 'r', 'e', 't', 'r', 'y', '_', 'h', 'o', 's', 't', '_', 'p', - 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\005', ' ', '\003', - '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', + 'i', 'o', 'n', '\"', 'l', '\n', '\t', 'H', 'e', 'a', 'd', 'e', + 'r', 'M', 'a', 'p', '\022', ';', '\n', '\007', 'h', 'e', 'a', 'd', + 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '!', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', + 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'h', 'e', + 'a', 'd', 'e', 'r', 's', ':', '\"', '\232', '\305', '\210', '\036', '\035', + '\n', '\033', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'd', + 'e', 'r', 'M', 'a', 'p', '\"', '/', '\n', '\020', 'W', 'a', 't', + 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', + 'y', '\022', '\033', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', + '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', + 'R', '\004', 'p', 'a', 't', 'h', '\"', '\311', '\002', '\n', '\n', 'D', + 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '%', '\n', + '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', + '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', + 'H', '\000', 'R', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', + '\022', '#', '\n', '\014', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'b', + 'y', 't', 'e', 's', '\030', '\002', ' ', '\001', '(', '\014', 'H', '\000', + 'R', '\013', 'i', 'n', 'l', 'i', 'n', 'e', 'B', 'y', 't', 'e', + 's', '\022', '%', '\n', '\r', 'i', 'n', 'l', 'i', 'n', 'e', '_', + 's', 't', 'r', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\t', + 'H', '\000', 'R', '\014', 'i', 'n', 'l', 'i', 'n', 'e', 'S', 't', + 'r', 'i', 'n', 'g', '\022', '<', '\n', '\024', 'e', 'n', 'v', 'i', + 'r', 'o', 'n', 'm', 'e', 'n', 't', '_', 'v', 'a', 'r', 'i', + 'a', 'b', 'l', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'B', '\007', + '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\023', 'e', + 'n', 'v', 'i', 'r', 'o', 'n', 'm', 'e', 'n', 't', 'V', 'a', + 'r', 'i', 'a', 'b', 'l', 'e', '\022', 'S', '\n', '\021', 'w', 'a', + 't', 'c', 'h', 'e', 'd', '_', 'd', 'i', 'r', 'e', 'c', 't', + 'o', 'r', 'y', '\030', '\005', ' ', '\001', '(', '\013', '2', '&', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'W', 'a', 't', + 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', + 'y', 'R', '\020', 'w', 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', + 'r', 'e', 'c', 't', 'o', 'r', 'y', ':', '#', '\232', '\305', '\210', + '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'D', 'a', + 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\020', '\n', '\t', + 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', + 'B', '\001', '\"', '\356', '\005', '\n', '\013', 'R', 'e', 't', 'r', 'y', + 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'K', '\n', '\016', 'r', 'e', + 't', 'r', 'y', '_', 'b', 'a', 'c', 'k', '_', 'o', 'f', 'f', + '\030', '\001', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'B', 'a', 'c', 'k', 'o', 'f', + 'f', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', 'R', '\014', 'r', + 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', + 'R', '\n', '\013', 'n', 'u', 'm', '_', 'r', 'e', 't', 'r', 'i', + 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', + 'u', 'e', 'B', '\023', '\362', '\230', '\376', '\217', '\005', '\r', '\n', '\013', + 'm', 'a', 'x', '_', 'r', 'e', 't', 'r', 'i', 'e', 's', 'R', + '\n', 'n', 'u', 'm', 'R', 'e', 't', 'r', 'i', 'e', 's', '\022', + '\031', '\n', '\010', 'r', 'e', 't', 'r', 'y', '_', 'o', 'n', '\030', + '\003', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 't', 'r', 'y', + 'O', 'n', '\022', 'V', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', + 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\004', ' ', '\001', + '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', - 'y', '.', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', - 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'R', '\022', 'r', 'e', - 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '\022', 'H', '\n', '!', 'h', 'o', 's', 't', - '_', 's', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '_', 'r', - 'e', 't', 'r', 'y', '_', 'm', 'a', 'x', '_', 'a', 't', 't', - 'e', 'm', 'p', 't', 's', '\030', '\006', ' ', '\001', '(', '\003', 'R', - '\035', 'h', 'o', 's', 't', 'S', 'e', 'l', 'e', 'c', 't', 'i', - 'o', 'n', 'R', 'e', 't', 'r', 'y', 'M', 'a', 'x', 'A', 't', - 't', 'e', 'm', 'p', 't', 's', '\032', 'v', '\n', '\r', 'R', 'e', - 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', - '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', - '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', - 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', - 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', - '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', - 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', - 'f', 'i', 'g', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', - 'g', '_', 't', 'y', 'p', 'e', '\032', '{', '\n', '\022', 'R', 'e', - 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', - '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', - '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', - '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', - 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', - 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\r', '\n', '\013', - 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', ':', - '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', + 'y', '.', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', + 'i', 't', 'y', 'R', '\r', 'r', 'e', 't', 'r', 'y', 'P', 'r', + 'i', 'o', 'r', 'i', 't', 'y', '\022', 'f', '\n', '\024', 'r', 'e', + 't', 'r', 'y', '_', 'h', 'o', 's', 't', '_', 'p', 'r', 'e', + 'd', 'i', 'c', 'a', 't', 'e', '\030', '\005', ' ', '\003', '(', '\013', + '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', + 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', + 'd', 'i', 'c', 'a', 't', 'e', 'R', '\022', 'r', 'e', 't', 'r', + 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', + 't', 'e', '\022', 'H', '\n', '!', 'h', 'o', 's', 't', '_', 's', + 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '_', 'r', 'e', 't', + 'r', 'y', '_', 'm', 'a', 'x', '_', 'a', 't', 't', 'e', 'm', + 'p', 't', 's', '\030', '\006', ' ', '\001', '(', '\003', 'R', '\035', 'h', + 'o', 's', 't', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', + 'R', 'e', 't', 'r', 'y', 'M', 'a', 'x', 'A', 't', 't', 'e', + 'm', 'p', 't', 's', '\032', 'v', '\n', '\r', 'R', 'e', 't', 'r', + 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', '\033', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', + 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', + 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', + 'g', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', + 't', 'y', 'p', 'e', '\032', '{', '\n', '\022', 'R', 'e', 't', 'r', + 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', + 't', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', + ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', + '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', + 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', + 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\r', '\n', '\013', 'c', 'o', + 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', ':', '$', '\232', + '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', + 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', + 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\"', + '\350', '\001', '\n', '\020', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', + 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', 'B', '\n', '\010', + 'h', 't', 't', 'p', '_', 'u', 'r', 'i', '\030', '\001', ' ', '\001', + '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'H', 't', 't', 'p', 'U', 'r', 'i', 'B', '\010', '\372', + 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'h', 't', 't', + 'p', 'U', 'r', 'i', '\022', '\037', '\n', '\006', 's', 'h', 'a', '2', + '5', '6', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', + '\004', 'r', '\002', '\020', '\001', 'R', '\006', 's', 'h', 'a', '2', '5', + '6', '\022', 'D', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', 'p', + 'o', 'l', 'i', 'c', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', + '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', + 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', + 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', ':', + ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', - 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', - 'y', '\"', '\350', '\001', '\n', '\020', 'R', 'e', 'm', 'o', 't', 'e', - 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', 'B', - '\n', '\010', 'h', 't', 't', 'p', '_', 'u', 'r', 'i', '\030', '\001', - ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'H', 't', 't', 'p', 'U', 'r', 'i', 'B', - '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'h', - 't', 't', 'p', 'U', 'r', 'i', '\022', '\037', '\n', '\006', 's', 'h', - 'a', '2', '5', '6', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', - '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\006', 's', 'h', 'a', - '2', '5', '6', '\022', 'D', '\n', '\014', 'r', 'e', 't', 'r', 'y', - '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\003', ' ', '\001', '(', - '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', - 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', - 'y', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', - 'o', 'r', 'e', '.', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', - 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\"', '\311', '\001', '\n', - '\017', 'A', 's', 'y', 'n', 'c', 'D', 'a', 't', 'a', 'S', 'o', - 'u', 'r', 'c', 'e', '\022', '8', '\n', '\005', 'l', 'o', 'c', 'a', - 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', - 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\005', 'l', 'o', 'c', - 'a', 'l', '\022', '@', '\n', '\006', 'r', 'e', 'm', 'o', 't', 'e', - '\030', '\002', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'R', 'e', 'm', 'o', 't', 'e', - 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', - 'R', '\006', 'r', 'e', 'm', 'o', 't', 'e', ':', '(', '\232', '\305', - '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', + 'e', '.', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', 't', 'a', + 'S', 'o', 'u', 'r', 'c', 'e', '\"', '\311', '\001', '\n', '\017', 'A', 's', 'y', 'n', 'c', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', - 'c', 'e', 'B', '\020', '\n', '\t', 's', 'p', 'e', 'c', 'i', 'f', - 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\260', '\001', '\n', - '\017', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', - 'c', 'k', 'e', 't', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', - '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', - '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', - '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', - 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', - 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '(', '\232', '\305', - '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'T', + 'c', 'e', '\022', '8', '\n', '\005', 'l', 'o', 'c', 'a', 'l', '\030', + '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', + 'r', 'c', 'e', 'H', '\000', 'R', '\005', 'l', 'o', 'c', 'a', 'l', + '\022', '@', '\n', '\006', 'r', 'e', 'm', 'o', 't', 'e', '\030', '\002', + ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', + 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\006', + 'r', 'e', 'm', 'o', 't', 'e', ':', '(', '\232', '\305', '\210', '\036', + '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 's', 'y', + 'n', 'c', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', + 'B', '\020', '\n', '\t', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', + 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\260', '\001', '\n', '\017', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', - 'e', 't', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', - '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', - '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\277', '\001', '\n', '\030', - 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', - 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', - '\022', 'O', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', - 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', - ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', - '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', - 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'B', '\010', '\372', - 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'd', 'e', 'f', - 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '\037', '\n', - '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', - '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 'r', 'u', 'n', 't', - 'i', 'm', 'e', 'K', 'e', 'y', ':', '1', '\232', '\305', '\210', '\036', - ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', - 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', - 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\"', 'U', '\n', - '\014', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', - 'e', '\022', '\036', '\n', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', - 'i', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 'i', - 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', ':', '%', '\232', - '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', - 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', - 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', - '*', '(', '\n', '\017', 'R', 'o', 'u', 't', 'i', 'n', 'g', 'P', - 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', '\013', '\n', '\007', 'D', - 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\010', '\n', '\004', - 'H', 'I', 'G', 'H', '\020', '\001', '*', '\211', '\001', '\n', '\r', 'R', - 'e', 'q', 'u', 'e', 's', 't', 'M', 'e', 't', 'h', 'o', 'd', - '\022', '\026', '\n', '\022', 'M', 'E', 'T', 'H', 'O', 'D', '_', 'U', - 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', - '\022', '\007', '\n', '\003', 'G', 'E', 'T', '\020', '\001', '\022', '\010', '\n', - '\004', 'H', 'E', 'A', 'D', '\020', '\002', '\022', '\010', '\n', '\004', 'P', - 'O', 'S', 'T', '\020', '\003', '\022', '\007', '\n', '\003', 'P', 'U', 'T', - '\020', '\004', '\022', '\n', '\n', '\006', 'D', 'E', 'L', 'E', 'T', 'E', - '\020', '\005', '\022', '\013', '\n', '\007', 'C', 'O', 'N', 'N', 'E', 'C', - 'T', '\020', '\006', '\022', '\013', '\n', '\007', 'O', 'P', 'T', 'I', 'O', - 'N', 'S', '\020', '\007', '\022', '\t', '\n', '\005', 'T', 'R', 'A', 'C', - 'E', '\020', '\010', '\022', '\t', '\n', '\005', 'P', 'A', 'T', 'C', 'H', - '\020', '\t', '*', '>', '\n', '\020', 'T', 'r', 'a', 'f', 'f', 'i', - 'c', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\017', - '\n', '\013', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', - 'D', '\020', '\000', '\022', '\013', '\n', '\007', 'I', 'N', 'B', 'O', 'U', - 'N', 'D', '\020', '\001', '\022', '\014', '\n', '\010', 'O', 'U', 'T', 'B', - 'O', 'U', 'N', 'D', '\020', '\002', 'B', '}', '\n', '\"', 'i', 'o', - '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\t', 'B', 'a', - 's', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', - 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', - 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', - 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', - 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', - 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', - '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'e', 't', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', + ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', + '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', + 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', + 'C', 'o', 'n', 'f', 'i', 'g', ':', '(', '\232', '\305', '\210', '\036', + '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'T', 'r', 'a', + 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', + 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', + 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', + 'o', 'n', 'f', 'i', 'g', '\"', '\277', '\001', '\n', '\030', 'R', 'u', + 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', + 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', 'O', + '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', + 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', + 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', + '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', + 'P', 'e', 'r', 'c', 'e', 'n', 't', 'B', '\010', '\372', 'B', '\005', + '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', + 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '\037', '\n', '\013', 'r', + 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', + ' ', '\001', '(', '\t', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', + 'e', 'K', 'e', 'y', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', + '*', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', + '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', 'i', + 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', + 'P', 'e', 'r', 'c', 'e', 'n', 't', '\"', 'U', '\n', '\014', 'C', + 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', '\022', + '\036', '\n', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', + 'r', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 'i', 'd', 'e', + 'n', 't', 'i', 'f', 'i', 'e', 'r', ':', '%', '\232', '\305', '\210', + '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'C', 'o', + 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', '*', '(', + '\n', '\017', 'R', 'o', 'u', 't', 'i', 'n', 'g', 'P', 'r', 'i', + 'o', 'r', 'i', 't', 'y', '\022', '\013', '\n', '\007', 'D', 'E', 'F', + 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\010', '\n', '\004', 'H', 'I', + 'G', 'H', '\020', '\001', '*', '\211', '\001', '\n', '\r', 'R', 'e', 'q', + 'u', 'e', 's', 't', 'M', 'e', 't', 'h', 'o', 'd', '\022', '\026', + '\n', '\022', 'M', 'E', 'T', 'H', 'O', 'D', '_', 'U', 'N', 'S', + 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '\007', + '\n', '\003', 'G', 'E', 'T', '\020', '\001', '\022', '\010', '\n', '\004', 'H', + 'E', 'A', 'D', '\020', '\002', '\022', '\010', '\n', '\004', 'P', 'O', 'S', + 'T', '\020', '\003', '\022', '\007', '\n', '\003', 'P', 'U', 'T', '\020', '\004', + '\022', '\n', '\n', '\006', 'D', 'E', 'L', 'E', 'T', 'E', '\020', '\005', + '\022', '\013', '\n', '\007', 'C', 'O', 'N', 'N', 'E', 'C', 'T', '\020', + '\006', '\022', '\013', '\n', '\007', 'O', 'P', 'T', 'I', 'O', 'N', 'S', + '\020', '\007', '\022', '\t', '\n', '\005', 'T', 'R', 'A', 'C', 'E', '\020', + '\010', '\022', '\t', '\n', '\005', 'P', 'A', 'T', 'C', 'H', '\020', '\t', + '*', '>', '\n', '\020', 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'D', + 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\017', '\n', '\013', + 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', + '\000', '\022', '\013', '\n', '\007', 'I', 'N', 'B', 'O', 'U', 'N', 'D', + '\020', '\001', '\022', '\014', '\n', '\010', 'O', 'U', 'T', 'B', 'O', 'U', + 'N', 'D', '\020', '\002', 'B', '}', '\n', '\"', 'i', 'o', '.', 'e', + 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', 'B', '\t', 'B', 'a', 's', 'e', + 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', + 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', + 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', + 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', + 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', + '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', + 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', + '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[15] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c new file mode 100644 index 00000000000..5f98e2c6d6f --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c @@ -0,0 +1,63 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/core/v3/cel.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + +#include "upb/reflection/def.h" +#include "envoy/config/core/v3/cel.upbdefs.h" +#include "envoy/config/core/v3/cel.upb_minitable.h" + +extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; + +static const char descriptor[407] = { + '\n', '\036', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', + 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', + 'e', 'l', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '\032', '\035', 'u', 'd', 'p', 'a', + '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', + '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', + 'o', '\"', '\271', '\001', '\n', '\023', 'C', 'e', 'l', 'E', 'x', 'p', + 'r', 'e', 's', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', '8', '\n', '\030', 'e', 'n', 'a', 'b', 'l', 'e', '_', + 's', 't', 'r', 'i', 'n', 'g', '_', 'c', 'o', 'n', 'v', 'e', + 'r', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\010', 'R', + '\026', 'e', 'n', 'a', 'b', 'l', 'e', 'S', 't', 'r', 'i', 'n', + 'g', 'C', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\022', + '0', '\n', '\024', 'e', 'n', 'a', 'b', 'l', 'e', '_', 's', 't', + 'r', 'i', 'n', 'g', '_', 'c', 'o', 'n', 'c', 'a', 't', '\030', + '\002', ' ', '\001', '(', '\010', 'R', '\022', 'e', 'n', 'a', 'b', 'l', + 'e', 'S', 't', 'r', 'i', 'n', 'g', 'C', 'o', 'n', 'c', 'a', + 't', '\022', '6', '\n', '\027', 'e', 'n', 'a', 'b', 'l', 'e', '_', + 's', 't', 'r', 'i', 'n', 'g', '_', 'f', 'u', 'n', 'c', 't', + 'i', 'o', 'n', 's', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\025', + 'e', 'n', 'a', 'b', 'l', 'e', 'S', 't', 'r', 'i', 'n', 'g', + 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', 'B', '|', '\n', + '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', + '\010', 'C', 'e', 'l', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', + 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', + 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', + 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', + 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', + 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', + ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', + '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', +}; + +static _upb_DefPool_Init *deps[2] = { + &udpa_annotations_status_proto_upbdefinit, + NULL, +}; + +_upb_DefPool_Init envoy_config_core_v3_cel_proto_upbdefinit = { + deps, + &envoy_config_core_v3_cel_proto_upb_file_layout, + "envoy/config/core/v3/cel.proto", + UPB_STRINGVIEW_INIT(descriptor, sizeof(descriptor)), +}; diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h new file mode 100644 index 00000000000..35651cd45f5 --- /dev/null +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h @@ -0,0 +1,37 @@ +/* This file was generated by upb_generator from the input file: + * + * envoy/config/core/v3/cel.proto + * + * Do not edit -- your changes will be discarded when the file is + * regenerated. + * NO CHECKED-IN PROTOBUF GENCODE */ + + + +#ifndef ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPBDEFS_H_ +#define ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPBDEFS_H_ + +#include "upb/reflection/def.h" +#include "upb/reflection/internal/def_pool.h" + +#include "upb/port/def.inc" + +#ifdef __cplusplus +extern "C" { +#endif + +extern _upb_DefPool_Init envoy_config_core_v3_cel_proto_upbdefinit; + +UPB_INLINE const upb_MessageDef *envoy_config_core_v3_CelExpressionConfig_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_cel_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.CelExpressionConfig"); +} + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#include "upb/port/undef.inc" + +#endif /* ENVOY_CONFIG_CORE_V3_CEL_PROTO_UPB_H__UPBDEFS_H_ */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c index 925753e6333..5a1675d5b3b 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c @@ -22,7 +22,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[5030] = { +static const char descriptor[5192] = { '\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', @@ -54,7 +54,7 @@ static const char descriptor[5030] = { 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', - '\241', '#', '\n', '\013', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', + '\303', '$', '\n', '\013', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\022', 'L', '\n', '\n', 'e', 'n', 'v', 'o', 'y', '_', 'g', 'r', 'p', 'c', '\030', '\001', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', @@ -115,7 +115,7 @@ static const char descriptor[5030] = { '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'E', 'n', 'v', 'o', - 'y', 'G', 'r', 'p', 'c', '\032', '\372', '\034', '\n', '\n', 'G', 'o', + 'y', 'G', 'r', 'p', 'c', '\032', '\234', '\036', '\n', '\n', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '\022', '&', '\n', '\n', 't', 'a', 'r', 'g', 'e', 't', '_', 'u', 'r', 'i', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', @@ -129,7 +129,14 @@ static const char descriptor[5030] = { 'r', 'p', 'c', '.', 'C', 'h', 'a', 'n', 'n', 'e', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'R', '\022', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'C', 'r', 'e', 'd', 'e', - 'n', 't', 'i', 'a', 'l', 's', '\022', 'g', '\n', '\020', 'c', 'a', + 'n', 't', 'i', 'a', 'l', 's', '\022', 'R', '\n', '\032', 'c', 'h', + 'a', 'n', 'n', 'e', 'l', '_', 'c', 'r', 'e', 'd', 'e', 'n', + 't', 'i', 'a', 'l', 's', '_', 'p', 'l', 'u', 'g', 'i', 'n', + '\030', '\t', ' ', '\003', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'A', 'n', 'y', 'R', '\030', 'c', 'h', 'a', 'n', 'n', 'e', + 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', + 'P', 'l', 'u', 'g', 'i', 'n', '\022', 'g', '\n', '\020', 'c', 'a', 'l', 'l', '_', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', @@ -138,311 +145,317 @@ static const char descriptor[5030] = { 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'R', '\017', 'c', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', - 'a', 'l', 's', '\022', '(', '\n', '\013', 's', 't', 'a', 't', '_', - 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\004', ' ', '\001', '(', '\t', - 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 's', - 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', '8', '\n', - '\030', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', - '_', 'f', 'a', 'c', 't', 'o', 'r', 'y', '_', 'n', 'a', 'm', - 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\026', 'c', 'r', 'e', - 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'F', 'a', 'c', 't', - 'o', 'r', 'y', 'N', 'a', 'm', 'e', '\022', '/', '\n', '\006', 'c', - 'o', 'n', 'f', 'i', 'g', '\030', '\006', ' ', '\001', '(', '\013', '2', - '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', - 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\022', '^', '\n', '\035', - 'p', 'e', 'r', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'b', - 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', - 'b', 'y', 't', 'e', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', - 'V', 'a', 'l', 'u', 'e', 'R', '\031', 'p', 'e', 'r', 'S', 't', - 'r', 'e', 'a', 'm', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', - 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\022', '[', '\n', '\014', - 'c', 'h', 'a', 'n', 'n', 'e', 'l', '_', 'a', 'r', 'g', 's', - '\030', '\010', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', - 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', - 'G', 'r', 'p', 'c', '.', 'C', 'h', 'a', 'n', 'n', 'e', 'l', - 'A', 'r', 'g', 's', 'R', '\013', 'c', 'h', 'a', 'n', 'n', 'e', - 'l', 'A', 'r', 'g', 's', '\032', '\235', '\002', '\n', '\016', 'S', 's', - 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', - '\022', '?', '\n', '\n', 'r', 'o', 'o', 't', '_', 'c', 'e', 'r', - 't', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', - 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'r', 'o', 'o', 't', - 'C', 'e', 'r', 't', 's', '\022', 'I', '\n', '\013', 'p', 'r', 'i', - 'v', 'a', 't', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', + 'a', 'l', 's', '\022', 'L', '\n', '\027', 'c', 'a', 'l', 'l', '_', + 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '_', + 'p', 'l', 'u', 'g', 'i', 'n', '\030', '\n', ' ', '\003', '(', '\013', + '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\025', + 'c', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', + 'a', 'l', 's', 'P', 'l', 'u', 'g', 'i', 'n', '\022', '(', '\n', + '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', + '\030', '\004', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', + '\002', '\020', '\001', 'R', '\n', 's', 't', 'a', 't', 'P', 'r', 'e', + 'f', 'i', 'x', '\022', '8', '\n', '\030', 'c', 'r', 'e', 'd', 'e', + 'n', 't', 'i', 'a', 'l', 's', '_', 'f', 'a', 'c', 't', 'o', + 'r', 'y', '_', 'n', 'a', 'm', 'e', '\030', '\005', ' ', '\001', '(', + '\t', 'R', '\026', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', + 'l', 's', 'F', 'a', 'c', 't', 'o', 'r', 'y', 'N', 'a', 'm', + 'e', '\022', '/', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '\006', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'S', 't', 'r', 'u', 'c', 't', 'R', '\006', 'c', 'o', 'n', 'f', + 'i', 'g', '\022', '^', '\n', '\035', 'p', 'e', 'r', '_', 's', 't', + 'r', 'e', 'a', 'm', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', + 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030', + '\007', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', + '\031', 'p', 'e', 'r', 'S', 't', 'r', 'e', 'a', 'm', 'B', 'u', + 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', + 'e', 's', '\022', '[', '\n', '\014', 'c', 'h', 'a', 'n', 'n', 'e', + 'l', '_', 'a', 'r', 'g', 's', '\030', '\010', ' ', '\001', '(', '\013', + '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', + 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', + 'h', 'a', 'n', 'n', 'e', 'l', 'A', 'r', 'g', 's', 'R', '\013', + 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'A', 'r', 'g', 's', '\032', + '\235', '\002', '\n', '\016', 'S', 's', 'l', 'C', 'r', 'e', 'd', 'e', + 'n', 't', 'i', 'a', 'l', 's', '\022', '?', '\n', '\n', 'r', 'o', + 'o', 't', '_', 'c', 'e', 'r', 't', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', - 'B', '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\n', 'p', 'r', - 'i', 'v', 'a', 't', 'e', 'K', 'e', 'y', '\022', '?', '\n', '\n', - 'c', 'e', 'r', 't', '_', 'c', 'h', 'a', 'i', 'n', '\030', '\003', - ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', - 'c', 'e', 'R', '\t', 'c', 'e', 'r', 't', 'C', 'h', 'a', 'i', - 'n', ':', '>', '\232', '\305', '\210', '\036', '9', '\n', '7', 'e', 'n', + 'R', '\t', 'r', 'o', 'o', 't', 'C', 'e', 'r', 't', 's', '\022', + 'I', '\n', '\013', 'p', 'r', 'i', 'v', 'a', 't', 'e', '_', 'k', + 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', + 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\006', '\270', '\267', '\213', '\244', + '\002', '\001', 'R', '\n', 'p', 'r', 'i', 'v', 'a', 't', 'e', 'K', + 'e', 'y', '\022', '?', '\n', '\n', 'c', 'e', 'r', 't', '_', 'c', + 'h', 'a', 'i', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', ' ', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', + 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'c', 'e', + 'r', 't', 'C', 'h', 'a', 'i', 'n', ':', '>', '\232', '\305', '\210', + '\036', '9', '\n', '7', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', + 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', + 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'S', 's', 'l', + 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\032', + '`', '\n', '\026', 'G', 'o', 'o', 'g', 'l', 'e', 'L', 'o', 'c', + 'a', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', + 's', ':', 'F', '\232', '\305', '\210', '\036', 'A', '\n', '?', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', - 'p', 'c', '.', 'S', 's', 'l', 'C', 'r', 'e', 'd', 'e', 'n', - 't', 'i', 'a', 'l', 's', '\032', '`', '\n', '\026', 'G', 'o', 'o', - 'g', 'l', 'e', 'L', 'o', 'c', 'a', 'l', 'C', 'r', 'e', 'd', - 'e', 'n', 't', 'i', 'a', 'l', 's', ':', 'F', '\232', '\305', '\210', - '\036', 'A', '\n', '?', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', - 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', - 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'G', 'o', 'o', - 'g', 'l', 'e', 'L', 'o', 'c', 'a', 'l', 'C', 'r', 'e', 'd', - 'e', 'n', 't', 'i', 'a', 'l', 's', '\032', '\222', '\003', '\n', '\022', - 'C', 'h', 'a', 'n', 'n', 'e', 'l', 'C', 'r', 'e', 'd', 'e', - 'n', 't', 'i', 'a', 'l', 's', '\022', 'f', '\n', '\017', 's', 's', - 'l', '_', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', - 's', '\030', '\001', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', - 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', - 'e', 'G', 'r', 'p', 'c', '.', 'S', 's', 'l', 'C', 'r', 'e', - 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'H', '\000', 'R', '\016', - 's', 's', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', - 'l', 's', '\022', '?', '\n', '\016', 'g', 'o', 'o', 'g', 'l', 'e', - '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '\002', ' ', '\001', + 'p', 'c', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'L', 'o', 'c', + 'a', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', + 's', '\032', '\222', '\003', '\n', '\022', 'C', 'h', 'a', 'n', 'n', 'e', + 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', + '\022', 'f', '\n', '\017', 's', 's', 'l', '_', 'c', 'r', 'e', 'd', + 'e', 'n', 't', 'i', 'a', 'l', 's', '\030', '\001', ' ', '\001', '(', + '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', + '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', + 'S', 's', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', + 'l', 's', 'H', '\000', 'R', '\016', 's', 's', 'l', 'C', 'r', 'e', + 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\022', '?', '\n', '\016', + 'g', 'o', 'o', 'g', 'l', 'e', '_', 'd', 'e', 'f', 'a', 'u', + 'l', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\026', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'E', 'm', 'p', 't', 'y', 'H', '\000', 'R', '\r', + 'g', 'o', 'o', 'g', 'l', 'e', 'D', 'e', 'f', 'a', 'u', 'l', + 't', '\022', 'r', '\n', '\021', 'l', 'o', 'c', 'a', 'l', '_', 'c', + 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\030', '\003', + ' ', '\001', '(', '\013', '2', 'C', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', + 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', + 'p', 'c', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'L', 'o', 'c', + 'a', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', + 's', 'H', '\000', 'R', '\020', 'l', 'o', 'c', 'a', 'l', 'C', 'r', + 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', ':', 'B', '\232', + '\305', '\210', '\036', '=', '\n', ';', 'e', 'n', 'v', 'o', 'y', '.', + 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', + 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', + 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', + 'h', 'a', 'n', 'n', 'e', 'l', 'C', 'r', 'e', 'd', 'e', 'n', + 't', 'i', 'a', 'l', 's', 'B', '\033', '\n', '\024', 'c', 'r', 'e', + 'd', 'e', 'n', 't', 'i', 'a', 'l', '_', 's', 'p', 'e', 'c', + 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', '\210', + '\017', '\n', '\017', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', + 'n', 't', 'i', 'a', 'l', 's', '\022', '#', '\n', '\014', 'a', 'c', + 'c', 'e', 's', 's', '_', 't', 'o', 'k', 'e', 'n', '\030', '\001', + ' ', '\001', '(', '\t', 'H', '\000', 'R', '\013', 'a', 'c', 'c', 'e', + 's', 's', 'T', 'o', 'k', 'e', 'n', '\022', 'L', '\n', '\025', 'g', + 'o', 'o', 'g', 'l', 'e', '_', 'c', 'o', 'm', 'p', 'u', 't', + 'e', '_', 'e', 'n', 'g', 'i', 'n', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\026', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'E', 'm', 'p', - 't', 'y', 'H', '\000', 'R', '\r', 'g', 'o', 'o', 'g', 'l', 'e', - 'D', 'e', 'f', 'a', 'u', 'l', 't', '\022', 'r', '\n', '\021', 'l', - 'o', 'c', 'a', 'l', '_', 'c', 'r', 'e', 'd', 'e', 'n', 't', - 'i', 'a', 'l', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', 'C', + 't', 'y', 'H', '\000', 'R', '\023', 'g', 'o', 'o', 'g', 'l', 'e', + 'C', 'o', 'm', 'p', 'u', 't', 'e', 'E', 'n', 'g', 'i', 'n', + 'e', '\022', '2', '\n', '\024', 'g', 'o', 'o', 'g', 'l', 'e', '_', + 'r', 'e', 'f', 'r', 'e', 's', 'h', '_', 't', 'o', 'k', 'e', + 'n', '\030', '\003', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\022', 'g', + 'o', 'o', 'g', 'l', 'e', 'R', 'e', 'f', 'r', 'e', 's', 'h', + 'T', 'o', 'k', 'e', 'n', '\022', '\236', '\001', '\n', '\032', 's', 'e', + 'r', 'v', 'i', 'c', 'e', '_', 'a', 'c', 'c', 'o', 'u', 'n', + 't', '_', 'j', 'w', 't', '_', 'a', 'c', 'c', 'e', 's', 's', + '\030', '\004', ' ', '\001', '(', '\013', '2', '_', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', + 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', + 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', + 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '.', 'S', 'e', 'r', + 'v', 'i', 'c', 'e', 'A', 'c', 'c', 'o', 'u', 'n', 't', 'J', + 'W', 'T', 'A', 'c', 'c', 'e', 's', 's', 'C', 'r', 'e', 'd', + 'e', 'n', 't', 'i', 'a', 'l', 's', 'H', '\000', 'R', '\027', 's', + 'e', 'r', 'v', 'i', 'c', 'e', 'A', 'c', 'c', 'o', 'u', 'n', + 't', 'J', 'w', 't', 'A', 'c', 'c', 'e', 's', 's', '\022', 'r', + '\n', '\n', 'g', 'o', 'o', 'g', 'l', 'e', '_', 'i', 'a', 'm', + '\030', '\005', ' ', '\001', '(', '\013', '2', 'Q', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', + 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', + 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', + 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '.', 'G', 'o', 'o', + 'g', 'l', 'e', 'I', 'A', 'M', 'C', 'r', 'e', 'd', 'e', 'n', + 't', 'i', 'a', 'l', 's', 'H', '\000', 'R', '\t', 'g', 'o', 'o', + 'g', 'l', 'e', 'I', 'a', 'm', '\022', '}', '\n', '\013', 'f', 'r', + 'o', 'm', '_', 'p', 'l', 'u', 'g', 'i', 'n', '\030', '\006', ' ', + '\001', '(', '\013', '2', 'Z', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', + 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', + 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', + 't', 'i', 'a', 'l', 's', '.', 'M', 'e', 't', 'a', 'd', 'a', + 't', 'a', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', + 's', 'F', 'r', 'o', 'm', 'P', 'l', 'u', 'g', 'i', 'n', 'H', + '\000', 'R', '\n', 'f', 'r', 'o', 'm', 'P', 'l', 'u', 'g', 'i', + 'n', '\022', 'j', '\n', '\013', 's', 't', 's', '_', 's', 'e', 'r', + 'v', 'i', 'c', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', - 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'G', 'o', 'o', - 'g', 'l', 'e', 'L', 'o', 'c', 'a', 'l', 'C', 'r', 'e', 'd', - 'e', 'n', 't', 'i', 'a', 'l', 's', 'H', '\000', 'R', '\020', 'l', - 'o', 'c', 'a', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', - 'a', 'l', 's', ':', 'B', '\232', '\305', '\210', '\036', '=', '\n', ';', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', - 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', - 'G', 'r', 'p', 'c', '.', 'C', 'h', 'a', 'n', 'n', 'e', 'l', - 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'B', - '\033', '\n', '\024', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', - 'l', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', - '\003', '\370', 'B', '\001', '\032', '\210', '\017', '\n', '\017', 'C', 'a', 'l', + 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', - '\022', '#', '\n', '\014', 'a', 'c', 'c', 'e', 's', 's', '_', 't', - 'o', 'k', 'e', 'n', '\030', '\001', ' ', '\001', '(', '\t', 'H', '\000', - 'R', '\013', 'a', 'c', 'c', 'e', 's', 's', 'T', 'o', 'k', 'e', - 'n', '\022', 'L', '\n', '\025', 'g', 'o', 'o', 'g', 'l', 'e', '_', - 'c', 'o', 'm', 'p', 'u', 't', 'e', '_', 'e', 'n', 'g', 'i', - 'n', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\026', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'E', 'm', 'p', 't', 'y', 'H', '\000', 'R', '\023', - 'g', 'o', 'o', 'g', 'l', 'e', 'C', 'o', 'm', 'p', 'u', 't', - 'e', 'E', 'n', 'g', 'i', 'n', 'e', '\022', '2', '\n', '\024', 'g', - 'o', 'o', 'g', 'l', 'e', '_', 'r', 'e', 'f', 'r', 'e', 's', - 'h', '_', 't', 'o', 'k', 'e', 'n', '\030', '\003', ' ', '\001', '(', - '\t', 'H', '\000', 'R', '\022', 'g', 'o', 'o', 'g', 'l', 'e', 'R', - 'e', 'f', 'r', 'e', 's', 'h', 'T', 'o', 'k', 'e', 'n', '\022', - '\236', '\001', '\n', '\032', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', - 'a', 'c', 'c', 'o', 'u', 'n', 't', '_', 'j', 'w', 't', '_', - 'a', 'c', 'c', 'e', 's', 's', '\030', '\004', ' ', '\001', '(', '\013', - '2', '_', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', - 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', - 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', - 'l', 's', '.', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'A', 'c', - 'c', 'o', 'u', 'n', 't', 'J', 'W', 'T', 'A', 'c', 'c', 'e', - 's', 's', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', - 's', 'H', '\000', 'R', '\027', 's', 'e', 'r', 'v', 'i', 'c', 'e', - 'A', 'c', 'c', 'o', 'u', 'n', 't', 'J', 'w', 't', 'A', 'c', - 'c', 'e', 's', 's', '\022', 'r', '\n', '\n', 'g', 'o', 'o', 'g', - 'l', 'e', '_', 'i', 'a', 'm', '\030', '\005', ' ', '\001', '(', '\013', - '2', 'Q', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', - 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', - 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', - 'l', 's', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'I', 'A', 'M', - 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'H', - '\000', 'R', '\t', 'g', 'o', 'o', 'g', 'l', 'e', 'I', 'a', 'm', - '\022', '}', '\n', '\013', 'f', 'r', 'o', 'm', '_', 'p', 'l', 'u', - 'g', 'i', 'n', '\030', '\006', ' ', '\001', '(', '\013', '2', 'Z', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', + '.', 'S', 't', 's', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'H', + '\000', 'R', '\n', 's', 't', 's', 'S', 'e', 'r', 'v', 'i', 'c', + 'e', '\032', '\331', '\001', '\n', '\"', 'S', 'e', 'r', 'v', 'i', 'c', + 'e', 'A', 'c', 'c', 'o', 'u', 'n', 't', 'J', 'W', 'T', 'A', + 'c', 'c', 'e', 's', 's', 'C', 'r', 'e', 'd', 'e', 'n', 't', + 'i', 'a', 'l', 's', '\022', '\031', '\n', '\010', 'j', 's', 'o', 'n', + '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', + 'j', 's', 'o', 'n', 'K', 'e', 'y', '\022', '4', '\n', '\026', 't', + 'o', 'k', 'e', 'n', '_', 'l', 'i', 'f', 'e', 't', 'i', 'm', + 'e', '_', 's', 'e', 'c', 'o', 'n', 'd', 's', '\030', '\002', ' ', + '\001', '(', '\004', 'R', '\024', 't', 'o', 'k', 'e', 'n', 'L', 'i', + 'f', 'e', 't', 'i', 'm', 'e', 'S', 'e', 'c', 'o', 'n', 'd', + 's', ':', 'b', '\232', '\305', '\210', '\036', ']', '\n', '[', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', + 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', + 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', + 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', + 'n', 't', 'i', 'a', 'l', 's', '.', 'S', 'e', 'r', 'v', 'i', + 'c', 'e', 'A', 'c', 'c', 'o', 'u', 'n', 't', 'J', 'W', 'T', + 'A', 'c', 'c', 'e', 's', 's', 'C', 'r', 'e', 'd', 'e', 'n', + 't', 'i', 'a', 'l', 's', '\032', '\314', '\001', '\n', '\024', 'G', 'o', + 'o', 'g', 'l', 'e', 'I', 'A', 'M', 'C', 'r', 'e', 'd', 'e', + 'n', 't', 'i', 'a', 'l', 's', '\022', '/', '\n', '\023', 'a', 'u', + 't', 'h', 'o', 'r', 'i', 'z', 'a', 't', 'i', 'o', 'n', '_', + 't', 'o', 'k', 'e', 'n', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\022', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'a', 't', 'i', + 'o', 'n', 'T', 'o', 'k', 'e', 'n', '\022', '-', '\n', '\022', 'a', + 'u', 't', 'h', 'o', 'r', 'i', 't', 'y', '_', 's', 'e', 'l', + 'e', 'c', 't', 'o', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'R', + '\021', 'a', 'u', 't', 'h', 'o', 'r', 'i', 't', 'y', 'S', 'e', + 'l', 'e', 'c', 't', 'o', 'r', ':', 'T', '\232', '\305', '\210', '\036', + 'O', '\n', 'M', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '.', - 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'C', 'r', 'e', 'd', - 'e', 'n', 't', 'i', 'a', 'l', 's', 'F', 'r', 'o', 'm', 'P', - 'l', 'u', 'g', 'i', 'n', 'H', '\000', 'R', '\n', 'f', 'r', 'o', - 'm', 'P', 'l', 'u', 'g', 'i', 'n', '\022', 'j', '\n', '\013', 's', - 't', 's', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\007', - ' ', '\001', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', + 'G', 'o', 'o', 'g', 'l', 'e', 'I', 'A', 'M', 'C', 'r', 'e', + 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\032', '\352', '\001', '\n', + '\035', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'C', 'r', 'e', + 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'F', 'r', 'o', 'm', + 'P', 'l', 'u', 'g', 'i', 'n', '\022', '\022', '\n', '\004', 'n', 'a', + 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', + 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', + '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', + 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', + 'g', ':', ']', '\232', '\305', '\210', '\036', 'X', '\n', 'V', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', + 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', - 'n', 't', 'i', 'a', 'l', 's', '.', 'S', 't', 's', 'S', 'e', - 'r', 'v', 'i', 'c', 'e', 'H', '\000', 'R', '\n', 's', 't', 's', - 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\032', '\331', '\001', '\n', '\"', - 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'A', 'c', 'c', 'o', 'u', - 'n', 't', 'J', 'W', 'T', 'A', 'c', 'c', 'e', 's', 's', 'C', - 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\022', '\031', - '\n', '\010', 'j', 's', 'o', 'n', '_', 'k', 'e', 'y', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\007', 'j', 's', 'o', 'n', 'K', 'e', - 'y', '\022', '4', '\n', '\026', 't', 'o', 'k', 'e', 'n', '_', 'l', - 'i', 'f', 'e', 't', 'i', 'm', 'e', '_', 's', 'e', 'c', 'o', - 'n', 'd', 's', '\030', '\002', ' ', '\001', '(', '\004', 'R', '\024', 't', - 'o', 'k', 'e', 'n', 'L', 'i', 'f', 'e', 't', 'i', 'm', 'e', - 'S', 'e', 'c', 'o', 'n', 'd', 's', ':', 'b', '\232', '\305', '\210', - '\036', ']', '\n', '[', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', - 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', - 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', - 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', - '.', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'A', 'c', 'c', 'o', - 'u', 'n', 't', 'J', 'W', 'T', 'A', 'c', 'c', 'e', 's', 's', - 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\032', - '\314', '\001', '\n', '\024', 'G', 'o', 'o', 'g', 'l', 'e', 'I', 'A', - 'M', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', - '\022', '/', '\n', '\023', 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', - 'a', 't', 'i', 'o', 'n', '_', 't', 'o', 'k', 'e', 'n', '\030', - '\001', ' ', '\001', '(', '\t', 'R', '\022', 'a', 'u', 't', 'h', 'o', - 'r', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'T', 'o', 'k', 'e', - 'n', '\022', '-', '\n', '\022', 'a', 'u', 't', 'h', 'o', 'r', 'i', - 't', 'y', '_', 's', 'e', 'l', 'e', 'c', 't', 'o', 'r', '\030', - '\002', ' ', '\001', '(', '\t', 'R', '\021', 'a', 'u', 't', 'h', 'o', - 'r', 'i', 't', 'y', 'S', 'e', 'l', 'e', 'c', 't', 'o', 'r', - ':', 'T', '\232', '\305', '\210', '\036', 'O', '\n', 'M', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', - 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', - 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', - 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', - 't', 'i', 'a', 'l', 's', '.', 'G', 'o', 'o', 'g', 'l', 'e', - 'I', 'A', 'M', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', - 'l', 's', '\032', '\352', '\001', '\n', '\035', 'M', 'e', 't', 'a', 'd', + 'n', 't', 'i', 'a', 'l', 's', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'F', 'r', 'o', 'm', 'P', 'l', 'u', 'g', 'i', 'n', - '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', - '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', - 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', - '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', - 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', ']', '\232', '\305', '\210', - '\036', 'X', '\n', 'V', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', + 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', + 'o', 'n', 'f', 'i', 'g', '\032', '\327', '\003', '\n', '\n', 'S', 't', + 's', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\022', ';', '\n', '\032', + 't', 'o', 'k', 'e', 'n', '_', 'e', 'x', 'c', 'h', 'a', 'n', + 'g', 'e', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'u', + 'r', 'i', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\027', 't', 'o', + 'k', 'e', 'n', 'E', 'x', 'c', 'h', 'a', 'n', 'g', 'e', 'S', + 'e', 'r', 'v', 'i', 'c', 'e', 'U', 'r', 'i', '\022', '\032', '\n', + '\010', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\002', ' ', + '\001', '(', '\t', 'R', '\010', 'r', 'e', 's', 'o', 'u', 'r', 'c', + 'e', '\022', '\032', '\n', '\010', 'a', 'u', 'd', 'i', 'e', 'n', 'c', + 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\010', 'a', 'u', 'd', + 'i', 'e', 'n', 'c', 'e', '\022', '\024', '\n', '\005', 's', 'c', 'o', + 'p', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\005', 's', 'c', + 'o', 'p', 'e', '\022', '0', '\n', '\024', 'r', 'e', 'q', 'u', 'e', + 's', 't', 'e', 'd', '_', 't', 'o', 'k', 'e', 'n', '_', 't', + 'y', 'p', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\022', 'r', + 'e', 'q', 'u', 'e', 's', 't', 'e', 'd', 'T', 'o', 'k', 'e', + 'n', 'T', 'y', 'p', 'e', '\022', '5', '\n', '\022', 's', 'u', 'b', + 'j', 'e', 'c', 't', '_', 't', 'o', 'k', 'e', 'n', '_', 'p', + 'a', 't', 'h', '\030', '\006', ' ', '\001', '(', '\t', 'B', '\007', '\372', + 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\020', 's', 'u', 'b', 'j', + 'e', 'c', 't', 'T', 'o', 'k', 'e', 'n', 'P', 'a', 't', 'h', + '\022', '5', '\n', '\022', 's', 'u', 'b', 'j', 'e', 'c', 't', '_', + 't', 'o', 'k', 'e', 'n', '_', 't', 'y', 'p', 'e', '\030', '\007', + ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', + '\001', 'R', '\020', 's', 'u', 'b', 'j', 'e', 'c', 't', 'T', 'o', + 'k', 'e', 'n', 'T', 'y', 'p', 'e', '\022', '(', '\n', '\020', 'a', + 'c', 't', 'o', 'r', '_', 't', 'o', 'k', 'e', 'n', '_', 'p', + 'a', 't', 'h', '\030', '\010', ' ', '\001', '(', '\t', 'R', '\016', 'a', + 'c', 't', 'o', 'r', 'T', 'o', 'k', 'e', 'n', 'P', 'a', 't', + 'h', '\022', '(', '\n', '\020', 'a', 'c', 't', 'o', 'r', '_', 't', + 'o', 'k', 'e', 'n', '_', 't', 'y', 'p', 'e', '\030', '\t', ' ', + '\001', '(', '\t', 'R', '\016', 'a', 'c', 't', 'o', 'r', 'T', 'o', + 'k', 'e', 'n', 'T', 'y', 'p', 'e', ':', 'J', '\232', '\305', '\210', + '\036', 'E', '\n', 'C', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', - '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'C', 'r', 'e', - 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'F', 'r', 'o', 'm', - 'P', 'l', 'u', 'g', 'i', 'n', 'B', '\r', '\n', '\013', 'c', 'o', - 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', - '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\032', - '\327', '\003', '\n', '\n', 'S', 't', 's', 'S', 'e', 'r', 'v', 'i', - 'c', 'e', '\022', ';', '\n', '\032', 't', 'o', 'k', 'e', 'n', '_', - 'e', 'x', 'c', 'h', 'a', 'n', 'g', 'e', '_', 's', 'e', 'r', - 'v', 'i', 'c', 'e', '_', 'u', 'r', 'i', '\030', '\001', ' ', '\001', - '(', '\t', 'R', '\027', 't', 'o', 'k', 'e', 'n', 'E', 'x', 'c', - 'h', 'a', 'n', 'g', 'e', 'S', 'e', 'r', 'v', 'i', 'c', 'e', - 'U', 'r', 'i', '\022', '\032', '\n', '\010', 'r', 'e', 's', 'o', 'u', - 'r', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', 'r', - 'e', 's', 'o', 'u', 'r', 'c', 'e', '\022', '\032', '\n', '\010', 'a', - 'u', 'd', 'i', 'e', 'n', 'c', 'e', '\030', '\003', ' ', '\001', '(', - '\t', 'R', '\010', 'a', 'u', 'd', 'i', 'e', 'n', 'c', 'e', '\022', - '\024', '\n', '\005', 's', 'c', 'o', 'p', 'e', '\030', '\004', ' ', '\001', - '(', '\t', 'R', '\005', 's', 'c', 'o', 'p', 'e', '\022', '0', '\n', - '\024', 'r', 'e', 'q', 'u', 'e', 's', 't', 'e', 'd', '_', 't', - 'o', 'k', 'e', 'n', '_', 't', 'y', 'p', 'e', '\030', '\005', ' ', - '\001', '(', '\t', 'R', '\022', 'r', 'e', 'q', 'u', 'e', 's', 't', - 'e', 'd', 'T', 'o', 'k', 'e', 'n', 'T', 'y', 'p', 'e', '\022', - '5', '\n', '\022', 's', 'u', 'b', 'j', 'e', 'c', 't', '_', 't', - 'o', 'k', 'e', 'n', '_', 'p', 'a', 't', 'h', '\030', '\006', ' ', - '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', - 'R', '\020', 's', 'u', 'b', 'j', 'e', 'c', 't', 'T', 'o', 'k', - 'e', 'n', 'P', 'a', 't', 'h', '\022', '5', '\n', '\022', 's', 'u', - 'b', 'j', 'e', 'c', 't', '_', 't', 'o', 'k', 'e', 'n', '_', - 't', 'y', 'p', 'e', '\030', '\007', ' ', '\001', '(', '\t', 'B', '\007', - '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\020', 's', 'u', 'b', - 'j', 'e', 'c', 't', 'T', 'o', 'k', 'e', 'n', 'T', 'y', 'p', - 'e', '\022', '(', '\n', '\020', 'a', 'c', 't', 'o', 'r', '_', 't', - 'o', 'k', 'e', 'n', '_', 'p', 'a', 't', 'h', '\030', '\010', ' ', - '\001', '(', '\t', 'R', '\016', 'a', 'c', 't', 'o', 'r', 'T', 'o', - 'k', 'e', 'n', 'P', 'a', 't', 'h', '\022', '(', '\n', '\020', 'a', - 'c', 't', 'o', 'r', '_', 't', 'o', 'k', 'e', 'n', '_', 't', - 'y', 'p', 'e', '\030', '\t', ' ', '\001', '(', '\t', 'R', '\016', 'a', - 'c', 't', 'o', 'r', 'T', 'o', 'k', 'e', 'n', 'T', 'y', 'p', - 'e', ':', 'J', '\232', '\305', '\210', '\036', 'E', '\n', 'C', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', - 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', - 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', - 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', - 'n', 't', 'i', 'a', 'l', 's', '.', 'S', 't', 's', 'S', 'e', - 'r', 'v', 'i', 'c', 'e', ':', '?', '\232', '\305', '\210', '\036', ':', - '\n', '8', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', - 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', - 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', - 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'a', 'l', 'l', 'C', - 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', 'B', '\033', - '\n', '\024', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', - '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', - '\370', 'B', '\001', '\032', '\303', '\002', '\n', '\013', 'C', 'h', 'a', 'n', - 'n', 'e', 'l', 'A', 'r', 'g', 's', '\022', 'V', '\n', '\004', 'a', - 'r', 'g', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', 'B', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', - 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', - 'g', 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'h', 'a', 'n', - 'n', 'e', 'l', 'A', 'r', 'g', 's', '.', 'A', 'r', 'g', 's', - 'E', 'n', 't', 'r', 'y', 'R', '\004', 'a', 'r', 'g', 's', '\032', - 'c', '\n', '\005', 'V', 'a', 'l', 'u', 'e', '\022', '#', '\n', '\014', - 's', 't', 'r', 'i', 'n', 'g', '_', 'v', 'a', 'l', 'u', 'e', - '\030', '\001', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\013', 's', 't', - 'r', 'i', 'n', 'g', 'V', 'a', 'l', 'u', 'e', '\022', '\035', '\n', - '\t', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\002', - ' ', '\001', '(', '\003', 'H', '\000', 'R', '\010', 'i', 'n', 't', 'V', - 'a', 'l', 'u', 'e', 'B', '\026', '\n', '\017', 'v', 'a', 'l', 'u', - 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', - '\003', '\370', 'B', '\001', '\032', 'w', '\n', '\t', 'A', 'r', 'g', 's', - 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', - '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', - 'T', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', - '(', '\013', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', + '.', 'S', 't', 's', 'S', 'e', 'r', 'v', 'i', 'c', 'e', ':', + '?', '\232', '\305', '\210', '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', + 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', - '.', 'C', 'h', 'a', 'n', 'n', 'e', 'l', 'A', 'r', 'g', 's', - '.', 'V', 'a', 'l', 'u', 'e', 'R', '\005', 'v', 'a', 'l', 'u', - 'e', ':', '\002', '8', '\001', ':', '/', '\232', '\305', '\210', '\036', '*', - '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', - 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', + '.', 'C', 'a', 'l', 'l', 'C', 'r', 'e', 'd', 'e', 'n', 't', + 'i', 'a', 'l', 's', 'B', '\033', '\n', '\024', 'c', 'r', 'e', 'd', + 'e', 'n', 't', 'i', 'a', 'l', '_', 's', 'p', 'e', 'c', 'i', + 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', '\303', '\002', + '\n', '\013', 'C', 'h', 'a', 'n', 'n', 'e', 'l', 'A', 'r', 'g', + 's', '\022', 'V', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\001', ' ', + '\003', '(', '\013', '2', 'B', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', + 'c', 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', + 'c', '.', 'C', 'h', 'a', 'n', 'n', 'e', 'l', 'A', 'r', 'g', + 's', '.', 'A', 'r', 'g', 's', 'E', 'n', 't', 'r', 'y', 'R', + '\004', 'a', 'r', 'g', 's', '\032', 'c', '\n', '\005', 'V', 'a', 'l', + 'u', 'e', '\022', '#', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', + '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\t', + 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'V', 'a', + 'l', 'u', 'e', '\022', '\035', '\n', '\t', 'i', 'n', 't', '_', 'v', + 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\003', 'H', '\000', + 'R', '\010', 'i', 'n', 't', 'V', 'a', 'l', 'u', 'e', 'B', '\026', + '\n', '\017', 'v', 'a', 'l', 'u', 'e', '_', 's', 'p', 'e', 'c', + 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', 'w', + '\n', '\t', 'A', 'r', 'g', 's', 'E', 'n', 't', 'r', 'y', '\022', + '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', + 'R', '\003', 'k', 'e', 'y', '\022', 'T', '\n', '\005', 'v', 'a', 'l', + 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '>', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'G', 'o', 'o', 'g', - 'l', 'e', 'G', 'r', 'p', 'c', ':', '$', '\232', '\305', '\210', '\036', - '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', - 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'B', '\027', '\n', '\020', - 't', 'a', 'r', 'g', 'e', 't', '_', 's', 'p', 'e', 'c', 'i', - 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'J', '\004', '\010', - '\004', '\020', '\005', 'B', '\204', '\001', '\n', '\"', 'i', 'o', '.', 'e', - 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', 'B', '\020', 'G', 'r', 'p', 'c', - 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'P', 'r', 'o', 't', 'o', - 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', - 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', - 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', - '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', - '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', - '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', - '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', - 'o', '3', + 'l', 'e', 'G', 'r', 'p', 'c', '.', 'C', 'h', 'a', 'n', 'n', + 'e', 'l', 'A', 'r', 'g', 's', '.', 'V', 'a', 'l', 'u', 'e', + 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', + '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', + 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', + 'e', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'G', 'r', 'p', 'c', + ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', + 'r', 'e', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', + 'c', 'e', 'B', '\027', '\n', '\020', 't', 'a', 'r', 'g', 'e', 't', + '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', + '\370', 'B', '\001', 'J', '\004', '\010', '\004', '\020', '\005', 'B', '\204', '\001', + '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + 'B', '\020', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', + 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', + 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', + 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', + 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', + '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', + 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', + 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', + 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[11] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c index 2a51c1cfc4f..797044d0471 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c @@ -12,6 +12,7 @@ #include "envoy/config/core/v3/protocol.upb_minitable.h" extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit; +extern _upb_DefPool_Init envoy_type_matcher_v3_string_proto_upbdefinit; extern _upb_DefPool_Init envoy_type_v3_percent_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; @@ -21,7 +22,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[7221] = { +static const char descriptor[7476] = { '\n', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '.', 'p', 'r', 'o', 't', @@ -30,6 +31,9 @@ static const char descriptor[7221] = { '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', + 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', + 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', + '/', 's', 't', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'p', 'e', 'r', 'c', 'e', 'n', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', @@ -71,7 +75,7 @@ static const char descriptor[7221] = { 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\016', '\372', 'B', '\013', '\252', '\001', '\010', '\"', '\000', '2', '\004', '\020', '\300', '\204', '=', 'R', '\017', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'I', 'n', 't', 'e', - 'r', 'v', 'a', 'l', '\"', '\273', '\006', '\n', '\023', 'Q', 'u', 'i', + 'r', 'v', 'a', 'l', '\"', '\266', '\006', '\n', '\023', 'Q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '[', '\n', '\026', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '_', 's', @@ -126,508 +130,527 @@ static const char descriptor[7221] = { 'i', 'o', 'n', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\001', '(', '\t', 'R', '\027', 'c', 'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', - 'p', 't', 'i', 'o', 'n', 's', '\022', '\\', '\n', '\024', 'i', 'd', + 'p', 't', 'i', 'o', 'n', 's', '\022', 'W', '\n', '\024', 'i', 'd', 'l', 'e', '_', 'n', 'e', 't', 'w', 'o', 'r', 'k', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\010', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'B', '\017', '\372', 'B', '\014', '\252', '\001', '\t', '\"', - '\003', '\010', '\330', '\004', '2', '\002', '\010', '\001', 'R', '\022', 'i', 'd', - 'l', 'e', 'N', 'e', 't', 'w', 'o', 'r', 'k', 'T', 'i', 'm', - 'e', 'o', 'u', 't', '\022', 'H', '\n', '\021', 'm', 'a', 'x', '_', - 'p', 'a', 'c', 'k', 'e', 't', '_', 'l', 'e', 'n', 'g', 't', - 'h', '\030', '\t', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', - 'e', 'R', '\017', 'm', 'a', 'x', 'P', 'a', 'c', 'k', 'e', 't', - 'L', 'e', 'n', 'g', 't', 'h', '\"', '\344', '\001', '\n', '\033', 'U', - 'p', 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', 'p', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', '\022', '\031', '\n', '\010', 'a', 'u', 't', 'o', '_', 's', - 'n', 'i', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\007', 'a', 'u', - 't', 'o', 'S', 'n', 'i', '\022', '.', '\n', '\023', 'a', 'u', 't', - 'o', '_', 's', 'a', 'n', '_', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\021', - 'a', 'u', 't', 'o', 'S', 'a', 'n', 'V', 'a', 'l', 'i', 'd', - 'a', 't', 'i', 'o', 'n', '\022', 'D', '\n', '\030', 'o', 'v', 'e', - 'r', 'r', 'i', 'd', 'e', '_', 'a', 'u', 't', 'o', '_', 's', - 'n', 'i', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\003', ' ', - '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', - '\001', '\320', '\001', '\001', 'R', '\025', 'o', 'v', 'e', 'r', 'r', 'i', - 'd', 'e', 'A', 'u', 't', 'o', 'S', 'n', 'i', 'H', 'e', 'a', - 'd', 'e', 'r', ':', '4', '\232', '\305', '\210', '\036', '/', '\n', '-', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'c', 'o', 'r', 'e', '.', 'U', 'p', 's', 't', 'r', 'e', + 'i', 'o', 'n', 'B', '\n', '\372', 'B', '\007', '\252', '\001', '\004', '2', + '\002', '\010', '\001', 'R', '\022', 'i', 'd', 'l', 'e', 'N', 'e', 't', + 'w', 'o', 'r', 'k', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', + 'H', '\n', '\021', 'm', 'a', 'x', '_', 'p', 'a', 'c', 'k', 'e', + 't', '_', 'l', 'e', 'n', 'g', 't', 'h', '\030', '\t', ' ', '\001', + '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', + 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'm', 'a', + 'x', 'P', 'a', 'c', 'k', 'e', 't', 'L', 'e', 'n', 'g', 't', + 'h', '\"', '\344', '\001', '\n', '\033', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', '\206', '\004', - '\n', '\036', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'e', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', 'C', 'a', 'c', 'h', - 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '\033', '\n', '\004', - 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', - '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', - 'e', '\022', 'F', '\n', '\013', 'm', 'a', 'x', '_', 'e', 'n', 't', - 'r', 'i', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', ' ', - '\000', 'R', '\n', 'm', 'a', 'x', 'E', 'n', 't', 'r', 'i', 'e', - 's', '\022', '_', '\n', '\026', 'k', 'e', 'y', '_', 'v', 'a', 'l', - 'u', 'e', '_', 's', 't', 'o', 'r', 'e', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '*', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', - 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', - 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'k', 'e', 'y', 'V', 'a', - 'l', 'u', 'e', 'S', 't', 'o', 'r', 'e', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', '\204', '\001', '\n', '\024', 'p', 'r', 'e', 'p', 'o', - 'p', 'u', 'l', 'a', 't', 'e', 'd', '_', 'e', 'n', 't', 'r', - 'i', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', 'Q', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'l', 't', + 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '\031', '\n', + '\010', 'a', 'u', 't', 'o', '_', 's', 'n', 'i', '\030', '\001', ' ', + '\001', '(', '\010', 'R', '\007', 'a', 'u', 't', 'o', 'S', 'n', 'i', + '\022', '.', '\n', '\023', 'a', 'u', 't', 'o', '_', 's', 'a', 'n', + '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '\030', + '\002', ' ', '\001', '(', '\010', 'R', '\021', 'a', 'u', 't', 'o', 'S', + 'a', 'n', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', + '\022', 'D', '\n', '\030', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', + '_', 'a', 'u', 't', 'o', '_', 's', 'n', 'i', '_', 'h', 'e', + 'a', 'd', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\t', 'B', '\013', + '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\320', '\001', '\001', 'R', + '\025', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'A', 'u', 't', + 'o', 'S', 'n', 'i', 'H', 'e', 'a', 'd', 'e', 'r', ':', '4', + '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', + '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', + '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', + 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', '\"', '\206', '\004', '\n', '\036', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'e', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', 'C', 'a', 'c', 'h', 'e', 'O', 'p', 't', 'i', - 'o', 'n', 's', '.', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', + 'o', 'n', 's', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', + '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', + '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'F', '\n', '\013', + 'm', 'a', 'x', '_', 'e', 'n', 't', 'r', 'i', 'e', 's', '\030', + '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', + '\007', '\372', 'B', '\004', '*', '\002', ' ', '\000', 'R', '\n', 'm', 'a', + 'x', 'E', 'n', 't', 'r', 'i', 'e', 's', '\022', '_', '\n', '\026', + 'k', 'e', 'y', '_', 'v', 'a', 'l', 'u', 'e', '_', 's', 't', + 'o', 'r', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', + ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', + 'R', '\023', 'k', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'S', 't', + 'o', 'r', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\204', '\001', + '\n', '\024', 'p', 'r', 'e', 'p', 'o', 'p', 'u', 'l', 'a', 't', + 'e', 'd', '_', 'e', 'n', 't', 'r', 'i', 'e', 's', '\030', '\004', + ' ', '\003', '(', '\013', '2', 'Q', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'e', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', 'C', 'a', - 'c', 'h', 'e', 'E', 'n', 't', 'r', 'y', 'R', '\023', 'p', 'r', - 'e', 'p', 'o', 'p', 'u', 'l', 'a', 't', 'e', 'd', 'E', 'n', - 't', 'r', 'i', 'e', 's', '\022', '-', '\n', '\022', 'c', 'a', 'n', - 'o', 'n', 'i', 'c', 'a', 'l', '_', 's', 'u', 'f', 'f', 'i', - 'x', 'e', 's', '\030', '\005', ' ', '\003', '(', '\t', 'R', '\021', 'c', - 'a', 'n', 'o', 'n', 'i', 'c', 'a', 'l', 'S', 'u', 'f', 'f', - 'i', 'x', 'e', 's', '\032', 'h', '\n', '\034', 'A', 'l', 't', 'e', - 'r', 'n', 'a', 't', 'e', 'P', 'r', 'o', 't', 'o', 'c', 'o', - 'l', 's', 'C', 'a', 'c', 'h', 'e', 'E', 'n', 't', 'r', 'y', - '\022', '\'', '\n', '\010', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e', - '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', - '\006', '\300', '\001', '\001', '\320', '\001', '\001', 'R', '\010', 'h', 'o', 's', - 't', 'n', 'a', 'm', 'e', '\022', '\037', '\n', '\004', 'p', 'o', 'r', - 't', '\030', '\002', ' ', '\001', '(', '\r', 'B', '\013', '\372', 'B', '\010', - '*', '\006', '\020', '\377', '\377', '\003', ' ', '\000', 'R', '\004', 'p', 'o', - 'r', 't', '\"', '\220', '\006', '\n', '\023', 'H', 't', 't', 'p', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', '\022', '<', '\n', '\014', 'i', 'd', 'l', 'e', '_', 't', - 'i', 'm', 'e', 'o', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', - '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'R', '\013', 'i', 'd', 'l', 'e', 'T', 'i', 'm', - 'e', 'o', 'u', 't', '\022', 'Q', '\n', '\027', 'm', 'a', 'x', '_', - 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'd', - 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', - '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', - 't', 'i', 'o', 'n', 'R', '\025', 'm', 'a', 'x', 'C', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', '\022', 'Q', '\n', '\021', 'm', 'a', 'x', '_', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '_', 'c', 'o', 'u', 'n', 't', - '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', - 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\017', 'm', - 'a', 'x', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'C', 'o', 'u', - 'n', 't', '\022', '_', '\n', '\027', 'm', 'a', 'x', '_', 'r', 'e', - 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', - 'r', 's', '_', 'k', 'b', '\030', '\007', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', - 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', '*', '\005', - '\030', '\200', '@', ' ', '\000', 'R', '\024', 'm', 'a', 'x', 'R', 'e', - 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', - 's', 'K', 'b', '\022', 'I', '\n', '\023', 'm', 'a', 'x', '_', 's', - 't', 'r', 'e', 'a', 'm', '_', 'd', 'u', 'r', 'a', 't', 'i', - 'o', 'n', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', + 'c', 'h', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'A', + 'l', 't', 'e', 'r', 'n', 'a', 't', 'e', 'P', 'r', 'o', 't', + 'o', 'c', 'o', 'l', 's', 'C', 'a', 'c', 'h', 'e', 'E', 'n', + 't', 'r', 'y', 'R', '\023', 'p', 'r', 'e', 'p', 'o', 'p', 'u', + 'l', 'a', 't', 'e', 'd', 'E', 'n', 't', 'r', 'i', 'e', 's', + '\022', '-', '\n', '\022', 'c', 'a', 'n', 'o', 'n', 'i', 'c', 'a', + 'l', '_', 's', 'u', 'f', 'f', 'i', 'x', 'e', 's', '\030', '\005', + ' ', '\003', '(', '\t', 'R', '\021', 'c', 'a', 'n', 'o', 'n', 'i', + 'c', 'a', 'l', 'S', 'u', 'f', 'f', 'i', 'x', 'e', 's', '\032', + 'h', '\n', '\034', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'e', + 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', 'C', 'a', 'c', + 'h', 'e', 'E', 'n', 't', 'r', 'y', '\022', '\'', '\n', '\010', 'h', + 'o', 's', 't', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\320', + '\001', '\001', 'R', '\010', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e', + '\022', '\037', '\n', '\004', 'p', 'o', 'r', 't', '\030', '\002', ' ', '\001', + '(', '\r', 'B', '\013', '\372', 'B', '\010', '*', '\006', '\020', '\377', '\377', + '\003', ' ', '\000', 'R', '\004', 'p', 'o', 'r', 't', '\"', '\220', '\006', + '\n', '\023', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '<', '\n', + '\014', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', + 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\013', + 'i', 'd', 'l', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', + 'Q', '\n', '\027', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', + 'c', 't', 'i', 'o', 'n', '_', 'd', 'u', 'r', 'a', 't', 'i', + 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', - '\021', 'm', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', - 'r', 'a', 't', 'i', 'o', 'n', '\022', '\215', '\001', '\n', '\037', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '_', 'w', 'i', 't', 'h', '_', - 'u', 'n', 'd', 'e', 'r', 's', 'c', 'o', 'r', 'e', 's', '_', - 'a', 'c', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\016', - '2', 'F', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', - 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', - 'e', 'r', 's', 'W', 'i', 't', 'h', 'U', 'n', 'd', 'e', 'r', - 's', 'c', 'o', 'r', 'e', 's', 'A', 'c', 't', 'i', 'o', 'n', - 'R', '\034', 'h', 'e', 'a', 'd', 'e', 'r', 's', 'W', 'i', 't', + '\025', 'm', 'a', 'x', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', 'Q', + '\n', '\021', 'm', 'a', 'x', '_', 'h', 'e', 'a', 'd', 'e', 'r', + 's', '_', 'c', 'o', 'u', 'n', 't', '\030', '\002', ' ', '\001', '(', + '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', + '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', + '*', '\002', '(', '\001', 'R', '\017', 'm', 'a', 'x', 'H', 'e', 'a', + 'd', 'e', 'r', 's', 'C', 'o', 'u', 'n', 't', '\022', '_', '\n', + '\027', 'm', 'a', 'x', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', + 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'k', 'b', + '\030', '\007', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', + 'B', '\n', '\372', 'B', '\007', '*', '\005', '\030', '\200', '@', ' ', '\000', + 'R', '\024', 'm', 'a', 'x', 'R', 'e', 's', 'p', 'o', 'n', 's', + 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'K', 'b', '\022', 'I', + '\n', '\023', 'm', 'a', 'x', '_', 's', 't', 'r', 'e', 'a', 'm', + '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', + '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', + 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'm', 'a', 'x', 'S', + 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', + 'n', '\022', '\215', '\001', '\n', '\037', 'h', 'e', 'a', 'd', 'e', 'r', + 's', '_', 'w', 'i', 't', 'h', '_', 'u', 'n', 'd', 'e', 'r', + 's', 'c', 'o', 'r', 'e', 's', '_', 'a', 'c', 't', 'i', 'o', + 'n', '\030', '\005', ' ', '\001', '(', '\016', '2', 'F', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'P', + 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', + 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'W', 'i', + 't', 'h', 'U', 'n', 'd', 'e', 'r', 's', 'c', 'o', 'r', 'e', + 's', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\034', 'h', 'e', 'a', + 'd', 'e', 'r', 's', 'W', 'i', 't', 'h', 'U', 'n', 'd', 'e', + 'r', 's', 'c', 'o', 'r', 'e', 's', 'A', 'c', 't', 'i', 'o', + 'n', '\022', '[', '\n', '\033', 'm', 'a', 'x', '_', 'r', 'e', 'q', + 'u', 'e', 's', 't', 's', '_', 'p', 'e', 'r', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\006', ' ', '\001', + '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', + 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\030', 'm', 'a', + 'x', 'R', 'e', 'q', 'u', 'e', 's', 't', 's', 'P', 'e', 'r', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\"', 'N', + '\n', '\034', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'W', 'i', 't', 'h', 'U', 'n', 'd', 'e', 'r', 's', 'c', 'o', 'r', 'e', 's', - 'A', 'c', 't', 'i', 'o', 'n', '\022', '[', '\n', '\033', 'm', 'a', - 'x', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '_', 'p', - 'e', 'r', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', '\030', '\006', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', - 'e', 'R', '\030', 'm', 'a', 'x', 'R', 'e', 'q', 'u', 'e', 's', - 't', 's', 'P', 'e', 'r', 'C', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', '\"', 'N', '\n', '\034', 'H', 'e', 'a', 'd', 'e', - 'r', 's', 'W', 'i', 't', 'h', 'U', 'n', 'd', 'e', 'r', 's', - 'c', 'o', 'r', 'e', 's', 'A', 'c', 't', 'i', 'o', 'n', '\022', - '\t', '\n', '\005', 'A', 'L', 'L', 'O', 'W', '\020', '\000', '\022', '\022', - '\n', '\016', 'R', 'E', 'J', 'E', 'C', 'T', '_', 'R', 'E', 'Q', - 'U', 'E', 'S', 'T', '\020', '\001', '\022', '\017', '\n', '\013', 'D', 'R', - 'O', 'P', '_', 'H', 'E', 'A', 'D', 'E', 'R', '\020', '\002', ':', - ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', - 'e', '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', '\223', '\t', - '\n', '\024', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'H', - '\n', '\022', 'a', 'l', 'l', 'o', 'w', '_', 'a', 'b', 's', 'o', - 'l', 'u', 't', 'e', '_', 'u', 'r', 'l', '\030', '\001', ' ', '\001', - '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', - 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\020', 'a', 'l', 'l', 'o', - 'w', 'A', 'b', 's', 'o', 'l', 'u', 't', 'e', 'U', 'r', 'l', - '\022', '$', '\n', '\016', 'a', 'c', 'c', 'e', 'p', 't', '_', 'h', - 't', 't', 'p', '_', '1', '0', '\030', '\002', ' ', '\001', '(', '\010', - 'R', '\014', 'a', 'c', 'c', 'e', 'p', 't', 'H', 't', 't', 'p', - '1', '0', '\022', '6', '\n', '\030', 'd', 'e', 'f', 'a', 'u', 'l', - 't', '_', 'h', 'o', 's', 't', '_', 'f', 'o', 'r', '_', 'h', - 't', 't', 'p', '_', '1', '0', '\030', '\003', ' ', '\001', '(', '\t', - 'R', '\024', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'H', 'o', 's', - 't', 'F', 'o', 'r', 'H', 't', 't', 'p', '1', '0', '\022', 'f', - '\n', '\021', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'k', 'e', 'y', - '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\004', ' ', '\001', '(', - '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', - 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', - 't', 'R', '\017', 'h', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', - 'F', 'o', 'r', 'm', 'a', 't', '\022', '\'', '\n', '\017', 'e', 'n', - 'a', 'b', 'l', 'e', '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', - 's', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\016', 'e', 'n', 'a', - 'b', 'l', 'e', 'T', 'r', 'a', 'i', 'l', 'e', 'r', 's', '\022', - '0', '\n', '\024', 'a', 'l', 'l', 'o', 'w', '_', 'c', 'h', 'u', - 'n', 'k', 'e', 'd', '_', 'l', 'e', 'n', 'g', 't', 'h', '\030', - '\006', ' ', '\001', '(', '\010', 'R', '\022', 'a', 'l', 'l', 'o', 'w', - 'C', 'h', 'u', 'n', 'k', 'e', 'd', 'L', 'e', 'n', 'g', 't', - 'h', '\022', 'z', '\n', '-', 'o', 'v', 'e', 'r', 'r', 'i', 'd', - 'e', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', - 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', - 'd', '_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', - 'g', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', - 'R', '\'', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 't', - 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', - 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', - 's', 's', 'a', 'g', 'e', '\022', '7', '\n', '\030', 's', 'e', 'n', - 'd', '_', 'f', 'u', 'l', 'l', 'y', '_', 'q', 'u', 'a', 'l', - 'i', 'f', 'i', 'e', 'd', '_', 'u', 'r', 'l', '\030', '\010', ' ', - '\001', '(', '\010', 'R', '\025', 's', 'e', 'n', 'd', 'F', 'u', 'l', - 'l', 'y', 'Q', 'u', 'a', 'l', 'i', 'f', 'i', 'e', 'd', 'U', - 'r', 'l', '\022', 'N', '\n', '\020', 'u', 's', 'e', '_', 'b', 'a', - 'l', 's', 'a', '_', 'p', 'a', 'r', 's', 'e', 'r', '\030', '\t', - ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', - 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\322', '\306', - '\244', '\341', '\006', '\002', '\010', '\001', 'R', '\016', 'u', 's', 'e', 'B', - 'a', 'l', 's', 'a', 'P', 'a', 'r', 's', 'e', 'r', '\022', ':', - '\n', '\024', 'a', 'l', 'l', 'o', 'w', '_', 'c', 'u', 's', 't', - 'o', 'm', '_', 'm', 'e', 't', 'h', 'o', 'd', 's', '\030', '\n', - ' ', '\001', '(', '\010', 'B', '\010', '\322', '\306', '\244', '\341', '\006', '\002', - '\010', '\001', 'R', '\022', 'a', 'l', 'l', 'o', 'w', 'C', 'u', 's', - 't', 'o', 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', '\032', '\237', - '\003', '\n', '\017', 'H', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', - 'F', 'o', 'r', 'm', 'a', 't', '\022', 'x', '\n', '\021', 'p', 'r', - 'o', 'p', 'e', 'r', '_', 'c', 'a', 's', 'e', '_', 'w', 'o', - 'r', 'd', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', 'J', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', + 'A', 'c', 't', 'i', 'o', 'n', '\022', '\t', '\n', '\005', 'A', 'L', + 'L', 'O', 'W', '\020', '\000', '\022', '\022', '\n', '\016', 'R', 'E', 'J', + 'E', 'C', 'T', '_', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', '\020', + '\001', '\022', '\017', '\n', '\013', 'D', 'R', 'O', 'P', '_', 'H', 'E', + 'A', 'D', 'E', 'R', '\020', '\002', ':', ',', '\232', '\305', '\210', '\036', + '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', + 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', '\"', '\361', '\t', '\n', '\024', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', - 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', - 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '.', 'P', 'r', + 't', 'i', 'o', 'n', 's', '\022', 'H', '\n', '\022', 'a', 'l', 'l', + 'o', 'w', '_', 'a', 'b', 's', 'o', 'l', 'u', 't', 'e', '_', + 'u', 'r', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', + 'e', 'R', '\020', 'a', 'l', 'l', 'o', 'w', 'A', 'b', 's', 'o', + 'l', 'u', 't', 'e', 'U', 'r', 'l', '\022', '$', '\n', '\016', 'a', + 'c', 'c', 'e', 'p', 't', '_', 'h', 't', 't', 'p', '_', '1', + '0', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\014', 'a', 'c', 'c', + 'e', 'p', 't', 'H', 't', 't', 'p', '1', '0', '\022', '6', '\n', + '\030', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'h', 'o', 's', + 't', '_', 'f', 'o', 'r', '_', 'h', 't', 't', 'p', '_', '1', + '0', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\024', 'd', 'e', 'f', + 'a', 'u', 'l', 't', 'H', 'o', 's', 't', 'F', 'o', 'r', 'H', + 't', 't', 'p', '1', '0', '\022', 'f', '\n', '\021', 'h', 'e', 'a', + 'd', 'e', 'r', '_', 'k', 'e', 'y', '_', 'f', 'o', 'r', 'm', + 'a', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', ':', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', + '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'K', + 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\017', 'h', 'e', + 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', + 't', '\022', '\'', '\n', '\017', 'e', 'n', 'a', 'b', 'l', 'e', '_', + 't', 'r', 'a', 'i', 'l', 'e', 'r', 's', '\030', '\005', ' ', '\001', + '(', '\010', 'R', '\016', 'e', 'n', 'a', 'b', 'l', 'e', 'T', 'r', + 'a', 'i', 'l', 'e', 'r', 's', '\022', '0', '\n', '\024', 'a', 'l', + 'l', 'o', 'w', '_', 'c', 'h', 'u', 'n', 'k', 'e', 'd', '_', + 'l', 'e', 'n', 'g', 't', 'h', '\030', '\006', ' ', '\001', '(', '\010', + 'R', '\022', 'a', 'l', 'l', 'o', 'w', 'C', 'h', 'u', 'n', 'k', + 'e', 'd', 'L', 'e', 'n', 'g', 't', 'h', '\022', 'z', '\n', '-', + 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_', 's', 't', 'r', + 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', + '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', + 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '\007', ' ', + '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', + 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\'', 'o', 'v', 'e', + 'r', 'r', 'i', 'd', 'e', 'S', 't', 'r', 'e', 'a', 'm', 'E', + 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', + 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', + '\022', '7', '\n', '\030', 's', 'e', 'n', 'd', '_', 'f', 'u', 'l', + 'l', 'y', '_', 'q', 'u', 'a', 'l', 'i', 'f', 'i', 'e', 'd', + '_', 'u', 'r', 'l', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\025', + 's', 'e', 'n', 'd', 'F', 'u', 'l', 'l', 'y', 'Q', 'u', 'a', + 'l', 'i', 'f', 'i', 'e', 'd', 'U', 'r', 'l', '\022', 'Q', '\n', + '\020', 'u', 's', 'e', '_', 'b', 'a', 'l', 's', 'a', '_', 'p', + 'a', 'r', 's', 'e', 'r', '\030', '\t', ' ', '\001', '(', '\013', '2', + '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', + 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', + '\003', '3', '.', '0', 'R', '\016', 'u', 's', 'e', 'B', 'a', 'l', + 's', 'a', 'P', 'a', 'r', 's', 'e', 'r', '\022', ':', '\n', '\024', + 'a', 'l', 'l', 'o', 'w', '_', 'c', 'u', 's', 't', 'o', 'm', + '_', 'm', 'e', 't', 'h', 'o', 'd', 's', '\030', '\n', ' ', '\001', + '(', '\010', 'B', '\010', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', + 'R', '\022', 'a', 'l', 'l', 'o', 'w', 'C', 'u', 's', 't', 'o', + 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', '\022', 'Y', '\n', '\026', + 'i', 'g', 'n', 'o', 'r', 'e', '_', 'h', 't', 't', 'p', '_', + '1', '1', '_', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '\030', '\013', + ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'R', '\023', 'i', 'g', 'n', 'o', + 'r', 'e', 'H', 't', 't', 'p', '1', '1', 'U', 'p', 'g', 'r', + 'a', 'd', 'e', '\032', '\237', '\003', '\n', '\017', 'H', 'e', 'a', 'd', + 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '\022', + 'x', '\n', '\021', 'p', 'r', 'o', 'p', 'e', 'r', '_', 'c', 'a', + 's', 'e', '_', 'w', 'o', 'r', 'd', 's', '\030', '\001', ' ', '\001', + '(', '\013', '2', 'J', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', + 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', + 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', + 'a', 't', '.', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', + 'e', 'W', 'o', 'r', 'd', 's', 'H', '\000', 'R', '\017', 'p', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r', 'd', - 's', 'H', '\000', 'R', '\017', 'p', 'r', 'o', 'p', 'e', 'r', 'C', - 'a', 's', 'e', 'W', 'o', 'r', 'd', 's', '\022', '[', '\n', '\022', - 's', 't', 'a', 't', 'e', 'f', 'u', 'l', '_', 'f', 'o', 'r', - 'm', 'a', 't', 't', 'e', 'r', '\030', '\010', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\021', - 's', 't', 'a', 't', 'e', 'f', 'u', 'l', 'F', 'o', 'r', 'm', - 'a', 't', 't', 'e', 'r', '\032', '`', '\n', '\017', 'P', 'r', 'o', + 's', '\022', '[', '\n', '\022', 's', 't', 'a', 't', 'e', 'f', 'u', + 'l', '_', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', '\030', + '\010', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', + 'g', 'H', '\000', 'R', '\021', 's', 't', 'a', 't', 'e', 'f', 'u', + 'l', 'F', 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', '\032', '`', + '\n', '\017', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', + 'W', 'o', 'r', 'd', 's', ':', 'M', '\232', '\305', '\210', '\036', 'H', + '\n', 'F', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', + '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'K', + 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '.', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r', 'd', 's', - ':', 'M', '\232', '\305', '\210', '\036', 'H', '\n', 'F', 'e', 'n', 'v', + ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', - 'm', 'a', 't', '.', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', - 's', 'e', 'W', 'o', 'r', 'd', 's', ':', '=', '\232', '\305', '\210', - '\036', '8', '\n', '6', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', - 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', - 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', - 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\024', - '\n', '\r', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'f', 'o', 'r', - 'm', 'a', 't', '\022', '\003', '\370', 'B', '\001', ':', '-', '\232', '\305', - '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', - 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', - 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', '\301', '\002', '\n', '\021', - 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', 'S', 'e', 't', - 't', 'i', 'n', 'g', 's', '\022', 'C', '\n', '\010', 'i', 'n', 't', - 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', - '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', '\006', '2', '\004', - '\020', '\300', '\204', '=', 'R', '\010', 'i', 'n', 't', 'e', 'r', 'v', - 'a', 'l', '\022', 'C', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', - 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', + 'm', 'a', 't', 'B', '\024', '\n', '\r', 'h', 'e', 'a', 'd', 'e', + 'r', '_', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\003', '\370', 'B', + '\001', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', + 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', + 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', + '\"', '\301', '\002', '\n', '\021', 'K', 'e', 'e', 'p', 'a', 'l', 'i', + 'v', 'e', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\022', 'C', + '\n', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', + ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', + 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', '\t', + '\252', '\001', '\006', '2', '\004', '\020', '\300', '\204', '=', 'R', '\010', 'i', + 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'C', '\n', '\007', 't', + 'i', 'm', 'e', 'o', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', + 'i', 'o', 'n', 'B', '\016', '\372', 'B', '\013', '\252', '\001', '\010', '\010', + '\001', '2', '\004', '\020', '\300', '\204', '=', 'R', '\007', 't', 'i', 'm', + 'e', 'o', 'u', 't', '\022', '?', '\n', '\017', 'i', 'n', 't', 'e', + 'r', 'v', 'a', 'l', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', + '\003', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', + 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', + 'r', 'c', 'e', 'n', 't', 'R', '\016', 'i', 'n', 't', 'e', 'r', + 'v', 'a', 'l', 'J', 'i', 't', 't', 'e', 'r', '\022', 'a', '\n', + '\030', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', + 'i', 'd', 'l', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', + 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\016', - '\372', 'B', '\013', '\252', '\001', '\010', '\010', '\001', '2', '\004', '\020', '\300', - '\204', '=', 'R', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\022', - '?', '\n', '\017', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '_', - 'j', 'i', 't', 't', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', - '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', - 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', - 'R', '\016', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', 'J', 'i', - 't', 't', 'e', 'r', '\022', 'a', '\n', '\030', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'i', 'd', 'l', 'e', '_', - 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\004', ' ', '\001', - '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', - 'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', - '\006', '2', '\004', '\020', '\300', '\204', '=', 'R', '\026', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', 'I', 'd', 'l', 'e', 'I', - 'n', 't', 'e', 'r', 'v', 'a', 'l', '\"', '\232', '\017', '\n', '\024', - 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', - 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'F', '\n', '\020', - 'h', 'p', 'a', 'c', 'k', '_', 't', 'a', 'b', 'l', 'e', '_', - 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'R', '\016', 'h', 'p', 'a', 'c', 'k', 'T', - 'a', 'b', 'l', 'e', 'S', 'i', 'z', 'e', '\022', 'a', '\n', '\026', - 'm', 'a', 'x', '_', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', - 'n', 't', '_', 's', 't', 'r', 'e', 'a', 'm', 's', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', - 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\r', - '\372', 'B', '\n', '*', '\010', '\030', '\377', '\377', '\377', '\377', '\007', '(', - '\001', 'R', '\024', 'm', 'a', 'x', 'C', 'o', 'n', 'c', 'u', 'r', - 'r', 'e', 'n', 't', 'S', 't', 'r', 'e', 'a', 'm', 's', '\022', - 'j', '\n', '\032', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 's', - 't', 'r', 'e', 'a', 'm', '_', 'w', 'i', 'n', 'd', 'o', 'w', - '_', 's', 'i', 'z', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', - 'V', 'a', 'l', 'u', 'e', 'B', '\017', '\372', 'B', '\014', '*', '\n', - '\030', '\377', '\377', '\377', '\377', '\007', '(', '\377', '\377', '\003', 'R', '\027', - 'i', 'n', 'i', 't', 'i', 'a', 'l', 'S', 't', 'r', 'e', 'a', - 'm', 'W', 'i', 'n', 'd', 'o', 'w', 'S', 'i', 'z', 'e', '\022', - 'r', '\n', '\036', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 'c', - 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'w', 'i', - 'n', 'd', 'o', 'w', '_', 's', 'i', 'z', 'e', '\030', '\004', ' ', + 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\014', + '\372', 'B', '\t', '\252', '\001', '\006', '2', '\004', '\020', '\300', '\204', '=', + 'R', '\026', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + 'I', 'd', 'l', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', + '\"', '\232', '\017', '\n', '\024', 'H', 't', 't', 'p', '2', 'P', 'r', + 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', + 's', '\022', 'F', '\n', '\020', 'h', 'p', 'a', 'c', 'k', '_', 't', + 'a', 'b', 'l', 'e', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', - 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\017', '\372', - 'B', '\014', '*', '\n', '\030', '\377', '\377', '\377', '\377', '\007', '(', '\377', - '\377', '\003', 'R', '\033', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'C', - 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'W', 'i', 'n', - 'd', 'o', 'w', 'S', 'i', 'z', 'e', '\022', '#', '\n', '\r', 'a', - 'l', 'l', 'o', 'w', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', - '\030', '\005', ' ', '\001', '(', '\010', 'R', '\014', 'a', 'l', 'l', 'o', - 'w', 'C', 'o', 'n', 'n', 'e', 'c', 't', '\022', '%', '\n', '\016', - 'a', 'l', 'l', 'o', 'w', '_', 'm', 'e', 't', 'a', 'd', 'a', - 't', 'a', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\r', 'a', 'l', - 'l', 'o', 'w', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', - 'U', '\n', '\023', 'm', 'a', 'x', '_', 'o', 'u', 't', 'b', 'o', - 'u', 'n', 'd', '_', 'f', 'r', 'a', 'm', 'e', 's', '\030', '\007', + 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'h', + 'p', 'a', 'c', 'k', 'T', 'a', 'b', 'l', 'e', 'S', 'i', 'z', + 'e', '\022', 'a', '\n', '\026', 'm', 'a', 'x', '_', 'c', 'o', 'n', + 'c', 'u', 'r', 'r', 'e', 'n', 't', '_', 's', 't', 'r', 'e', + 'a', 'm', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', + 'l', 'u', 'e', 'B', '\r', '\372', 'B', '\n', '*', '\010', '\030', '\377', + '\377', '\377', '\377', '\007', '(', '\001', 'R', '\024', 'm', 'a', 'x', 'C', + 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', 'S', 't', 'r', + 'e', 'a', 'm', 's', '\022', 'j', '\n', '\032', 'i', 'n', 'i', 't', + 'i', 'a', 'l', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'w', + 'i', 'n', 'd', 'o', 'w', '_', 's', 'i', 'z', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', - 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', - '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\021', 'm', 'a', 'x', - 'O', 'u', 't', 'b', 'o', 'u', 'n', 'd', 'F', 'r', 'a', 'm', - 'e', 's', '\022', 'd', '\n', '\033', 'm', 'a', 'x', '_', 'o', 'u', - 't', 'b', 'o', 'u', 'n', 'd', '_', 'c', 'o', 'n', 't', 'r', - 'o', 'l', '_', 'f', 'r', 'a', 'm', 'e', 's', '\030', '\010', ' ', - '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', - 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', - 'B', '\004', '*', '\002', '(', '\001', 'R', '\030', 'm', 'a', 'x', 'O', - 'u', 't', 'b', 'o', 'u', 'n', 'd', 'C', 'o', 'n', 't', 'r', - 'o', 'l', 'F', 'r', 'a', 'm', 'e', 's', '\022', '\204', '\001', '\n', - '1', 'm', 'a', 'x', '_', 'c', 'o', 'n', 's', 'e', 'c', 'u', - 't', 'i', 'v', 'e', '_', 'i', 'n', 'b', 'o', 'u', 'n', 'd', - '_', 'f', 'r', 'a', 'm', 'e', 's', '_', 'w', 'i', 't', 'h', - '_', 'e', 'm', 'p', 't', 'y', '_', 'p', 'a', 'y', 'l', 'o', - 'a', 'd', '\030', '\t', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', + 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\017', + '\372', 'B', '\014', '*', '\n', '\030', '\377', '\377', '\377', '\377', '\007', '(', + '\377', '\377', '\003', 'R', '\027', 'i', 'n', 'i', 't', 'i', 'a', 'l', + 'S', 't', 'r', 'e', 'a', 'm', 'W', 'i', 'n', 'd', 'o', 'w', + 'S', 'i', 'z', 'e', '\022', 'r', '\n', '\036', 'i', 'n', 'i', 't', + 'i', 'a', 'l', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 's', 'i', + 'z', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', - 'u', 'e', 'R', '+', 'm', 'a', 'x', 'C', 'o', 'n', 's', 'e', - 'c', 'u', 't', 'i', 'v', 'e', 'I', 'n', 'b', 'o', 'u', 'n', - 'd', 'F', 'r', 'a', 'm', 'e', 's', 'W', 'i', 't', 'h', 'E', - 'm', 'p', 't', 'y', 'P', 'a', 'y', 'l', 'o', 'a', 'd', '\022', - 'o', '\n', '&', 'm', 'a', 'x', '_', 'i', 'n', 'b', 'o', 'u', - 'n', 'd', '_', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '_', - 'f', 'r', 'a', 'm', 'e', 's', '_', 'p', 'e', 'r', '_', 's', - 't', 'r', 'e', 'a', 'm', '\030', '\n', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', - 'V', 'a', 'l', 'u', 'e', 'R', '!', 'm', 'a', 'x', 'I', 'n', - 'b', 'o', 'u', 'n', 'd', 'P', 'r', 'i', 'o', 'r', 'i', 't', - 'y', 'F', 'r', 'a', 'm', 'e', 's', 'P', 'e', 'r', 'S', 't', - 'r', 'e', 'a', 'm', '\022', '\221', '\001', '\n', '4', 'm', 'a', 'x', - '_', 'i', 'n', 'b', 'o', 'u', 'n', 'd', '_', 'w', 'i', 'n', - 'd', 'o', 'w', '_', 'u', 'p', 'd', 'a', 't', 'e', '_', 'f', - 'r', 'a', 'm', 'e', 's', '_', 'p', 'e', 'r', '_', 'd', 'a', - 't', 'a', '_', 'f', 'r', 'a', 'm', 'e', '_', 's', 'e', 'n', - 't', '\030', '\013', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', - 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', ',', - 'm', 'a', 'x', 'I', 'n', 'b', 'o', 'u', 'n', 'd', 'W', 'i', - 'n', 'd', 'o', 'w', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'r', - 'a', 'm', 'e', 's', 'P', 'e', 'r', 'D', 'a', 't', 'a', 'F', - 'r', 'a', 'm', 'e', 'S', 'e', 'n', 't', '\022', '^', '\n', '&', - 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', - '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', - 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'i', - 'n', 'g', '\030', '\014', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', - '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '!', 's', - 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', - 'I', 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', - 'e', 's', 's', 'a', 'g', 'i', 'n', 'g', '\022', 'z', '\n', '-', - 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_', 's', 't', 'r', - 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', - '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', - 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '\016', ' ', - '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\'', 'o', 'v', 'e', - 'r', 'r', 'i', 'd', 'e', 'S', 't', 'r', 'e', 'a', 'm', 'E', - 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', - 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', - '\022', 'z', '\n', '\032', 'c', 'u', 's', 't', 'o', 'm', '_', 's', - 'e', 't', 't', 'i', 'n', 'g', 's', '_', 'p', 'a', 'r', 'a', - 'm', 'e', 't', 'e', 'r', 's', '\030', '\r', ' ', '\003', '(', '\013', - '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', - 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'S', 'e', 't', - 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', - 'e', 'r', 'R', '\030', 'c', 'u', 's', 't', 'o', 'm', 'S', 'e', - 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', - 't', 'e', 'r', 's', '\022', 'Z', '\n', '\024', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'k', 'e', 'e', 'p', 'a', - 'l', 'i', 'v', 'e', '\030', '\017', ' ', '\001', '(', '\013', '2', '\'', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'K', 'e', - 'e', 'p', 'a', 'l', 'i', 'v', 'e', 'S', 'e', 't', 't', 'i', - 'n', 'g', 's', 'R', '\023', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', - '\022', 'P', '\n', '\021', 'u', 's', 'e', '_', 'o', 'g', 'h', 't', - 't', 'p', '2', '_', 'c', 'o', 'd', 'e', 'c', '\030', '\020', ' ', - '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\322', '\306', '\244', - '\341', '\006', '\002', '\010', '\001', 'R', '\017', 'u', 's', 'e', 'O', 'g', - 'h', 't', 't', 'p', '2', 'C', 'o', 'd', 'e', 'c', '\022', 'H', - '\n', '\021', 'm', 'a', 'x', '_', 'm', 'e', 't', 'a', 'd', 'a', - 't', 'a', '_', 's', 'i', 'z', 'e', '\030', '\021', ' ', '\001', '(', + 'u', 'e', 'B', '\017', '\372', 'B', '\014', '*', '\n', '\030', '\377', '\377', + '\377', '\377', '\007', '(', '\377', '\377', '\003', 'R', '\033', 'i', 'n', 'i', + 't', 'i', 'a', 'l', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 'W', 'i', 'n', 'd', 'o', 'w', 'S', 'i', 'z', 'e', + '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', + '\014', 'a', 'l', 'l', 'o', 'w', 'C', 'o', 'n', 'n', 'e', 'c', + 't', '\022', '%', '\n', '\016', 'a', 'l', 'l', 'o', 'w', '_', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\006', ' ', '\001', '(', + '\010', 'R', '\r', 'a', 'l', 'l', 'o', 'w', 'M', 'e', 't', 'a', + 'd', 'a', 't', 'a', '\022', 'U', '\n', '\023', 'm', 'a', 'x', '_', + 'o', 'u', 't', 'b', 'o', 'u', 'n', 'd', '_', 'f', 'r', 'a', + 'm', 'e', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', + 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', + 'R', '\021', 'm', 'a', 'x', 'O', 'u', 't', 'b', 'o', 'u', 'n', + 'd', 'F', 'r', 'a', 'm', 'e', 's', '\022', 'd', '\n', '\033', 'm', + 'a', 'x', '_', 'o', 'u', 't', 'b', 'o', 'u', 'n', 'd', '_', + 'c', 'o', 'n', 't', 'r', 'o', 'l', '_', 'f', 'r', 'a', 'm', + 'e', 's', '\030', '\010', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', + 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', + '\030', 'm', 'a', 'x', 'O', 'u', 't', 'b', 'o', 'u', 'n', 'd', + 'C', 'o', 'n', 't', 'r', 'o', 'l', 'F', 'r', 'a', 'm', 'e', + 's', '\022', '\204', '\001', '\n', '1', 'm', 'a', 'x', '_', 'c', 'o', + 'n', 's', 'e', 'c', 'u', 't', 'i', 'v', 'e', '_', 'i', 'n', + 'b', 'o', 'u', 'n', 'd', '_', 'f', 'r', 'a', 'm', 'e', 's', + '_', 'w', 'i', 't', 'h', '_', 'e', 'm', 'p', 't', 'y', '_', + 'p', 'a', 'y', 'l', 'o', 'a', 'd', '\030', '\t', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '6', '4', 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'm', 'a', 'x', - 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'S', 'i', 'z', 'e', - '\032', '\342', '\001', '\n', '\021', 'S', 'e', 't', 't', 'i', 'n', 'g', - 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\022', 'N', - '\n', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', - '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', + '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '+', 'm', 'a', 'x', + 'C', 'o', 'n', 's', 'e', 'c', 'u', 't', 'i', 'v', 'e', 'I', + 'n', 'b', 'o', 'u', 'n', 'd', 'F', 'r', 'a', 'm', 'e', 's', + 'W', 'i', 't', 'h', 'E', 'm', 'p', 't', 'y', 'P', 'a', 'y', + 'l', 'o', 'a', 'd', '\022', 'o', '\n', '&', 'm', 'a', 'x', '_', + 'i', 'n', 'b', 'o', 'u', 'n', 'd', '_', 'p', 'r', 'i', 'o', + 'r', 'i', 't', 'y', '_', 'f', 'r', 'a', 'm', 'e', 's', '_', + 'p', 'e', 'r', '_', 's', 't', 'r', 'e', 'a', 'm', '\030', '\n', + ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', + 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '!', + 'm', 'a', 'x', 'I', 'n', 'b', 'o', 'u', 'n', 'd', 'P', 'r', + 'i', 'o', 'r', 'i', 't', 'y', 'F', 'r', 'a', 'm', 'e', 's', + 'P', 'e', 'r', 'S', 't', 'r', 'e', 'a', 'm', '\022', '\221', '\001', + '\n', '4', 'm', 'a', 'x', '_', 'i', 'n', 'b', 'o', 'u', 'n', + 'd', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'u', 'p', 'd', + 'a', 't', 'e', '_', 'f', 'r', 'a', 'm', 'e', 's', '_', 'p', + 'e', 'r', '_', 'd', 'a', 't', 'a', '_', 'f', 'r', 'a', 'm', + 'e', '_', 's', 'e', 'n', 't', '\030', '\013', ' ', '\001', '(', '\013', + '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', + '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', + '\002', '(', '\001', 'R', ',', 'm', 'a', 'x', 'I', 'n', 'b', 'o', + 'u', 'n', 'd', 'W', 'i', 'n', 'd', 'o', 'w', 'U', 'p', 'd', + 'a', 't', 'e', 'F', 'r', 'a', 'm', 'e', 's', 'P', 'e', 'r', + 'D', 'a', 't', 'a', 'F', 'r', 'a', 'm', 'e', 'S', 'e', 'n', + 't', '\022', '^', '\n', '&', 's', 't', 'r', 'e', 'a', 'm', '_', + 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', + 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p', '_', 'm', 'e', + 's', 's', 'a', 'g', 'i', 'n', 'g', '\030', '\014', ' ', '\001', '(', + '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', + '.', '0', 'R', '!', 's', 't', 'r', 'e', 'a', 'm', 'E', 'r', + 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', 'd', + 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'i', 'n', + 'g', '\022', 'z', '\n', '-', 'o', 'v', 'e', 'r', 'r', 'i', 'd', + 'e', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', + 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', + 'd', '_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', + 'g', 'e', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', + 'R', '\'', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 't', + 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', + 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', + 's', 's', 'a', 'g', 'e', '\022', 'z', '\n', '\032', 'c', 'u', 's', + 't', 'o', 'm', '_', 's', 'e', 't', 't', 'i', 'n', 'g', 's', + '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', + '\r', ' ', '\003', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', + 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', + 's', '.', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', 'a', + 'r', 'a', 'm', 'e', 't', 'e', 'r', 'R', '\030', 'c', 'u', 's', + 't', 'o', 'm', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', + 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', 'Z', '\n', + '\024', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', + 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\030', '\017', ' ', + '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', + 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'R', '\023', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'K', 'e', 'e', 'p', + 'a', 'l', 'i', 'v', 'e', '\022', 'P', '\n', '\021', 'u', 's', 'e', + '_', 'o', 'g', 'h', 't', 't', 'p', '2', '_', 'c', 'o', 'd', + 'e', 'c', '\030', '\020', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', + 'B', '\010', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', 'R', '\017', + 'u', 's', 'e', 'O', 'g', 'h', 't', 't', 'p', '2', 'C', 'o', + 'd', 'e', 'c', '\022', 'H', '\n', '\021', 'm', 'a', 'x', '_', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 's', 'i', 'z', 'e', + '\030', '\021', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', - 'B', '\020', '\372', 'B', '\r', '*', '\006', '\030', '\377', '\377', '\003', '(', - '\000', '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'i', 'd', 'e', 'n', - 't', 'i', 'f', 'i', 'e', 'r', '\022', '<', '\n', '\005', 'v', 'a', - 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', - 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', - '\001', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '?', '\232', '\305', - '\210', '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', - 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', - 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'S', 'e', 't', 't', - 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', - 'r', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', + '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', + 'R', '\017', 'm', 'a', 'x', 'M', 'e', 't', 'a', 'd', 'a', 't', + 'a', 'S', 'i', 'z', 'e', '\032', '\342', '\001', '\n', '\021', 'S', 'e', + 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', + 't', 'e', 'r', '\022', 'N', '\n', '\n', 'i', 'd', 'e', 'n', 't', + 'i', 'f', 'i', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', + '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', + 'V', 'a', 'l', 'u', 'e', 'B', '\020', '\372', 'B', '\r', '*', '\006', + '\030', '\377', '\377', '\003', '(', '\000', '\212', '\001', '\002', '\020', '\001', 'R', + '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\022', + '<', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', + 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', + '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'v', 'a', 'l', 'u', + 'e', ':', '?', '\232', '\305', '\210', '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - '\"', '\245', '\001', '\n', '\023', 'G', 'r', 'p', 'c', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', - 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', - 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', - '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', - 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', - 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', - 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - '\"', '\330', '\002', '\n', '\024', 'H', 't', 't', 'p', '3', 'P', 'r', - 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', - 's', '\022', ']', '\n', '\025', 'q', 'u', 'i', 'c', '_', 'p', 'r', - 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', - 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', ')', '.', 'e', + '.', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', + 'a', 'm', 'e', 't', 'e', 'r', ':', '-', '\232', '\305', '\210', '\036', + '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', + 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\"', '\245', '\001', '\n', '\023', 'G', 'r', + 'p', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\022', '`', '\n', '\026', 'h', 't', 't', + 'p', '2', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', + 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', + 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', + 'O', 'p', 't', 'i', 'o', 'n', 's', ':', ',', '\232', '\305', '\210', + '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', + 'p', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\"', '\332', '\003', '\n', '\024', 'H', 't', + 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', + 'p', 't', 'i', 'o', 'n', 's', '\022', ']', '\n', '\025', 'q', 'u', + 'i', 'c', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', + 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\001', '(', + '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'Q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', + 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\023', 'q', 'u', + 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\022', 'z', '\n', '-', 'o', 'v', 'e', + 'r', 'r', 'i', 'd', 'e', '_', 's', 't', 'r', 'e', 'a', 'm', + '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', + 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p', '_', 'm', + 'e', 's', 's', 'a', 'g', 'e', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', + 'a', 'l', 'u', 'e', 'R', '\'', 'o', 'v', 'e', 'r', 'r', 'i', + 'd', 'e', 'S', 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', + 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', + 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', '\022', '>', '\n', + '\026', 'a', 'l', 'l', 'o', 'w', '_', 'e', 'x', 't', 'e', 'n', + 'd', 'e', 'd', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', '\030', + '\005', ' ', '\001', '(', '\010', 'B', '\010', '\322', '\306', '\244', '\341', '\006', + '\002', '\010', '\001', 'R', '\024', 'a', 'l', 'l', 'o', 'w', 'E', 'x', + 't', 'e', 'n', 'd', 'e', 'd', 'C', 'o', 'n', 'n', 'e', 'c', + 't', '\022', '%', '\n', '\016', 'a', 'l', 'l', 'o', 'w', '_', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\006', ' ', '\001', '(', + '\010', 'R', '\r', 'a', 'l', 'l', 'o', 'w', 'M', 'e', 't', 'a', + 'd', 'a', 't', 'a', '\022', '#', '\n', '\r', 'd', 'i', 's', 'a', + 'b', 'l', 'e', '_', 'q', 'p', 'a', 'c', 'k', '\030', '\007', ' ', + '\001', '(', '\010', 'R', '\014', 'd', 'i', 's', 'a', 'b', 'l', 'e', + 'Q', 'p', 'a', 'c', 'k', '\022', '[', '\n', '+', 'd', 'i', 's', + 'a', 'b', 'l', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', + 'i', 'o', 'n', '_', 'f', 'l', 'o', 'w', '_', 'c', 'o', 'n', + 't', 'r', 'o', 'l', '_', 'f', 'o', 'r', '_', 's', 't', 'r', + 'e', 'a', 'm', 's', '\030', '\010', ' ', '\001', '(', '\010', 'R', '&', + 'd', 'i', 's', 'a', 'b', 'l', 'e', 'C', 'o', 'n', 'n', 'e', + 'c', 't', 'i', 'o', 'n', 'F', 'l', 'o', 'w', 'C', 'o', 'n', + 't', 'r', 'o', 'l', 'F', 'o', 'r', 'S', 't', 'r', 'e', 'a', + 'm', 's', '\"', '\233', '\001', '\n', '\032', 'S', 'c', 'h', 'e', 'm', + 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', + 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'D', '\n', + '\023', 's', 'c', 'h', 'e', 'm', 'e', '_', 't', 'o', '_', 'o', + 'v', 'e', 'r', 'w', 'r', 'i', 't', 'e', '\030', '\001', ' ', '\001', + '(', '\t', 'B', '\022', '\372', 'B', '\017', 'r', '\r', 'R', '\004', 'h', + 't', 't', 'p', 'R', '\005', 'h', 't', 't', 'p', 's', 'H', '\000', + 'R', '\021', 's', 'c', 'h', 'e', 'm', 'e', 'T', 'o', 'O', 'v', + 'e', 'r', 'w', 'r', 'i', 't', 'e', '\022', '%', '\n', '\016', 'm', + 'a', 't', 'c', 'h', '_', 'u', 'p', 's', 't', 'r', 'e', 'a', + 'm', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\r', 'm', 'a', 't', + 'c', 'h', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', '\020', + '\n', '\016', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', + 't', 'i', 'o', 'n', 'B', '\201', '\001', '\n', '\"', 'i', 'o', '.', + 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'Q', 'u', 'i', 'c', - 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', - 'o', 'n', 's', 'R', '\023', 'q', 'u', 'i', 'c', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - '\022', 'z', '\n', '-', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', - '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', - 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', - '_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', - 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', - '\'', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 't', 'r', - 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', - 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', - 's', 'a', 'g', 'e', '\022', '>', '\n', '\026', 'a', 'l', 'l', 'o', - 'w', '_', 'e', 'x', 't', 'e', 'n', 'd', 'e', 'd', '_', 'c', - 'o', 'n', 'n', 'e', 'c', 't', '\030', '\005', ' ', '\001', '(', '\010', - 'B', '\010', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', 'R', '\024', - 'a', 'l', 'l', 'o', 'w', 'E', 'x', 't', 'e', 'n', 'd', 'e', - 'd', 'C', 'o', 'n', 'n', 'e', 'c', 't', '\022', '%', '\n', '\016', - 'a', 'l', 'l', 'o', 'w', '_', 'm', 'e', 't', 'a', 'd', 'a', - 't', 'a', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\r', 'a', 'l', - 'l', 'o', 'w', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\"', - '\233', '\001', '\n', '\032', 'S', 'c', 'h', 'e', 'm', 'e', 'H', 'e', - 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', - 'm', 'a', 't', 'i', 'o', 'n', '\022', 'D', '\n', '\023', 's', 'c', - 'h', 'e', 'm', 'e', '_', 't', 'o', '_', 'o', 'v', 'e', 'r', - 'w', 'r', 'i', 't', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', - '\022', '\372', 'B', '\017', 'r', '\r', 'R', '\004', 'h', 't', 't', 'p', - 'R', '\005', 'h', 't', 't', 'p', 's', 'H', '\000', 'R', '\021', 's', - 'c', 'h', 'e', 'm', 'e', 'T', 'o', 'O', 'v', 'e', 'r', 'w', - 'r', 'i', 't', 'e', '\022', '%', '\n', '\016', 'm', 'a', 't', 'c', - 'h', '_', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '\030', '\002', - ' ', '\001', '(', '\010', 'R', '\r', 'm', 'a', 't', 'c', 'h', 'U', - 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', '\020', '\n', '\016', 't', - 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', - 'n', 'B', '\201', '\001', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', - 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', 'B', '\r', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', - 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', - 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', - 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', - 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', - 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', - '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\r', 'P', 'r', 'o', + 't', 'o', 'c', 'o', 'l', 'P', 'r', 'o', 't', 'o', 'P', '\001', + 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', + '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', + 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', + 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', + 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', + '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', + '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[10] = { +static _upb_DefPool_Init *deps[11] = { &envoy_config_core_v3_extension_proto_upbdefinit, + &envoy_type_matcher_v3_string_proto_upbdefinit, &envoy_type_v3_percent_proto_upbdefinit, &google_protobuf_duration_proto_upbdefinit, &google_protobuf_wrappers_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c index bd0693f6da8..aa4ecb7cf4a 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c @@ -11,58 +11,88 @@ #include "envoy/config/core/v3/proxy_protocol.upbdefs.h" #include "envoy/config/core/v3/proxy_protocol.upb_minitable.h" +extern _upb_DefPool_Init envoy_config_core_v3_substitution_format_string_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[717] = { +static const char descriptor[1065] = { '\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'p', 'r', 'o', 'x', 'y', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '\032', '\035', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', - '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', - 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', - 'o', '\"', '\340', '\001', '\n', '\034', 'P', 'r', 'o', 'x', 'y', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'P', 'a', 's', 's', 'T', - 'h', 'r', 'o', 'u', 'g', 'h', 'T', 'L', 'V', 's', '\022', 'c', - '\n', '\n', 'm', 'a', 't', 'c', 'h', '_', 't', 'y', 'p', 'e', - '\030', '\001', ' ', '\001', '(', '\016', '2', 'D', '.', 'e', 'n', 'v', + 'r', 'e', '.', 'v', '3', '\032', '5', 'e', 'n', 'v', 'o', 'y', + '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', + '/', 'v', '3', '/', 's', 'u', 'b', 's', 't', 'i', 't', 'u', + 't', 'i', 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', + 's', 't', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', + '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', + 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', + 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', + 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', + 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\340', '\001', '\n', + '\034', 'P', 'r', 'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'P', 'a', 's', 's', 'T', 'h', 'r', 'o', 'u', 'g', + 'h', 'T', 'L', 'V', 's', '\022', 'c', '\n', '\n', 'm', 'a', 't', + 'c', 'h', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', + '\016', '2', 'D', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'P', 'r', 'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'P', 'a', 's', 's', 'T', 'h', 'r', 'o', 'u', 'g', + 'h', 'T', 'L', 'V', 's', '.', 'P', 'a', 's', 's', 'T', 'L', + 'V', 's', 'M', 'a', 't', 'c', 'h', 'T', 'y', 'p', 'e', 'R', + '\t', 'm', 'a', 't', 'c', 'h', 'T', 'y', 'p', 'e', '\022', '(', + '\n', '\010', 't', 'l', 'v', '_', 't', 'y', 'p', 'e', '\030', '\002', + ' ', '\003', '(', '\r', 'B', '\r', '\372', 'B', '\n', '\222', '\001', '\007', + '\"', '\005', '*', '\003', '\020', '\200', '\002', 'R', '\007', 't', 'l', 'v', + 'T', 'y', 'p', 'e', '\"', '1', '\n', '\021', 'P', 'a', 's', 's', + 'T', 'L', 'V', 's', 'M', 'a', 't', 'c', 'h', 'T', 'y', 'p', + 'e', '\022', '\017', '\n', '\013', 'I', 'N', 'C', 'L', 'U', 'D', 'E', + '_', 'A', 'L', 'L', '\020', '\000', '\022', '\013', '\n', '\007', 'I', 'N', + 'C', 'L', 'U', 'D', 'E', '\020', '\001', '\"', '\223', '\001', '\n', '\010', + 'T', 'l', 'v', 'E', 'n', 't', 'r', 'y', '\022', '\034', '\n', '\004', + 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\r', 'B', '\010', + '\372', 'B', '\005', '*', '\003', '\020', '\200', '\002', 'R', '\004', 't', 'y', + 'p', 'e', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', + '\002', ' ', '\001', '(', '\014', 'R', '\005', 'v', 'a', 'l', 'u', 'e', + '\022', 'S', '\n', '\r', 'f', 'o', 'r', 'm', 'a', 't', '_', 's', + 't', 'r', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', + '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', + 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', 'F', + 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', 'R', + '\014', 'f', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', + 'g', '\"', '\234', '\002', '\n', '\023', 'P', 'r', 'o', 'x', 'y', 'P', + 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', 'K', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', + '\030', '\001', ' ', '\001', '(', '\016', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'P', 'r', 'o', 'x', 'y', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'P', 'a', 's', 's', 'T', - 'h', 'r', 'o', 'u', 'g', 'h', 'T', 'L', 'V', 's', '.', 'P', - 'a', 's', 's', 'T', 'L', 'V', 's', 'M', 'a', 't', 'c', 'h', - 'T', 'y', 'p', 'e', 'R', '\t', 'm', 'a', 't', 'c', 'h', 'T', - 'y', 'p', 'e', '\022', '(', '\n', '\010', 't', 'l', 'v', '_', 't', - 'y', 'p', 'e', '\030', '\002', ' ', '\003', '(', '\r', 'B', '\r', '\372', - 'B', '\n', '\222', '\001', '\007', '\"', '\005', '*', '\003', '\020', '\200', '\002', - 'R', '\007', 't', 'l', 'v', 'T', 'y', 'p', 'e', '\"', '1', '\n', - '\021', 'P', 'a', 's', 's', 'T', 'L', 'V', 's', 'M', 'a', 't', - 'c', 'h', 'T', 'y', 'p', 'e', '\022', '\017', '\n', '\013', 'I', 'N', - 'C', 'L', 'U', 'D', 'E', '_', 'A', 'L', 'L', '\020', '\000', '\022', - '\013', '\n', '\007', 'I', 'N', 'C', 'L', 'U', 'D', 'E', '\020', '\001', - '\"', '\335', '\001', '\n', '\023', 'P', 'r', 'o', 'x', 'y', 'P', 'r', - 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', - '\022', 'K', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', - '\001', ' ', '\001', '(', '\016', '2', '1', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'P', 'r', 'o', 'x', 'y', 'P', 'r', - 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', - '.', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'R', '\007', 'v', 'e', - 'r', 's', 'i', 'o', 'n', '\022', '^', '\n', '\021', 'p', 'a', 's', - 's', '_', 't', 'h', 'r', 'o', 'u', 'g', 'h', '_', 't', 'l', - 'v', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '2', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'P', 'r', 'o', 'x', - 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'P', 'a', 's', - 's', 'T', 'h', 'r', 'o', 'u', 'g', 'h', 'T', 'L', 'V', 's', - 'R', '\017', 'p', 'a', 's', 's', 'T', 'h', 'r', 'o', 'u', 'g', - 'h', 'T', 'l', 'v', 's', '\"', '\031', '\n', '\007', 'V', 'e', 'r', - 's', 'i', 'o', 'n', '\022', '\006', '\n', '\002', 'V', '1', '\020', '\000', - '\022', '\006', '\n', '\002', 'V', '2', '\020', '\001', 'B', '\206', '\001', '\n', + 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', + 'g', '.', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'R', '\007', 'v', + 'e', 'r', 's', 'i', 'o', 'n', '\022', '^', '\n', '\021', 'p', 'a', + 's', 's', '_', 't', 'h', 'r', 'o', 'u', 'g', 'h', '_', 't', + 'l', 'v', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '2', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'P', 'r', 'o', + 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'P', 'a', + 's', 's', 'T', 'h', 'r', 'o', 'u', 'g', 'h', 'T', 'L', 'V', + 's', 'R', '\017', 'p', 'a', 's', 's', 'T', 'h', 'r', 'o', 'u', + 'g', 'h', 'T', 'l', 'v', 's', '\022', '=', '\n', '\n', 'a', 'd', + 'd', 'e', 'd', '_', 't', 'l', 'v', 's', '\030', '\003', ' ', '\003', + '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'l', 'v', 'E', 'n', 't', 'r', 'y', 'R', '\t', + 'a', 'd', 'd', 'e', 'd', 'T', 'l', 'v', 's', '\"', '\031', '\n', + '\007', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022', '\006', '\n', '\002', + 'V', '1', '\020', '\000', '\022', '\006', '\n', '\002', 'V', '2', '\020', '\001', + '\"', 'N', '\n', '\r', 'P', 'e', 'r', 'H', 'o', 's', 't', 'C', + 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\n', 'a', 'd', 'd', + 'e', 'd', '_', 't', 'l', 'v', 's', '\030', '\001', ' ', '\003', '(', + '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'T', 'l', 'v', 'E', 'n', 't', 'r', 'y', 'R', '\t', 'a', + 'd', 'd', 'e', 'd', 'T', 'l', 'v', 's', 'B', '\206', '\001', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', @@ -77,7 +107,8 @@ static const char descriptor[717] = { '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[3] = { +static _upb_DefPool_Init *deps[4] = { + &envoy_config_core_v3_substitution_format_string_proto_upbdefinit, &udpa_annotations_status_proto_upbdefinit, &validate_validate_proto_upbdefinit, NULL, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h index fdbfcf58481..6d446ec7da4 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h @@ -27,11 +27,21 @@ UPB_INLINE const upb_MessageDef *envoy_config_core_v3_ProxyProtocolPassThroughTL return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.ProxyProtocolPassThroughTLVs"); } +UPB_INLINE const upb_MessageDef *envoy_config_core_v3_TlvEntry_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_proxy_protocol_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.TlvEntry"); +} + UPB_INLINE const upb_MessageDef *envoy_config_core_v3_ProxyProtocolConfig_getmsgdef(upb_DefPool *s) { _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_proxy_protocol_proto_upbdefinit); return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.ProxyProtocolConfig"); } +UPB_INLINE const upb_MessageDef *envoy_config_core_v3_PerHostConfig_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_proxy_protocol_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.PerHostConfig"); +} + #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c index edefa198da8..89670edeb6e 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c @@ -18,7 +18,7 @@ extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[990] = { +static const char descriptor[1003] = { '\n', '5', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 's', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', '_', @@ -41,67 +41,68 @@ static const char descriptor[990] = { 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', - 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '<', '\n', '\021', 'J', + 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'I', '\n', '\021', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'O', 'p', 't', - 'i', 'o', 'n', 's', '\022', '\'', '\n', '\017', 's', 'o', 'r', 't', + 'i', 'o', 'n', 's', '\022', '4', '\n', '\017', 's', 'o', 'r', 't', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\030', - '\001', ' ', '\001', '(', '\010', 'R', '\016', 's', 'o', 'r', 't', 'P', - 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\"', '\362', '\003', - '\n', '\030', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', - 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', - 'n', 'g', '\022', '.', '\n', '\013', 't', 'e', 'x', 't', '_', 'f', - 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\t', 'B', - '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'H', '\000', 'R', '\n', 't', 'e', 'x', 't', 'F', 'o', 'r', 'm', - 'a', 't', '\022', 'D', '\n', '\013', 'j', 's', 'o', 'n', '_', 'f', - 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', - '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', - 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', - 'R', '\n', 'j', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', - '\022', 'P', '\n', '\022', 't', 'e', 'x', 't', '_', 'f', 'o', 'r', - 'm', 'a', 't', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\005', - ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', - 'c', 'e', 'H', '\000', 'R', '\020', 't', 'e', 'x', 't', 'F', 'o', - 'r', 'm', 'a', 't', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '*', - '\n', '\021', 'o', 'm', 'i', 't', '_', 'e', 'm', 'p', 't', 'y', - '_', 'v', 'a', 'l', 'u', 'e', 's', '\030', '\003', ' ', '\001', '(', - '\010', 'R', '\017', 'o', 'm', 'i', 't', 'E', 'm', 'p', 't', 'y', - 'V', 'a', 'l', 'u', 'e', 's', '\022', '.', '\n', '\014', 'c', 'o', - 'n', 't', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', '\030', '\004', - ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', - '\001', '\002', '\310', '\001', '\000', 'R', '\013', 'c', 'o', 'n', 't', 'e', - 'n', 't', 'T', 'y', 'p', 'e', '\022', 'J', '\n', '\n', 'f', 'o', - 'r', 'm', 'a', 't', 't', 'e', 'r', 's', '\030', '\006', ' ', '\003', - '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\n', - 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', 's', '\022', 'W', - '\n', '\023', 'j', 's', 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', - 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', - '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', + '\001', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'R', '\016', 's', 'o', 'r', 't', + 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\"', '\362', + '\003', '\n', '\030', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', + 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', + 'i', 'n', 'g', '\022', '.', '\n', '\013', 't', 'e', 'x', 't', '_', + 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\t', + 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', + '0', 'H', '\000', 'R', '\n', 't', 'e', 'x', 't', 'F', 'o', 'r', + 'm', 'a', 't', '\022', 'D', '\n', '\013', 'j', 's', 'o', 'n', '_', + 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', + 't', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', + '\000', 'R', '\n', 'j', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', + 't', '\022', 'P', '\n', '\022', 't', 'e', 'x', 't', '_', 'f', 'o', + 'r', 'm', 'a', 't', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', + '\005', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', + 'r', 'c', 'e', 'H', '\000', 'R', '\020', 't', 'e', 'x', 't', 'F', + 'o', 'r', 'm', 'a', 't', 'S', 'o', 'u', 'r', 'c', 'e', '\022', + '*', '\n', '\021', 'o', 'm', 'i', 't', '_', 'e', 'm', 'p', 't', + 'y', '_', 'v', 'a', 'l', 'u', 'e', 's', '\030', '\003', ' ', '\001', + '(', '\010', 'R', '\017', 'o', 'm', 'i', 't', 'E', 'm', 'p', 't', + 'y', 'V', 'a', 'l', 'u', 'e', 's', '\022', '.', '\n', '\014', 'c', + 'o', 'n', 't', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', '\030', + '\004', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', + '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\013', 'c', 'o', 'n', 't', + 'e', 'n', 't', 'T', 'y', 'p', 'e', '\022', 'J', '\n', '\n', 'f', + 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', 's', '\030', '\006', ' ', + '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', - 't', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\021', 'j', 's', - 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'O', 'p', 't', 'i', - 'o', 'n', 's', 'B', '\r', '\n', '\006', 'f', 'o', 'r', 'm', 'a', - 't', '\022', '\003', '\370', 'B', '\001', 'B', '\221', '\001', '\n', '\"', 'i', - 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\035', 'S', - 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', 'F', - 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', 'P', - 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', - 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', - 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', - 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', - 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', - 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', - 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', - 'p', 'r', 'o', 't', 'o', '3', + 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', + '\n', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', 's', '\022', + 'W', '\n', '\023', 'j', 's', 'o', 'n', '_', 'f', 'o', 'r', 'm', + 'a', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\007', + ' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', + 'a', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\021', 'j', + 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'O', 'p', 't', + 'i', 'o', 'n', 's', 'B', '\r', '\n', '\006', 'f', 'o', 'r', 'm', + 'a', 't', '\022', '\003', '\370', 'B', '\001', 'B', '\221', '\001', '\n', '\"', + 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', + 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\035', + 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', + 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', + 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', + 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', + 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', + 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', + 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', + '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', + 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', + '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[7] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c index d5b59910ac5..43912126c71 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c @@ -16,11 +16,13 @@ extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_health_check_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; +extern _upb_DefPool_Init xds_core_v3_collection_entry_proto_upbdefinit; +extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[2559] = { +static const char descriptor[2726] = { '\n', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '/', 'v', '3', '/', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', @@ -42,207 +44,223 @@ static const char descriptor[2559] = { 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', - 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', - 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', - 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', - 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\"', '\260', '\005', '\n', '\010', 'E', 'n', - 'd', 'p', 'o', 'i', 'n', 't', '\022', '7', '\n', '\007', 'a', 'd', - 'd', 'r', 'e', 's', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', - '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', - 'd', 'd', 'r', 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', 'r', - 'e', 's', 's', '\022', 'd', '\n', '\023', 'h', 'e', 'a', 'l', 't', - 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'c', 'o', 'n', 'f', - 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '4', '.', 'e', + 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', + 'x', 'd', 's', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', + 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '_', 'e', + 'n', 't', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', + 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', + 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', + 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', + 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', + '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', + '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', + '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', + 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', + 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', + '.', 'p', 'r', 'o', 't', 'o', '\"', '\260', '\005', '\n', '\010', 'E', + 'n', 'd', 'p', 'o', 'i', 'n', 't', '\022', '7', '\n', '\007', 'a', + 'd', 'd', 'r', 'e', 's', 's', '\030', '\001', ' ', '\001', '(', '\013', + '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', + 'r', 'e', 's', 's', '\022', 'd', '\n', '\023', 'h', 'e', 'a', 'l', + 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '4', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'v', '3', + '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'H', 'e', + 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'C', 'o', 'n', + 'f', 'i', 'g', 'R', '\021', 'h', 'e', 'a', 'l', 't', 'h', 'C', + 'h', 'e', 'c', 'k', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\032', + '\n', '\010', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e', '\030', '\003', + ' ', '\001', '(', '\t', 'R', '\010', 'h', 'o', 's', 't', 'n', 'a', + 'm', 'e', '\022', 'g', '\n', '\024', 'a', 'd', 'd', 'i', 't', 'i', + 'o', 'n', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', + 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'v', '3', '.', - 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'H', 'e', 'a', - 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'C', 'o', 'n', 'f', - 'i', 'g', 'R', '\021', 'h', 'e', 'a', 'l', 't', 'h', 'C', 'h', - 'e', 'c', 'k', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\032', '\n', - '\010', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e', '\030', '\003', ' ', - '\001', '(', '\t', 'R', '\010', 'h', 'o', 's', 't', 'n', 'a', 'm', - 'e', '\022', 'g', '\n', '\024', 'a', 'd', 'd', 'i', 't', 'i', 'o', - 'n', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', 'e', - 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '4', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', - 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'v', '3', '.', 'E', - 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'A', 'd', 'd', 'i', + 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'A', 'd', 'd', + 'i', 't', 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', + 's', 's', 'R', '\023', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', + 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\032', + '\212', '\002', '\n', '\021', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', + 'e', 'c', 'k', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '(', '\n', + '\n', 'p', 'o', 'r', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', + '\001', ' ', '\001', '(', '\r', 'B', '\t', '\372', 'B', '\006', '*', '\004', + '\030', '\377', '\377', '\003', 'R', '\t', 'p', 'o', 'r', 't', 'V', 'a', + 'l', 'u', 'e', '\022', '\032', '\n', '\010', 'h', 'o', 's', 't', 'n', + 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', 'h', + 'o', 's', 't', 'n', 'a', 'm', 'e', '\022', '7', '\n', '\007', 'a', + 'd', 'd', 'r', 'e', 's', 's', '\030', '\003', ' ', '\001', '(', '\013', + '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', + 'r', 'e', 's', 's', '\022', '=', '\n', '\033', 'd', 'i', 's', 'a', + 'b', 'l', 'e', '_', 'a', 'c', 't', 'i', 'v', 'e', '_', 'h', + 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', + '\004', ' ', '\001', '(', '\010', 'R', '\030', 'd', 'i', 's', 'a', 'b', + 'l', 'e', 'A', 'c', 't', 'i', 'v', 'e', 'H', 'e', 'a', 'l', + 't', 'h', 'C', 'h', 'e', 'c', 'k', ':', '7', '\232', '\305', '\210', + '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', + 't', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'H', + 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'C', 'o', + 'n', 'f', 'i', 'g', '\032', 'L', '\n', '\021', 'A', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', - 's', 'R', '\023', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', - 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\032', '\212', - '\002', '\n', '\021', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', - 'c', 'k', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '(', '\n', '\n', - 'p', 'o', 'r', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', - ' ', '\001', '(', '\r', 'B', '\t', '\372', 'B', '\006', '*', '\004', '\030', - '\377', '\377', '\003', 'R', '\t', 'p', 'o', 'r', 't', 'V', 'a', 'l', - 'u', 'e', '\022', '\032', '\n', '\010', 'h', 'o', 's', 't', 'n', 'a', - 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', 'h', 'o', - 's', 't', 'n', 'a', 'm', 'e', '\022', '7', '\n', '\007', 'a', 'd', - 'd', 'r', 'e', 's', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', - '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', - 'd', 'd', 'r', 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', 'r', - 'e', 's', 's', '\022', '=', '\n', '\033', 'd', 'i', 's', 'a', 'b', - 'l', 'e', '_', 'a', 'c', 't', 'i', 'v', 'e', '_', 'h', 'e', - 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\004', - ' ', '\001', '(', '\010', 'R', '\030', 'd', 'i', 's', 'a', 'b', 'l', - 'e', 'A', 'c', 't', 'i', 'v', 'e', 'H', 'e', 'a', 'l', 't', - 'h', 'C', 'h', 'e', 'c', 'k', ':', '7', '\232', '\305', '\210', '\036', - '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', - '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'H', 'e', - 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'C', 'o', 'n', - 'f', 'i', 'g', '\032', 'L', '\n', '\021', 'A', 'd', 'd', 'i', 't', - 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', - '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', - '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', - 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', ':', '%', '\232', - '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', + 's', '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', + '\030', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', + 's', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', ':', '%', + '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', + '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'e', 'n', 'd', 'p', + 'o', 'i', 'n', 't', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', + 't', '\"', '\221', '\003', '\n', '\n', 'L', 'b', 'E', 'n', 'd', 'p', + 'o', 'i', 'n', 't', '\022', '@', '\n', '\010', 'e', 'n', 'd', 'p', + 'o', 'i', 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'v', + '3', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'H', '\000', + 'R', '\010', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '\022', '%', + '\n', '\r', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'n', + 'a', 'm', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'H', '\000', 'R', + '\014', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'N', 'a', 'm', + 'e', '\022', 'G', '\n', '\r', 'h', 'e', 'a', 'l', 't', 'h', '_', + 's', 't', 'a', 't', 'u', 's', '\030', '\002', ' ', '\001', '(', '\016', + '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'H', 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', 'u', 's', + 'R', '\014', 'h', 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', + 'u', 's', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', + 't', 'a', '\030', '\003', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', + 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', + 't', 'a', '\022', 'Y', '\n', '\025', 'l', 'o', 'a', 'd', '_', 'b', + 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', '_', 'w', 'e', 'i', + 'g', 'h', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', + 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', + 'R', '\023', 'l', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', + 'i', 'n', 'g', 'W', 'e', 'i', 'g', 'h', 't', ':', '\'', '\232', + '\305', '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'e', 'n', 'd', 'p', 'o', - 'i', 'n', 't', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', - '\"', '\221', '\003', '\n', '\n', 'L', 'b', 'E', 'n', 'd', 'p', 'o', - 'i', 'n', 't', '\022', '@', '\n', '\010', 'e', 'n', 'd', 'p', 'o', - 'i', 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', + 'i', 'n', 't', '.', 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', + 'n', 't', 'B', '\021', '\n', '\017', 'h', 'o', 's', 't', '_', 'i', + 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\"', 'N', '\n', + '\024', 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', + 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '6', '\n', + '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\030', '\001', ' ', '\001', + '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', + 'i', 'o', 'n', 'E', 'n', 't', 'r', 'y', 'R', '\007', 'e', 'n', + 't', 'r', 'i', 'e', 's', '\"', '\222', '\001', '\n', '\031', 'L', 'e', + 'd', 's', 'C', 'l', 'u', 's', 't', 'e', 'r', 'L', 'o', 'c', + 'a', 'l', 'i', 't', 'y', 'C', 'o', 'n', 'f', 'i', 'g', '\022', + 'C', '\n', '\013', 'l', 'e', 'd', 's', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', + 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\n', 'l', 'e', + 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '0', '\n', '\024', + 'l', 'e', 'd', 's', '_', 'c', 'o', 'l', 'l', 'e', 'c', 't', + 'i', 'o', 'n', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', + '(', '\t', 'R', '\022', 'l', 'e', 'd', 's', 'C', 'o', 'l', 'l', + 'e', 'c', 't', 'i', 'o', 'n', 'N', 'a', 'm', 'e', '\"', '\253', + '\006', '\n', '\023', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'L', + 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', '\022', ':', + '\n', '\010', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '\030', '\001', + ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', + 'R', '\010', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '\022', ':', + '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\t', + ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'G', + '\n', '\014', 'l', 'b', '_', 'e', 'n', 'd', 'p', 'o', 'i', 'n', + 't', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '$', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'v', '3', '.', + 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'R', '\013', + 'l', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', '\022', + '\203', '\001', '\n', '\027', 'l', 'o', 'a', 'd', '_', 'b', 'a', 'l', + 'a', 'n', 'c', 'e', 'r', '_', 'e', 'n', 'd', 'p', 'o', 'i', + 'n', 't', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', 'v', '3', - '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'H', '\000', 'R', - '\010', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '\022', '%', '\n', - '\r', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'n', 'a', - 'm', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\014', - 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'N', 'a', 'm', 'e', - '\022', 'G', '\n', '\r', 'h', 'e', 'a', 'l', 't', 'h', '_', 's', - 't', 'a', 't', 'u', 's', '\030', '\002', ' ', '\001', '(', '\016', '2', - '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', - 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', 'u', 's', 'R', - '\014', 'h', 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', 'u', - 's', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '\030', '\003', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', - 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '\022', 'Y', '\n', '\025', 'l', 'o', 'a', 'd', '_', 'b', 'a', + '.', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'L', 'b', 'E', + 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', '.', 'L', 'b', 'E', + 'n', 'd', 'p', 'o', 'i', 'n', 't', 'L', 'i', 's', 't', 'B', + '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', + 'H', '\000', 'R', '\025', 'l', 'o', 'a', 'd', 'B', 'a', 'l', 'a', + 'n', 'c', 'e', 'r', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', + 's', '\022', 'v', '\n', '\034', 'l', 'e', 'd', 's', '_', 'c', 'l', + 'u', 's', 't', 'e', 'r', '_', 'l', 'o', 'c', 'a', 'l', 'i', + 't', 'y', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\010', ' ', + '\001', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', + 'i', 'n', 't', '.', 'v', '3', '.', 'L', 'e', 'd', 's', 'C', + 'l', 'u', 's', 't', 'e', 'r', 'L', 'o', 'c', 'a', 'l', 'i', + 't', 'y', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\031', + 'l', 'e', 'd', 's', 'C', 'l', 'u', 's', 't', 'e', 'r', 'L', + 'o', 'c', 'a', 'l', 'i', 't', 'y', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', 'Y', '\n', '\025', 'l', 'o', 'a', 'd', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', '_', 'w', 'e', 'i', 'g', - 'h', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', + 'h', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\023', 'l', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', - 'n', 'g', 'W', 'e', 'i', 'g', 'h', 't', ':', '\'', '\232', '\305', - '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'e', 'n', 'd', 'p', 'o', 'i', - 'n', 't', '.', 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', - 't', 'B', '\021', '\n', '\017', 'h', 'o', 's', 't', '_', 'i', 'd', - 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\"', '\222', '\001', '\n', - '\031', 'L', 'e', 'd', 's', 'C', 'l', 'u', 's', 't', 'e', 'r', - 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', 'C', '\n', '\013', 'l', 'e', 'd', 's', '_', 'c', - 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', - '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', - 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', - '\n', 'l', 'e', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - '0', '\n', '\024', 'l', 'e', 'd', 's', '_', 'c', 'o', 'l', 'l', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'n', 'a', 'm', 'e', '\030', - '\002', ' ', '\001', '(', '\t', 'R', '\022', 'l', 'e', 'd', 's', 'C', - 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'N', 'a', 'm', - 'e', '\"', '\235', '\006', '\n', '\023', 'L', 'o', 'c', 'a', 'l', 'i', - 't', 'y', 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', - 's', '\022', ':', '\n', '\010', 'l', 'o', 'c', 'a', 'l', 'i', 't', - 'y', '\030', '\001', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'L', 'o', 'c', 'a', 'l', - 'i', 't', 'y', 'R', '\010', 'l', 'o', 'c', 'a', 'l', 'i', 't', - 'y', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '\030', '\t', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', - 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '\022', 'G', '\n', '\014', 'l', 'b', '_', 'e', 'n', 'd', 'p', - 'o', 'i', 'n', 't', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', - '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', - 'v', '3', '.', 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', - 't', 'R', '\013', 'l', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', - 't', 's', '\022', 'v', '\n', '\027', 'l', 'o', 'a', 'd', '_', 'b', - 'a', 'l', 'a', 'n', 'c', 'e', 'r', '_', 'e', 'n', 'd', 'p', - 'o', 'i', 'n', 't', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', - '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', - 'v', '3', '.', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'L', - 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', '.', 'L', - 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'L', 'i', 's', - 't', 'H', '\000', 'R', '\025', 'l', 'o', 'a', 'd', 'B', 'a', 'l', - 'a', 'n', 'c', 'e', 'r', 'E', 'n', 'd', 'p', 'o', 'i', 'n', - 't', 's', '\022', 'v', '\n', '\034', 'l', 'e', 'd', 's', '_', 'c', - 'l', 'u', 's', 't', 'e', 'r', '_', 'l', 'o', 'c', 'a', 'l', - 'i', 't', 'y', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\010', - ' ', '\001', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', - 'o', 'i', 'n', 't', '.', 'v', '3', '.', 'L', 'e', 'd', 's', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'L', 'o', 'c', 'a', 'l', - 'i', 't', 'y', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', - '\031', 'l', 'e', 'd', 's', 'C', 'l', 'u', 's', 't', 'e', 'r', - 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', 'Y', '\n', '\025', 'l', 'o', 'a', 'd', '_', 'b', - 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', '_', 'w', 'e', 'i', - 'g', 'h', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', - 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', - 'R', '\023', 'l', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', - 'i', 'n', 'g', 'W', 'e', 'i', 'g', 'h', 't', '\022', '$', '\n', - '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\005', ' ', - '\001', '(', '\r', 'B', '\010', '\372', 'B', '\005', '*', '\003', '\030', '\200', - '\001', 'R', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', - ':', '\n', '\t', 'p', 'r', 'o', 'x', 'i', 'm', 'i', 't', 'y', - '\030', '\006', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', - 'R', '\t', 'p', 'r', 'o', 'x', 'i', 'm', 'i', 't', 'y', '\032', - 'Y', '\n', '\016', 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', - 't', 'L', 'i', 's', 't', '\022', 'G', '\n', '\014', 'l', 'b', '_', - 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', '\030', '\001', ' ', - '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', - 'i', 'n', 't', '.', 'v', '3', '.', 'L', 'b', 'E', 'n', 'd', - 'p', 'o', 'i', 'n', 't', 'R', '\013', 'l', 'b', 'E', 'n', 'd', - 'p', 'o', 'i', 'n', 't', 's', ':', '0', '\232', '\305', '\210', '\036', - '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', - '.', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'L', 'b', 'E', - 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', 'B', '\013', '\n', '\t', - 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'B', '\227', '\001', - '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', - 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', - 't', '.', 'v', '3', 'B', '\027', 'E', 'n', 'd', 'p', 'o', 'i', - 'n', 't', 'C', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', - 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', - 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', - 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', - 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', - 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', - '/', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '/', 'v', '3', - ';', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'v', '3', '\272', - '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', - 't', 'o', '3', + 'n', 'g', 'W', 'e', 'i', 'g', 'h', 't', '\022', '$', '\n', '\010', + 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\005', ' ', '\001', + '(', '\r', 'B', '\010', '\372', 'B', '\005', '*', '\003', '\030', '\200', '\001', + 'R', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', ':', + '\n', '\t', 'p', 'r', 'o', 'x', 'i', 'm', 'i', 't', 'y', '\030', + '\006', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', + '\t', 'p', 'r', 'o', 'x', 'i', 'm', 'i', 't', 'y', '\032', 'Y', + '\n', '\016', 'L', 'b', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', + 'L', 'i', 's', 't', '\022', 'G', '\n', '\014', 'l', 'b', '_', 'e', + 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', '\030', '\001', ' ', '\003', + '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', + 'n', 't', '.', 'v', '3', '.', 'L', 'b', 'E', 'n', 'd', 'p', + 'o', 'i', 'n', 't', 'R', '\013', 'l', 'b', 'E', 'n', 'd', 'p', + 'o', 'i', 'n', 't', 's', ':', '0', '\232', '\305', '\210', '\036', '+', + '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '.', + 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'L', 'b', 'E', 'n', + 'd', 'p', 'o', 'i', 'n', 't', 's', 'B', '\013', '\n', '\t', 'l', + 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'B', '\227', '\001', '\n', + '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', + '.', 'v', '3', 'B', '\027', 'E', 'n', 'd', 'p', 'o', 'i', 'n', + 't', 'C', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', 'P', + 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', + 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', + 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', + 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', + 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', + 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '/', 'v', '3', ';', + 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'v', '3', '\272', '\200', + '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', + 'o', '3', }; -static _upb_DefPool_Init *deps[9] = { +static _upb_DefPool_Init *deps[11] = { &envoy_config_core_v3_address_proto_upbdefinit, &envoy_config_core_v3_base_proto_upbdefinit, &envoy_config_core_v3_config_source_proto_upbdefinit, &envoy_config_core_v3_health_check_proto_upbdefinit, &google_protobuf_wrappers_proto_upbdefinit, + &xds_core_v3_collection_entry_proto_upbdefinit, + &envoy_annotations_deprecation_proto_upbdefinit, &udpa_annotations_status_proto_upbdefinit, &udpa_annotations_versioning_proto_upbdefinit, &validate_validate_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h index e9fd6056f69..e40395b288d 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h @@ -42,6 +42,11 @@ UPB_INLINE const upb_MessageDef *envoy_config_endpoint_v3_LbEndpoint_getmsgdef(u return upb_DefPool_FindMessageByName(s, "envoy.config.endpoint.v3.LbEndpoint"); } +UPB_INLINE const upb_MessageDef *envoy_config_endpoint_v3_LbEndpointCollection_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_endpoint_v3_endpoint_components_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.endpoint.v3.LbEndpointCollection"); +} + UPB_INLINE const upb_MessageDef *envoy_config_endpoint_v3_LedsClusterLocalityConfig_getmsgdef(upb_DefPool *s) { _upb_DefPool_LoadDefInit(s, &envoy_config_endpoint_v3_endpoint_components_proto_upbdefinit); return upb_DefPool_FindMessageByName(s, "envoy.config.endpoint.v3.LedsClusterLocalityConfig"); diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c index ec3acc2a431..345866de481 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c @@ -14,6 +14,7 @@ extern _upb_DefPool_Init envoy_config_accesslog_v3_accesslog_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_address_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit; +extern _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_socket_option_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_listener_v3_api_listener_proto_upbdefinit; @@ -21,7 +22,6 @@ extern _upb_DefPool_Init envoy_config_listener_v3_listener_components_proto_upbd extern _upb_DefPool_Init envoy_config_listener_v3_udp_listener_config_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; -extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit; extern _upb_DefPool_Init xds_core_v3_collection_entry_proto_upbdefinit; extern _upb_DefPool_Init xds_type_matcher_v3_matcher_proto_upbdefinit; extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit; @@ -30,7 +30,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[4337] = { +static const char descriptor[4523] = { '\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', @@ -46,359 +46,375 @@ static const char descriptor[4337] = { 't', 'o', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', - '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', - 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', - 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', - 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', - 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', - 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', - 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '+', 'e', 'n', 'v', - 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'a', 'p', - 'i', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'p', - 'r', 'o', 't', 'o', '\032', '2', 'e', 'n', 'v', 'o', 'y', '/', - 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', - 'n', 'e', 'r', '/', 'v', '3', '/', 'l', 'i', 's', 't', 'e', - 'n', 'e', 'r', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', - 't', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '2', 'e', 'n', - 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', - 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'u', - 'd', 'p', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'p', 'r', 'o', 't', 'o', - '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', - 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', - 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\037', 'x', 'd', 's', '/', 'a', 'n', - 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', - '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', - 'o', '\032', '\"', 'x', 'd', 's', '/', 'c', 'o', 'r', 'e', '/', - 'v', '3', '/', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', - 'n', '_', 'e', 'n', 't', 'r', 'y', '.', 'p', 'r', 'o', 't', - 'o', '\032', '!', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', - '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', - 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', - 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', - 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', - 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 'e', 'c', 'u', - 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', + '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', + 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', + 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '.', + 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', + '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', + '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', + 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', + 'r', 'e', '/', 'v', '3', '/', 's', 'o', 'c', 'k', 'e', 't', + '_', 'o', 'p', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', + 'o', '\032', '+', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', + 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', + '/', 'v', '3', '/', 'a', 'p', 'i', '_', 'l', 'i', 's', 't', + 'e', 'n', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', '2', + 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', + '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', + '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', + 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', 'o', + 't', 'o', '\032', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', + 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', + 'r', '/', 'v', '3', '/', 'u', 'd', 'p', '_', 'l', 'i', 's', + 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', + 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', + 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', + 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', + 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', + 'x', 'd', 's', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', + 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '_', 'e', + 'n', 't', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', + 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', 'a', 't', 'c', + 'h', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', + 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', + 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', + 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', - 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', - 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\"', '\240', '\001', '\n', '\021', 'A', 'd', - 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', - 'e', 's', 's', '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', - 's', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', - 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', - '\022', 'R', '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', - 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\013', - '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', - 's', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'R', '\r', 's', - 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', - '\"', 'L', '\n', '\022', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', - 'C', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '6', - '\n', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\030', '\001', ' ', - '\003', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'l', 'l', 'e', 'c', - 't', 'i', 'o', 'n', 'E', 'n', 't', 'r', 'y', 'R', '\007', 'e', - 'n', 't', 'r', 'i', 'e', 's', '\"', '\276', '\030', '\n', '\010', 'L', - 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '\022', '\n', '\004', 'n', - 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', - 'a', 'm', 'e', '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', - 's', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', - 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', - '\022', '^', '\n', '\024', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', - 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', - '\030', '!', ' ', '\003', '(', '\013', '2', '+', '.', 'e', 'n', 'v', + 'i', 'o', 'n', 's', '/', 's', 'e', 'c', 'u', 'r', 'i', 't', + 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', + 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', + 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', + 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', + 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', + 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', + 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', + 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', + 't', 'o', '\"', '\240', '\001', '\n', '\021', 'A', 'd', 'd', 'i', 't', + 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', + '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', + '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', + 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\022', 'R', '\n', + '\016', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', + 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '+', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', + 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', 'O', 'v', + 'e', 'r', 'r', 'i', 'd', 'e', 'R', '\r', 's', 'o', 'c', 'k', + 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', 'L', '\n', + '\022', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'l', + 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '6', '\n', '\007', 'e', + 'n', 't', 'r', 'i', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', + '2', '\034', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', + 'n', 'E', 'n', 't', 'r', 'y', 'R', '\007', 'e', 'n', 't', 'r', + 'i', 'e', 's', '\"', '\357', '\031', '\n', '\010', 'L', 'i', 's', 't', + 'e', 'n', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', + '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', + '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', + '\002', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', + 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\022', '^', '\n', + '\024', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', '_', + 'a', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\030', '!', ' ', + '\003', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', + 'n', 'e', 'r', '.', 'v', '3', '.', 'A', 'd', 'd', 'i', 't', + 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', + 'R', '\023', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', + 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\022', '\037', '\n', + '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', + '\030', '\034', ' ', '\001', '(', '\t', 'R', '\n', 's', 't', 'a', 't', + 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'J', '\n', '\r', 'f', 'i', + 'l', 't', 'e', 'r', '_', 'c', 'h', 'a', 'i', 'n', 's', '\030', + '\003', ' ', '\003', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', + 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', + 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'R', '\014', 'f', 'i', + 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 's', '\022', 'N', + '\n', '\013', 'f', 'c', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '\030', '$', ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', + 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', + 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'F', 'c', 'd', 's', + 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\n', 'f', 'c', 'd', 's', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'N', '\n', '\024', 'f', 'i', + 'l', 't', 'e', 'r', '_', 'c', 'h', 'a', 'i', 'n', '_', 'm', + 'a', 't', 'c', 'h', 'e', 'r', '\030', ' ', ' ', '\001', '(', '\013', + '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'R', '\022', 'f', 'i', 'l', 't', + 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', + 'e', 'r', '\022', 'D', '\n', '\020', 'u', 's', 'e', '_', 'o', 'r', + 'i', 'g', 'i', 'n', 'a', 'l', '_', 'd', 's', 't', '\030', '\004', + ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', + 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'u', 's', + 'e', 'O', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', + '\022', 'W', '\n', '\024', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', + 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'h', 'a', 'i', 'n', + '\030', '\031', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'A', 'd', - 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', - 'e', 's', 's', 'R', '\023', 'a', 'd', 'd', 'i', 't', 'i', 'o', - 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', - '\022', '\037', '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', - 'f', 'i', 'x', '\030', '\034', ' ', '\001', '(', '\t', 'R', '\n', 's', - 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'J', '\n', - '\r', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'h', 'a', 'i', - 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '%', '.', 'e', + 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', + 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'R', '\022', 'd', + 'e', 'f', 'a', 'u', 'l', 't', 'F', 'i', 'l', 't', 'e', 'r', + 'C', 'h', 'a', 'i', 'n', '\022', 'o', '\n', '!', 'p', 'e', 'r', + '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', + 'b', 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', + '_', 'b', 'y', 't', 'e', 's', '\030', '\005', ' ', '\001', '(', '\013', + '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', + '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\212', '\223', '\267', '*', + '\002', '\010', '\001', 'R', '\035', 'p', 'e', 'r', 'C', 'o', 'n', 'n', + 'e', 'c', 't', 'i', 'o', 'n', 'B', 'u', 'f', 'f', 'e', 'r', + 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\022', ':', + '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\006', + ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'a', + '\n', '\r', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', + '_', 'v', '1', '\030', '\007', ' ', '\001', '(', '\013', '2', '/', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', + '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'D', 'e', + 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', 'B', '\013', + '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', + '\014', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', + '1', '\022', 'K', '\n', '\n', 'd', 'r', 'a', 'i', 'n', '_', 't', + 'y', 'p', 'e', '\030', '\010', ' ', '\001', '(', '\016', '2', ',', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', + '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'D', 'r', + 'a', 'i', 'n', 'T', 'y', 'p', 'e', 'R', '\t', 'd', 'r', 'a', + 'i', 'n', 'T', 'y', 'p', 'e', '\022', 'S', '\n', '\020', 'l', 'i', + 's', 't', 'e', 'n', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', + 'r', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', - 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'R', - '\014', 'f', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', - 's', '\022', 'X', '\n', '\024', 'f', 'i', 'l', 't', 'e', 'r', '_', - 'c', 'h', 'a', 'i', 'n', '_', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '\030', ' ', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', - 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', - 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'B', '\010', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', 'R', - '\022', 'f', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', - 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'D', '\n', '\020', 'u', - 's', 'e', '_', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', '_', - 'd', 's', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', - 'e', 'R', '\016', 'u', 's', 'e', 'O', 'r', 'i', 'g', 'i', 'n', - 'a', 'l', 'D', 's', 't', '\022', 'W', '\n', '\024', 'd', 'e', 'f', - 'a', 'u', 'l', 't', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', - 'c', 'h', 'a', 'i', 'n', '\030', '\031', ' ', '\001', '(', '\013', '2', - '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', - 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', - 'i', 'n', 'R', '\022', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'F', - 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', '\022', 'o', - '\n', '!', 'p', 'e', 'r', '_', 'c', 'o', 'n', 'n', 'e', 'c', - 't', 'i', 'o', 'n', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', - 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030', - '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', + 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', + 'e', 'r', 'R', '\017', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', + 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', 'S', '\n', '\030', 'l', + 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'f', 'i', 'l', 't', + 'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', + '\017', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', - 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', - '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\035', 'p', 'e', - 'r', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', - 'u', 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', 'B', 'y', - 't', 'e', 's', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', - 'a', 't', 'a', '\030', '\006', ' ', '\001', '(', '\013', '2', '\036', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', - 'a', 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', - 'a', 't', 'a', '\022', 'a', '\n', '\r', 'd', 'e', 'p', 'r', 'e', - 'c', 'a', 't', 'e', 'd', '_', 'v', '1', '\030', '\007', ' ', '\001', - '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', - 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', - 'e', 'r', '.', 'D', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', - 'd', 'V', '1', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', - '\003', '3', '.', '0', 'R', '\014', 'd', 'e', 'p', 'r', 'e', 'c', - 'a', 't', 'e', 'd', 'V', '1', '\022', 'K', '\n', '\n', 'd', 'r', - 'a', 'i', 'n', '_', 't', 'y', 'p', 'e', '\030', '\010', ' ', '\001', - '(', '\016', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', - 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', - 'e', 'r', '.', 'D', 'r', 'a', 'i', 'n', 'T', 'y', 'p', 'e', - 'R', '\t', 'd', 'r', 'a', 'i', 'n', 'T', 'y', 'p', 'e', '\022', - 'S', '\n', '\020', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', - 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\t', ' ', '\003', '(', - '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', - 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', - 'r', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\017', 'l', 'i', 's', - 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 's', - '\022', 'S', '\n', '\030', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', - '_', 'f', 'i', 'l', 't', 'e', 'r', 's', '_', 't', 'i', 'm', - 'e', 'o', 'u', 't', '\030', '\017', ' ', '\001', '(', '\013', '2', '\031', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', - 'n', 'R', '\026', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', - 'i', 'l', 't', 'e', 'r', 's', 'T', 'i', 'm', 'e', 'o', 'u', - 't', '\022', 'N', '\n', '$', 'c', 'o', 'n', 't', 'i', 'n', 'u', - 'e', '_', 'o', 'n', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', - 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', 's', '_', 't', 'i', - 'm', 'e', 'o', 'u', 't', '\030', '\021', ' ', '\001', '(', '\010', 'R', - ' ', 'c', 'o', 'n', 't', 'i', 'n', 'u', 'e', 'O', 'n', 'L', - 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', - 'r', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '<', '\n', - '\013', 't', 'r', 'a', 'n', 's', 'p', 'a', 'r', 'e', 'n', 't', - '\030', '\n', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\013', - 't', 'r', 'a', 'n', 's', 'p', 'a', 'r', 'e', 'n', 't', '\022', - '6', '\n', '\010', 'f', 'r', 'e', 'e', 'b', 'i', 'n', 'd', '\030', - '\013', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', + 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\026', 'l', 'i', + 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', + 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'N', '\n', '$', + 'c', 'o', 'n', 't', 'i', 'n', 'u', 'e', '_', 'o', 'n', '_', + 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'f', 'i', 'l', + 't', 'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', + '\030', '\021', ' ', '\001', '(', '\010', 'R', ' ', 'c', 'o', 'n', 't', + 'i', 'n', 'u', 'e', 'O', 'n', 'L', 'i', 's', 't', 'e', 'n', + 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 's', 'T', 'i', 'm', + 'e', 'o', 'u', 't', '\022', '<', '\n', '\013', 't', 'r', 'a', 'n', + 's', 'p', 'a', 'r', 'e', 'n', 't', '\030', '\n', ' ', '\001', '(', + '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', + 'V', 'a', 'l', 'u', 'e', 'R', '\013', 't', 'r', 'a', 'n', 's', + 'p', 'a', 'r', 'e', 'n', 't', '\022', '6', '\n', '\010', 'f', 'r', + 'e', 'e', 'b', 'i', 'n', 'd', '\030', '\013', ' ', '\001', '(', '\013', + '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', + 'a', 'l', 'u', 'e', 'R', '\010', 'f', 'r', 'e', 'e', 'b', 'i', + 'n', 'd', '\022', 'I', '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', + '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\r', ' ', '\003', + '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', + 'o', 'n', 'R', '\r', 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\022', 'X', '\n', '\032', 't', 'c', 'p', + '_', 'f', 'a', 's', 't', '_', 'o', 'p', 'e', 'n', '_', 'q', + 'u', 'e', 'u', 'e', '_', 'l', 'e', 'n', 'g', 't', 'h', '\030', + '\014', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', - 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\010', 'f', - 'r', 'e', 'e', 'b', 'i', 'n', 'd', '\022', 'I', '\n', '\016', 's', - 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', - 's', '\030', '\r', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', - 't', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\r', 's', 'o', 'c', - 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'X', - '\n', '\032', 't', 'c', 'p', '_', 'f', 'a', 's', 't', '_', 'o', - 'p', 'e', 'n', '_', 'q', 'u', 'e', 'u', 'e', '_', 'l', 'e', - 'n', 'g', 't', 'h', '\030', '\014', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'R', '\026', 't', 'c', 'p', 'F', 'a', 's', - 't', 'O', 'p', 'e', 'n', 'Q', 'u', 'e', 'u', 'e', 'L', 'e', - 'n', 'g', 't', 'h', '\022', 'S', '\n', '\021', 't', 'r', 'a', 'f', - 'f', 'i', 'c', '_', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', - 'n', '\030', '\020', ' ', '\001', '(', '\016', '2', '&', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'f', 'f', - 'i', 'c', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', 'R', - '\020', 't', 'r', 'a', 'f', 'f', 'i', 'c', 'D', 'i', 'r', 'e', - 'c', 't', 'i', 'o', 'n', '\022', '[', '\n', '\023', 'u', 'd', 'p', - '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '\022', ' ', '\001', '(', '\013', '2', '+', + 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', + '\026', 't', 'c', 'p', 'F', 'a', 's', 't', 'O', 'p', 'e', 'n', + 'Q', 'u', 'e', 'u', 'e', 'L', 'e', 'n', 'g', 't', 'h', '\022', + 'S', '\n', '\021', 't', 'r', 'a', 'f', 'f', 'i', 'c', '_', 'd', + 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\020', ' ', '\001', + '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'D', 'i', 'r', + 'e', 'c', 't', 'i', 'o', 'n', 'R', '\020', 't', 'r', 'a', 'f', + 'f', 'i', 'c', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', + '\022', '[', '\n', '\023', 'u', 'd', 'p', '_', 'l', 'i', 's', 't', + 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '\022', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', + 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'U', 'd', 'p', + 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', + 'i', 'g', 'R', '\021', 'u', 'd', 'p', 'L', 'i', 's', 't', 'e', + 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'H', '\n', + '\014', 'a', 'p', 'i', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', + 'r', '\030', '\023', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', + 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'A', + 'p', 'i', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\013', + 'a', 'p', 'i', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', + 'v', '\n', '\031', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', + 'n', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '_', 'c', 'o', + 'n', 'f', 'i', 'g', '\030', '\024', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', - '3', '.', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', - 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\021', 'u', 'd', 'p', - 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', 'H', '\n', '\014', 'a', 'p', 'i', '_', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', '\030', '\023', ' ', '\001', '(', '\013', - '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', - '.', 'v', '3', '.', 'A', 'p', 'i', 'L', 'i', 's', 't', 'e', - 'n', 'e', 'r', 'R', '\013', 'a', 'p', 'i', 'L', 'i', 's', 't', - 'e', 'n', 'e', 'r', '\022', 'v', '\n', '\031', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'b', 'a', 'l', 'a', 'n', - 'c', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\024', ' ', - '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', - 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', - 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', - 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', - 'f', 'i', 'g', 'R', '\027', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', - 'n', 'f', 'i', 'g', '\022', '*', '\n', '\n', 'r', 'e', 'u', 's', - 'e', '_', 'p', 'o', 'r', 't', '\030', '\025', ' ', '\001', '(', '\010', - 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', - '0', 'R', '\t', 'r', 'e', 'u', 's', 'e', 'P', 'o', 'r', 't', - '\022', 'F', '\n', '\021', 'e', 'n', 'a', 'b', 'l', 'e', '_', 'r', - 'e', 'u', 's', 'e', '_', 'p', 'o', 'r', 't', '\030', '\035', ' ', - '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'e', 'n', 'a', - 'b', 'l', 'e', 'R', 'e', 'u', 's', 'e', 'P', 'o', 'r', 't', - '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', - 'o', 'g', '\030', '\026', ' ', '\003', '(', '\013', '2', '$', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', - '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'R', '\t', - 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', '\022', 'F', '\n', - '\020', 't', 'c', 'p', '_', 'b', 'a', 'c', 'k', 'l', 'o', 'g', - '_', 's', 'i', 'z', 'e', '\030', '\030', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', - 'V', 'a', 'l', 'u', 'e', 'R', '\016', 't', 'c', 'p', 'B', 'a', - 'c', 'k', 'l', 'o', 'g', 'S', 'i', 'z', 'e', '\022', '\177', '\n', - '*', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', 's', '_', 't', 'o', '_', 'a', 'c', 'c', 'e', - 'p', 't', '_', 'p', 'e', 'r', '_', 's', 'o', 'c', 'k', 'e', - 't', '_', 'e', 'v', 'e', 'n', 't', '\030', '\"', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', - '*', '\002', ' ', '\000', 'R', '$', 'm', 'a', 'x', 'C', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', 'T', 'o', 'A', 'c', - 'c', 'e', 'p', 't', 'P', 'e', 'r', 'S', 'o', 'c', 'k', 'e', - 't', 'E', 'v', 'e', 'n', 't', '\022', '<', '\n', '\014', 'b', 'i', - 'n', 'd', '_', 't', 'o', '_', 'p', 'o', 'r', 't', '\030', '\032', - ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', - 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\n', 'b', 'i', - 'n', 'd', 'T', 'o', 'P', 'o', 'r', 't', '\022', 'h', '\n', '\021', - 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'l', 'i', 's', - 't', 'e', 'n', 'e', 'r', '\030', '\033', ' ', '\001', '(', '\013', '2', - '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', - 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', - 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'L', 'i', 's', 't', - 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', - 'R', '\020', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'L', 'i', - 's', 't', 'e', 'n', 'e', 'r', '\022', '!', '\n', '\014', 'e', 'n', - 'a', 'b', 'l', 'e', '_', 'm', 'p', 't', 'c', 'p', '\030', '\036', - ' ', '\001', '(', '\010', 'R', '\013', 'e', 'n', 'a', 'b', 'l', 'e', - 'M', 'p', 't', 'c', 'p', '\022', '7', '\n', '\030', 'i', 'g', 'n', - 'o', 'r', 'e', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 'c', - 'o', 'n', 'n', '_', 'l', 'i', 'm', 'i', 't', '\030', '\037', ' ', - '\001', '(', '\010', 'R', '\025', 'i', 'g', 'n', 'o', 'r', 'e', 'G', - 'l', 'o', 'b', 'a', 'l', 'C', 'o', 'n', 'n', 'L', 'i', 'm', - 'i', 't', '\022', '6', '\n', '\027', 'b', 'y', 'p', 'a', 's', 's', - '_', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '_', 'm', 'a', - 'n', 'a', 'g', 'e', 'r', '\030', '#', ' ', '\001', '(', '\010', 'R', - '\025', 'b', 'y', 'p', 'a', 's', 's', 'O', 'v', 'e', 'r', 'l', - 'o', 'a', 'd', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\032', 'w', - '\n', '\014', 'D', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', - 'V', '1', '\022', '<', '\n', '\014', 'b', 'i', 'n', 'd', '_', 't', - 'o', '_', 'p', 'o', 'r', 't', '\030', '\001', ' ', '\001', '(', '\013', - '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', - 'a', 'l', 'u', 'e', 'R', '\n', 'b', 'i', 'n', 'd', 'T', 'o', - 'P', 'o', 'r', 't', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', - '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', - '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'D', - 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', '\032', - '\374', '\002', '\n', '\027', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', - 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'n', '\n', '\r', 'e', 'x', 'a', 'c', 't', - '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '\030', '\001', ' ', '\001', - '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', - 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', - 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', - 'i', 'g', '.', 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', - 'n', 'c', 'e', 'H', '\000', 'R', '\014', 'e', 'x', 'a', 'c', 't', - 'B', 'a', 'l', 'a', 'n', 'c', 'e', '\022', 'S', '\n', '\016', 'e', - 'x', 't', 'e', 'n', 'd', '_', 'b', 'a', 'l', 'a', 'n', 'c', - 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', - 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', - 'f', 'i', 'g', 'H', '\000', 'R', '\r', 'e', 'x', 't', 'e', 'n', - 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'e', '\032', 'Q', '\n', '\014', - 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', - ':', 'A', '\232', '\305', '\210', '\036', '<', '\n', ':', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', - 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', - 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', - 'C', 'o', 'n', 'f', 'i', 'g', '.', 'E', 'x', 'a', 'c', 't', - 'B', 'a', 'l', 'a', 'n', 'c', 'e', ':', '4', '\232', '\305', '\210', - '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', + 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\027', + 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', + 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', + '*', '\n', '\n', 'r', 'e', 'u', 's', 'e', '_', 'p', 'o', 'r', + 't', '\030', '\025', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', + '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\t', 'r', 'e', + 'u', 's', 'e', 'P', 'o', 'r', 't', '\022', 'F', '\n', '\021', 'e', + 'n', 'a', 'b', 'l', 'e', '_', 'r', 'e', 'u', 's', 'e', '_', + 'p', 'o', 'r', 't', '\030', '\035', ' ', '\001', '(', '\013', '2', '\032', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', + 'u', 'e', 'R', '\017', 'e', 'n', 'a', 'b', 'l', 'e', 'R', 'e', + 'u', 's', 'e', 'P', 'o', 'r', 't', '\022', 'C', '\n', '\n', 'a', + 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '\030', '\026', ' ', + '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', + 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', + 's', 's', 'L', 'o', 'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', + 's', 'L', 'o', 'g', '\022', 'F', '\n', '\020', 't', 'c', 'p', '_', + 'b', 'a', 'c', 'k', 'l', 'o', 'g', '_', 's', 'i', 'z', 'e', + '\030', '\030', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', + 'R', '\016', 't', 'c', 'p', 'B', 'a', 'c', 'k', 'l', 'o', 'g', + 'S', 'i', 'z', 'e', '\022', '\177', '\n', '*', 'm', 'a', 'x', '_', + 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '_', + 't', 'o', '_', 'a', 'c', 'c', 'e', 'p', 't', '_', 'p', 'e', + 'r', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'e', 'v', 'e', + 'n', 't', '\030', '\"', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', + 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', ' ', '\000', 'R', + '$', 'm', 'a', 'x', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 's', 'T', 'o', 'A', 'c', 'c', 'e', 'p', 't', 'P', + 'e', 'r', 'S', 'o', 'c', 'k', 'e', 't', 'E', 'v', 'e', 'n', + 't', '\022', '<', '\n', '\014', 'b', 'i', 'n', 'd', '_', 't', 'o', + '_', 'p', 'o', 'r', 't', '\030', '\032', ' ', '\001', '(', '\013', '2', + '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', + 'l', 'u', 'e', 'R', '\n', 'b', 'i', 'n', 'd', 'T', 'o', 'P', + 'o', 'r', 't', '\022', 'h', '\n', '\021', 'i', 'n', 't', 'e', 'r', + 'n', 'a', 'l', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', + '\030', '\033', ' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', + 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', + 's', 't', 'e', 'n', 'e', 'r', '.', 'I', 'n', 't', 'e', 'r', + 'n', 'a', 'l', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', + 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\020', 'i', 'n', 't', + 'e', 'r', 'n', 'a', 'l', 'L', 'i', 's', 't', 'e', 'n', 'e', + 'r', '\022', '!', '\n', '\014', 'e', 'n', 'a', 'b', 'l', 'e', '_', + 'm', 'p', 't', 'c', 'p', '\030', '\036', ' ', '\001', '(', '\010', 'R', + '\013', 'e', 'n', 'a', 'b', 'l', 'e', 'M', 'p', 't', 'c', 'p', + '\022', '7', '\n', '\030', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'g', + 'l', 'o', 'b', 'a', 'l', '_', 'c', 'o', 'n', 'n', '_', 'l', + 'i', 'm', 'i', 't', '\030', '\037', ' ', '\001', '(', '\010', 'R', '\025', + 'i', 'g', 'n', 'o', 'r', 'e', 'G', 'l', 'o', 'b', 'a', 'l', + 'C', 'o', 'n', 'n', 'L', 'i', 'm', 'i', 't', '\022', '6', '\n', + '\027', 'b', 'y', 'p', 'a', 's', 's', '_', 'o', 'v', 'e', 'r', + 'l', 'o', 'a', 'd', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', + '\030', '#', ' ', '\001', '(', '\010', 'R', '\025', 'b', 'y', 'p', 'a', + 's', 's', 'O', 'v', 'e', 'r', 'l', 'o', 'a', 'd', 'M', 'a', + 'n', 'a', 'g', 'e', 'r', '\032', 'w', '\n', '\014', 'D', 'e', 'p', + 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', '\022', '<', '\n', + '\014', 'b', 'i', 'n', 'd', '_', 't', 'o', '_', 'p', 'o', 'r', + 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', + '\n', 'b', 'i', 'n', 'd', 'T', 'o', 'P', 'o', 'r', 't', ':', + ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's', + 't', 'e', 'n', 'e', 'r', '.', 'D', 'e', 'p', 'r', 'e', 'c', + 'a', 't', 'e', 'd', 'V', '1', '\032', '\374', '\002', '\n', '\027', 'C', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', + 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'n', + '\n', '\r', 'e', 'x', 'a', 'c', 't', '_', 'b', 'a', 'l', 'a', + 'n', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', 'G', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', + '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', + 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'E', 'x', + 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'H', '\000', + 'R', '\014', 'e', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', + 'c', 'e', '\022', 'S', '\n', '\016', 'e', 'x', 't', 'e', 'n', 'd', + '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '\030', '\002', ' ', '\001', + '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', + 'R', '\r', 'e', 'x', 't', 'e', 'n', 'd', 'B', 'a', 'l', 'a', + 'n', 'c', 'e', '\032', 'Q', '\n', '\014', 'E', 'x', 'a', 'c', 't', + 'B', 'a', 'l', 'a', 'n', 'c', 'e', ':', 'A', '\232', '\305', '\210', + '\036', '<', '\n', ':', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', - 'g', 'B', '\023', '\n', '\014', 'b', 'a', 'l', 'a', 'n', 'c', 'e', - '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\032', '\030', - '\n', '\026', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'L', 'i', - 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', - '\"', ')', '\n', '\t', 'D', 'r', 'a', 'i', 'n', 'T', 'y', 'p', - 'e', '\022', '\013', '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', - '\020', '\000', '\022', '\017', '\n', '\013', 'M', 'O', 'D', 'I', 'F', 'Y', - '_', 'O', 'N', 'L', 'Y', '\020', '\001', ':', '\034', '\232', '\305', '\210', - '\036', '\027', '\n', '\025', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', - 'r', 'B', '\024', '\n', '\022', 'l', 'i', 's', 't', 'e', 'n', 'e', - 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', - '\004', '\010', '\016', '\020', '\017', 'J', '\004', '\010', '\027', '\020', '\030', '\"', - '\021', '\n', '\017', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'M', - 'a', 'n', 'a', 'g', 'e', 'r', '\"', '\033', '\n', '\031', 'V', 'a', - 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'L', 'i', 's', 't', - 'e', 'n', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\"', - '\024', '\n', '\022', 'A', 'p', 'i', 'L', 'i', 's', 't', 'e', 'n', - 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'B', '\215', '\001', - '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', - 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', - 'r', '.', 'v', '3', 'B', '\r', 'L', 'i', 's', 't', 'e', 'n', - 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', - 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', - 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', - 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', - 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', - 'v', '3', ';', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'v', - '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', - 'r', 'o', 't', 'o', '3', + 'g', '.', 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', + 'c', 'e', ':', '4', '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', + 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', + 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', + 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', + 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\023', '\n', '\014', + 'b', 'a', 'l', 'a', 'n', 'c', 'e', '_', 't', 'y', 'p', 'e', + '\022', '\003', '\370', 'B', '\001', '\032', '\030', '\n', '\026', 'I', 'n', 't', + 'e', 'r', 'n', 'a', 'l', 'L', 'i', 's', 't', 'e', 'n', 'e', + 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\032', 'i', '\n', '\n', 'F', + 'c', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\022', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\004', 'n', 'a', 'm', 'e', '\022', 'G', '\n', '\r', 'c', 'o', 'n', + 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', + 'u', 'r', 'c', 'e', 'R', '\014', 'c', 'o', 'n', 'f', 'i', 'g', + 'S', 'o', 'u', 'r', 'c', 'e', '\"', ')', '\n', '\t', 'D', 'r', + 'a', 'i', 'n', 'T', 'y', 'p', 'e', '\022', '\013', '\n', '\007', 'D', + 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\017', '\n', '\013', + 'M', 'O', 'D', 'I', 'F', 'Y', '_', 'O', 'N', 'L', 'Y', '\020', + '\001', ':', '\034', '\232', '\305', '\210', '\036', '\027', '\n', '\025', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', + 'i', 's', 't', 'e', 'n', 'e', 'r', 'B', '\024', '\n', '\022', 'l', + 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 's', 'p', 'e', 'c', + 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\016', '\020', '\017', 'J', + '\004', '\010', '\027', '\020', '\030', '\"', '\021', '\n', '\017', 'L', 'i', 's', + 't', 'e', 'n', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', + '\"', '\033', '\n', '\031', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', + 'o', 'n', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'M', 'a', + 'n', 'a', 'g', 'e', 'r', '\"', '\024', '\n', '\022', 'A', 'p', 'i', + 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'M', 'a', 'n', 'a', + 'g', 'e', 'r', 'B', '\215', '\001', '\n', '&', 'i', 'o', '.', 'e', + 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', + 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', 'B', '\r', + 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'P', 'r', 'o', 't', + 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', + 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', + 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', + 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', + 't', 'e', 'n', 'e', 'r', '/', 'v', '3', ';', 'l', 'i', 's', + 't', 'e', 'n', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', + '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[19] = { &envoy_config_accesslog_v3_accesslog_proto_upbdefinit, &envoy_config_core_v3_address_proto_upbdefinit, &envoy_config_core_v3_base_proto_upbdefinit, + &envoy_config_core_v3_config_source_proto_upbdefinit, &envoy_config_core_v3_extension_proto_upbdefinit, &envoy_config_core_v3_socket_option_proto_upbdefinit, &envoy_config_listener_v3_api_listener_proto_upbdefinit, @@ -406,7 +422,6 @@ static _upb_DefPool_Init *deps[19] = { &envoy_config_listener_v3_udp_listener_config_proto_upbdefinit, &google_protobuf_duration_proto_upbdefinit, &google_protobuf_wrappers_proto_upbdefinit, - &xds_annotations_v3_status_proto_upbdefinit, &xds_core_v3_collection_entry_proto_upbdefinit, &xds_type_matcher_v3_matcher_proto_upbdefinit, &envoy_annotations_deprecation_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h index f2934d88dd5..e01cd0956ca 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h @@ -57,6 +57,11 @@ UPB_INLINE const upb_MessageDef *envoy_config_listener_v3_Listener_InternalListe return upb_DefPool_FindMessageByName(s, "envoy.config.listener.v3.Listener.InternalListenerConfig"); } +UPB_INLINE const upb_MessageDef *envoy_config_listener_v3_Listener_FcdsConfig_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_config_listener_v3_listener_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.config.listener.v3.Listener.FcdsConfig"); +} + UPB_INLINE const upb_MessageDef *envoy_config_listener_v3_ListenerManager_getmsgdef(upb_DefPool *s) { _upb_DefPool_LoadDefInit(s, &envoy_config_listener_v3_listener_proto_upbdefinit); return upb_DefPool_FindMessageByName(s, "envoy.config.listener.v3.ListenerManager"); diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c index aa279ce7284..a7529fb8c98 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c @@ -22,7 +22,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[1860] = { +static const char descriptor[1961] = { '\n', '*', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'q', 'u', 'i', 'c', '_', 'c', 'o', 'n', 'f', @@ -57,7 +57,7 @@ static const char descriptor[1860] = { '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', - '.', 'p', 'r', 'o', 't', 'o', '\"', '\211', '\n', '\n', '\023', 'Q', + '.', 'p', 'r', 'o', 't', 'o', '\"', '\356', '\n', '\n', '\023', 'Q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', ']', '\n', '\025', 'q', 'u', 'i', 'c', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', @@ -161,23 +161,32 @@ static const char descriptor[1860] = { 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '\030', '\r', ' ', '\001', '(', '\010', 'R', '\024', 'r', 'e', 'j', 'e', 'c', 't', 'N', 'e', 'w', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', - ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', '.', 'Q', 'u', 'i', 'c', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', 'B', '\217', '\001', '\n', '&', 'i', 'o', '.', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', 'B', '\017', 'Q', - 'u', 'i', 'c', 'C', 'o', 'n', 'f', 'i', 'g', 'P', 'r', 'o', - 't', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', - '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', - 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', - 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', - 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', ';', 'l', 'i', - 's', 't', 'e', 'n', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', - '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + '\022', 'c', '\n', '\033', 'm', 'a', 'x', '_', 's', 'e', 's', 's', + 'i', 'o', 'n', 's', '_', 'p', 'e', 'r', '_', 'e', 'v', 'e', + 'n', 't', '_', 'l', 'o', 'o', 'p', '\030', '\016', ' ', '\001', '(', + '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', + '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', + '*', '\002', ' ', '\000', 'R', '\027', 'm', 'a', 'x', 'S', 'e', 's', + 's', 'i', 'o', 'n', 's', 'P', 'e', 'r', 'E', 'v', 'e', 'n', + 't', 'L', 'o', 'o', 'p', ':', '0', '\232', '\305', '\210', '\036', '+', + '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', + 'Q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', + 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\217', '\001', '\n', '&', + 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', + 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', + 'v', '3', 'B', '\017', 'Q', 'u', 'i', 'c', 'C', 'o', 'n', 'f', + 'i', 'g', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', + 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', + 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', + 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', + 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', + 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', + 'v', '3', ';', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'v', + '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', + 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[11] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c index 20ab3dede7f..9040bb99aa7 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c @@ -18,7 +18,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[999] = { +static const char descriptor[1039] = { '\n', '-', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'm', 'e', 't', 'r', 'i', 'c', 's', '/', 'v', '3', '/', 'm', 'e', 't', 'r', 'i', 'c', 's', '_', 's', 'e', @@ -42,7 +42,7 @@ static const char descriptor[999] = { 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', - 't', 'o', '\"', '\347', '\003', '\n', '\024', 'M', 'e', 't', 'r', 'i', + 't', 'o', '\"', '\217', '\004', '\n', '\024', 'M', 'e', 't', 'r', 'i', 'c', 's', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'N', '\n', '\014', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\001', ' ', '\001', '(', @@ -78,31 +78,34 @@ static const char descriptor[999] = { 't', 'o', 'g', 'r', 'a', 'm', 'E', 'm', 'i', 't', 'M', 'o', 'd', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\021', 'h', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', - 'm', 'i', 't', 'M', 'o', 'd', 'e', ':', '3', '\232', '\305', '\210', - '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'm', 'e', 't', 'r', 'i', 'c', 's', - '.', 'v', '2', '.', 'M', 'e', 't', 'r', 'i', 'c', 's', 'S', - 'e', 'r', 'v', 'i', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', - '*', 'J', '\n', '\021', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', - 'm', 'E', 'm', 'i', 't', 'M', 'o', 'd', 'e', '\022', '\031', '\n', - '\025', 'S', 'U', 'M', 'M', 'A', 'R', 'Y', '_', 'A', 'N', 'D', - '_', 'H', 'I', 'S', 'T', 'O', 'G', 'R', 'A', 'M', '\020', '\000', - '\022', '\013', '\n', '\007', 'S', 'U', 'M', 'M', 'A', 'R', 'Y', '\020', - '\001', '\022', '\r', '\n', '\t', 'H', 'I', 'S', 'T', 'O', 'G', 'R', - 'A', 'M', '\020', '\002', 'B', '\220', '\001', '\n', '%', 'i', 'o', '.', - 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'm', 'e', 't', 'r', 'i', 'c', 's', '.', 'v', '3', 'B', '\023', - 'M', 'e', 't', 'r', 'i', 'c', 's', 'S', 'e', 'r', 'v', 'i', - 'c', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'H', 'g', - 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', - 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', - 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', - 'i', 'g', '/', 'm', 'e', 't', 'r', 'i', 'c', 's', '/', 'v', - '3', ';', 'm', 'e', 't', 'r', 'i', 'c', 's', 'v', '3', '\272', - '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', - 't', 'o', '3', + 'm', 'i', 't', 'M', 'o', 'd', 'e', '\022', '&', '\n', '\n', 'b', + 'a', 't', 'c', 'h', '_', 's', 'i', 'z', 'e', '\030', '\006', ' ', + '\001', '(', '\r', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\000', + 'R', '\t', 'b', 'a', 't', 'c', 'h', 'S', 'i', 'z', 'e', ':', + '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'm', 'e', 't', + 'r', 'i', 'c', 's', '.', 'v', '2', '.', 'M', 'e', 't', 'r', + 'i', 'c', 's', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'C', 'o', + 'n', 'f', 'i', 'g', '*', 'J', '\n', '\021', 'H', 'i', 's', 't', + 'o', 'g', 'r', 'a', 'm', 'E', 'm', 'i', 't', 'M', 'o', 'd', + 'e', '\022', '\031', '\n', '\025', 'S', 'U', 'M', 'M', 'A', 'R', 'Y', + '_', 'A', 'N', 'D', '_', 'H', 'I', 'S', 'T', 'O', 'G', 'R', + 'A', 'M', '\020', '\000', '\022', '\013', '\n', '\007', 'S', 'U', 'M', 'M', + 'A', 'R', 'Y', '\020', '\001', '\022', '\r', '\n', '\t', 'H', 'I', 'S', + 'T', 'O', 'G', 'R', 'A', 'M', '\020', '\002', 'B', '\220', '\001', '\n', + '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'm', 'e', 't', 'r', 'i', 'c', 's', '.', + 'v', '3', 'B', '\023', 'M', 'e', 't', 'r', 'i', 'c', 's', 'S', + 'e', 'r', 'v', 'i', 'c', 'e', 'P', 'r', 'o', 't', 'o', 'P', + '\001', 'Z', 'H', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', + 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', + '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', + 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', + 'c', 'o', 'n', 'f', 'i', 'g', '/', 'm', 'e', 't', 'r', 'i', + 'c', 's', '/', 'v', '3', ';', 'm', 'e', 't', 'r', 'i', 'c', + 's', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', + '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[7] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c index 2efca115789..fc475b5935e 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c @@ -19,7 +19,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[2166] = { +static const char descriptor[2227] = { '\n', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'm', 'e', 't', 'r', 'i', 'c', 's', '/', 'v', '3', '/', 's', 't', 'a', 't', 's', '.', 'p', 'r', 'o', 't', @@ -128,7 +128,7 @@ static const char descriptor[2166] = { 'e', 't', 'r', 'i', 'c', 's', '.', 'v', '2', '.', 'T', 'a', 'g', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'B', '\013', '\n', '\t', 't', 'a', 'g', '_', 'v', 'a', 'l', 'u', 'e', '\"', - '\222', '\001', '\n', '\027', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', + '\317', '\001', '\n', '\027', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'B', 'u', 'c', 'k', 'e', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\022', 'D', '\n', '\005', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', @@ -136,71 +136,76 @@ static const char descriptor[2166] = { 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'm', 'a', 't', 'c', - 'h', '\022', '1', '\n', '\007', 'b', 'u', 'c', 'k', 'e', 't', 's', - '\030', '\002', ' ', '\003', '(', '\001', 'B', '\027', '\372', 'B', '\024', '\222', - '\001', '\021', '\010', '\001', '\030', '\001', '\"', '\013', '\022', '\t', '!', '\000', - '\000', '\000', '\000', '\000', '\000', '\000', '\000', 'R', '\007', 'b', 'u', 'c', - 'k', 'e', 't', 's', '\"', '\317', '\001', '\n', '\n', 'S', 't', 'a', - 't', 's', 'd', 'S', 'i', 'n', 'k', '\022', '9', '\n', '\007', 'a', - 'd', 'd', 'r', 'e', 's', 's', '\030', '\001', ' ', '\001', '(', '\013', - '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'A', 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\007', 'a', - 'd', 'd', 'r', 'e', 's', 's', '\022', '*', '\n', '\020', 't', 'c', - 'p', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', 'a', - 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\016', - 't', 'c', 'p', 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', 'a', - 'm', 'e', '\022', '\026', '\n', '\006', 'p', 'r', 'e', 'f', 'i', 'x', - '\030', '\003', ' ', '\001', '(', '\t', 'R', '\006', 'p', 'r', 'e', 'f', - 'i', 'x', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'm', 'e', 't', 'r', 'i', 'c', 's', '.', 'v', '2', '.', 'S', - 't', 'a', 't', 's', 'd', 'S', 'i', 'n', 'k', 'B', '\027', '\n', - '\020', 's', 't', 'a', 't', 's', 'd', '_', 's', 'p', 'e', 'c', - 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\217', - '\002', '\n', '\r', 'D', 'o', 'g', 'S', 't', 'a', 't', 's', 'd', - 'S', 'i', 'n', 'k', '\022', '9', '\n', '\007', 'a', 'd', 'd', 'r', - 'e', 's', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', - 'r', 'e', 's', 's', 'H', '\000', 'R', '\007', 'a', 'd', 'd', 'r', - 'e', 's', 's', '\022', '\026', '\n', '\006', 'p', 'r', 'e', 'f', 'i', + 'h', '\022', '/', '\n', '\007', 'b', 'u', 'c', 'k', 'e', 't', 's', + '\030', '\002', ' ', '\003', '(', '\001', 'B', '\025', '\372', 'B', '\022', '\222', + '\001', '\017', '\030', '\001', '\"', '\013', '\022', '\t', '!', '\000', '\000', '\000', + '\000', '\000', '\000', '\000', '\000', 'R', '\007', 'b', 'u', 'c', 'k', 'e', + 't', 's', '\022', '=', '\n', '\004', 'b', 'i', 'n', 's', '\030', '\003', + ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', + 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\013', + '\372', 'B', '\010', '*', '\006', '\030', '\202', '\350', '\002', ' ', '\000', 'R', + '\004', 'b', 'i', 'n', 's', '\"', '\317', '\001', '\n', '\n', 'S', 't', + 'a', 't', 's', 'd', 'S', 'i', 'n', 'k', '\022', '9', '\n', '\007', + 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\001', ' ', '\001', '(', + '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\007', + 'a', 'd', 'd', 'r', 'e', 's', 's', '\022', '*', '\n', '\020', 't', + 'c', 'p', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', + 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'H', '\000', 'R', + '\016', 't', 'c', 'p', 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', + 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\006', 'p', 'r', 'e', - 'f', 'i', 'x', '\022', 'Z', '\n', '\026', 'm', 'a', 'x', '_', 'b', - 'y', 't', 'e', 's', '_', 'p', 'e', 'r', '_', 'd', 'a', 't', - 'a', 'g', 'r', 'a', 'm', '\030', '\004', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', - 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '2', '\002', - ' ', '\000', 'R', '\023', 'm', 'a', 'x', 'B', 'y', 't', 'e', 's', - 'P', 'e', 'r', 'D', 'a', 't', 'a', 'g', 'r', 'a', 'm', ':', - ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'm', 'e', 't', - 'r', 'i', 'c', 's', '.', 'v', '2', '.', 'D', 'o', 'g', 'S', - 't', 'a', 't', 's', 'd', 'S', 'i', 'n', 'k', 'B', '\033', '\n', - '\024', 'd', 'o', 'g', '_', 's', 't', 'a', 't', 's', 'd', '_', - 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', - 'B', '\001', 'J', '\004', '\010', '\002', '\020', '\003', '\"', 'Z', '\n', '\013', - 'H', 'y', 's', 't', 'r', 'i', 'x', 'S', 'i', 'n', 'k', '\022', - '\037', '\n', '\013', 'n', 'u', 'm', '_', 'b', 'u', 'c', 'k', 'e', - 't', 's', '\030', '\001', ' ', '\001', '(', '\003', 'R', '\n', 'n', 'u', - 'm', 'B', 'u', 'c', 'k', 'e', 't', 's', ':', '*', '\232', '\305', - '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'm', 'e', 't', 'r', 'i', 'c', - 's', '.', 'v', '2', '.', 'H', 'y', 's', 't', 'r', 'i', 'x', - 'S', 'i', 'n', 'k', 'B', '\207', '\001', '\n', '%', 'i', 'o', '.', - 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'm', 'e', 't', 'r', 'i', 'c', 's', '.', 'v', '3', 'B', '\n', - 'S', 't', 'a', 't', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', - 'Z', 'H', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', - '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', - 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', - 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', - 'o', 'n', 'f', 'i', 'g', '/', 'm', 'e', 't', 'r', 'i', 'c', - 's', '/', 'v', '3', ';', 'm', 'e', 't', 'r', 'i', 'c', 's', - 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', - 'p', 'r', 'o', 't', 'o', '3', + 'f', 'i', 'x', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'm', 'e', 't', 'r', 'i', 'c', 's', '.', 'v', '2', '.', + 'S', 't', 'a', 't', 's', 'd', 'S', 'i', 'n', 'k', 'B', '\027', + '\n', '\020', 's', 't', 'a', 't', 's', 'd', '_', 's', 'p', 'e', + 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', + '\217', '\002', '\n', '\r', 'D', 'o', 'g', 'S', 't', 'a', 't', 's', + 'd', 'S', 'i', 'n', 'k', '\022', '9', '\n', '\007', 'a', 'd', 'd', + 'r', 'e', 's', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\035', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', + 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\007', 'a', 'd', 'd', + 'r', 'e', 's', 's', '\022', '\026', '\n', '\006', 'p', 'r', 'e', 'f', + 'i', 'x', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\006', 'p', 'r', + 'e', 'f', 'i', 'x', '\022', 'Z', '\n', '\026', 'm', 'a', 'x', '_', + 'b', 'y', 't', 'e', 's', '_', 'p', 'e', 'r', '_', 'd', 'a', + 't', 'a', 'g', 'r', 'a', 'm', '\030', '\004', ' ', '\001', '(', '\013', + '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', + '4', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '2', + '\002', ' ', '\000', 'R', '\023', 'm', 'a', 'x', 'B', 'y', 't', 'e', + 's', 'P', 'e', 'r', 'D', 'a', 't', 'a', 'g', 'r', 'a', 'm', + ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'm', 'e', + 't', 'r', 'i', 'c', 's', '.', 'v', '2', '.', 'D', 'o', 'g', + 'S', 't', 'a', 't', 's', 'd', 'S', 'i', 'n', 'k', 'B', '\033', + '\n', '\024', 'd', 'o', 'g', '_', 's', 't', 'a', 't', 's', 'd', + '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', + '\370', 'B', '\001', 'J', '\004', '\010', '\002', '\020', '\003', '\"', 'Z', '\n', + '\013', 'H', 'y', 's', 't', 'r', 'i', 'x', 'S', 'i', 'n', 'k', + '\022', '\037', '\n', '\013', 'n', 'u', 'm', '_', 'b', 'u', 'c', 'k', + 'e', 't', 's', '\030', '\001', ' ', '\001', '(', '\003', 'R', '\n', 'n', + 'u', 'm', 'B', 'u', 'c', 'k', 'e', 't', 's', ':', '*', '\232', + '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'm', 'e', 't', 'r', 'i', + 'c', 's', '.', 'v', '2', '.', 'H', 'y', 's', 't', 'r', 'i', + 'x', 'S', 'i', 'n', 'k', 'B', '\207', '\001', '\n', '%', 'i', 'o', + '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'm', 'e', 't', 'r', 'i', 'c', 's', '.', 'v', '3', 'B', + '\n', 'S', 't', 'a', 't', 's', 'P', 'r', 'o', 't', 'o', 'P', + '\001', 'Z', 'H', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', + 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', + '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', + 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', + 'c', 'o', 'n', 'f', 'i', 'g', '/', 'm', 'e', 't', 'r', 'i', + 'c', 's', '/', 'v', '3', ';', 'm', 'e', 't', 'r', 'i', 'c', + 's', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', + '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[8] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c index 46fde7714c5..76beed28ccd 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c @@ -18,7 +18,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[2672] = { +static const char descriptor[2706] = { '\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '/', 'v', '3', '/', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', @@ -100,7 +100,7 @@ static const char descriptor[2672] = { 'd', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'B', '\024', '\n', '\r', 't', 'r', 'i', 'g', 'g', 'e', 'r', '_', 'o', 'n', 'e', 'o', 'f', '\022', '\003', - '\370', 'B', '\001', '\"', '\313', '\004', '\n', '\037', 'S', 'c', 'a', 'l', + '\370', 'B', '\001', '\"', '\355', '\004', '\n', '\037', 'S', 'c', 'a', 'l', 'e', 'T', 'i', 'm', 'e', 'r', 's', 'O', 'v', 'e', 'r', 'l', 'o', 'a', 'd', 'A', 'c', 't', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '~', '\n', '\023', 't', 'i', 'm', 'e', 'r', @@ -135,7 +135,7 @@ static const char descriptor[2672] = { 'e', 'r', 'c', 'e', 'n', 't', 'H', '\000', 'R', '\010', 'm', 'i', 'n', 'S', 'c', 'a', 'l', 'e', 'B', '\026', '\n', '\017', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '_', 'a', 'd', 'j', 'u', 's', - 't', '\022', '\003', '\370', 'B', '\001', '\"', '\244', '\001', '\n', '\t', 'T', + 't', '\022', '\003', '\370', 'B', '\001', '\"', '\306', '\001', '\n', '\t', 'T', 'i', 'm', 'e', 'r', 'T', 'y', 'p', 'e', '\022', '\017', '\n', '\013', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '#', '\n', '\037', 'H', 'T', 'T', 'P', '_', 'D', 'O', @@ -149,99 +149,102 @@ static const char descriptor[2672] = { 'E', 'C', 'T', '\020', '\003', '\022', '\"', '\n', '\036', 'H', 'T', 'T', 'P', '_', 'D', 'O', 'W', 'N', 'S', 'T', 'R', 'E', 'A', 'M', '_', 'C', 'O', 'N', 'N', 'E', 'C', 'T', 'I', 'O', 'N', '_', - 'M', 'A', 'X', '\020', '\004', '\"', '\344', '\001', '\n', '\016', 'O', 'v', - 'e', 'r', 'l', 'o', 'a', 'd', 'A', 'c', 't', 'i', 'o', 'n', - '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', - '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', - '\004', 'n', 'a', 'm', 'e', '\022', 'G', '\n', '\010', 't', 'r', 'i', - 'g', 'g', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', - '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', - 'v', '3', '.', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'B', '\010', - '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 't', 'r', - 'i', 'g', 'g', 'e', 'r', 's', '\022', '7', '\n', '\014', 't', 'y', - 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', - ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', - 'n', 'y', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', - 'f', 'i', 'g', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', + 'M', 'A', 'X', '\020', '\004', '\022', ' ', '\n', '\034', 'H', 'T', 'T', + 'P', '_', 'D', 'O', 'W', 'N', 'S', 'T', 'R', 'E', 'A', 'M', + '_', 'S', 'T', 'R', 'E', 'A', 'M', '_', 'F', 'L', 'U', 'S', + 'H', '\020', '\005', '\"', '\344', '\001', '\n', '\016', 'O', 'v', 'e', 'r', + 'l', 'o', 'a', 'd', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\033', + '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', + 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', + 'a', 'm', 'e', '\022', 'G', '\n', '\010', 't', 'r', 'i', 'g', 'g', + 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', '2', - 'a', 'l', 'p', 'h', 'a', '.', 'O', 'v', 'e', 'r', 'l', 'o', - 'a', 'd', 'A', 'c', 't', 'i', 'o', 'n', '\"', 'u', '\n', '\r', - 'L', 'o', 'a', 'd', 'S', 'h', 'e', 'd', 'P', 'o', 'i', 'n', - 't', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', - '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', - 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'G', '\n', '\010', 't', 'r', - 'i', 'g', 'g', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', - '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', - '.', 'v', '3', '.', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'B', - '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 't', - 'r', 'i', 'g', 'g', 'e', 'r', 's', '\"', 'p', '\n', '\023', 'B', - 'u', 'f', 'f', 'e', 'r', 'F', 'a', 'c', 't', 'o', 'r', 'y', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'Y', '\n', '%', 'm', 'i', - 'n', 'i', 'm', 'u', 'm', '_', 'a', 'c', 'c', 'o', 'u', 'n', - 't', '_', 't', 'o', '_', 't', 'r', 'a', 'c', 'k', '_', 'p', - 'o', 'w', 'e', 'r', '_', 'o', 'f', '_', 't', 'w', 'o', '\030', - '\001', ' ', '\001', '(', '\r', 'B', '\t', '\372', 'B', '\006', '*', '\004', - '\030', '8', '(', '\n', 'R', '\037', 'm', 'i', 'n', 'i', 'm', 'u', - 'm', 'A', 'c', 'c', 'o', 'u', 'n', 't', 'T', 'o', 'T', 'r', - 'a', 'c', 'k', 'P', 'o', 'w', 'e', 'r', 'O', 'f', 'T', 'w', - 'o', '\"', '\350', '\003', '\n', '\017', 'O', 'v', 'e', 'r', 'l', 'o', - 'a', 'd', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', 'D', '\n', - '\020', 'r', 'e', 'f', 'r', 'e', 's', 'h', '_', 'i', 'n', 't', - 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', - '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', 'R', '\017', 'r', 'e', 'f', 'r', 'e', 's', 'h', 'I', - 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', '`', '\n', '\021', 'r', - 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'm', 'o', 'n', 'i', - 't', 'o', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', ')', + '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', '3', + '.', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'B', '\010', '\372', 'B', + '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 't', 'r', 'i', 'g', + 'g', 'e', 'r', 's', '\022', '7', '\n', '\014', 't', 'y', 'p', 'e', + 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', + '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', + 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', + 'g', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'o', + 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', '2', 'a', 'l', + 'p', 'h', 'a', '.', 'O', 'v', 'e', 'r', 'l', 'o', 'a', 'd', + 'A', 'c', 't', 'i', 'o', 'n', '\"', 'u', '\n', '\r', 'L', 'o', + 'a', 'd', 'S', 'h', 'e', 'd', 'P', 'o', 'i', 'n', 't', '\022', + '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', + 'n', 'a', 'm', 'e', '\022', 'G', '\n', '\010', 't', 'r', 'i', 'g', + 'g', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', - '3', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'M', 'o', - 'n', 'i', 't', 'o', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', - '\002', '\010', '\001', 'R', '\020', 'r', 'e', 's', 'o', 'u', 'r', 'c', - 'e', 'M', 'o', 'n', 'i', 't', 'o', 'r', 's', '\022', 'B', '\n', - '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', - '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', - 'a', 'd', '.', 'v', '3', '.', 'O', 'v', 'e', 'r', 'l', 'o', - 'a', 'd', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\007', 'a', 'c', - 't', 'i', 'o', 'n', 's', '\022', 'P', '\n', '\017', 'l', 'o', 'a', - 'd', 's', 'h', 'e', 'd', '_', 'p', 'o', 'i', 'n', 't', 's', - '\030', '\005', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'o', 'v', - 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', '3', '.', 'L', 'o', - 'a', 'd', 'S', 'h', 'e', 'd', 'P', 'o', 'i', 'n', 't', 'R', - '\016', 'l', 'o', 'a', 'd', 's', 'h', 'e', 'd', 'P', 'o', 'i', - 'n', 't', 's', '\022', 'a', '\n', '\025', 'b', 'u', 'f', 'f', 'e', - 'r', '_', 'f', 'a', 'c', 't', 'o', 'r', 'y', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '-', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', - '3', '.', 'B', 'u', 'f', 'f', 'e', 'r', 'F', 'a', 'c', 't', - 'o', 'r', 'y', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'b', - 'u', 'f', 'f', 'e', 'r', 'F', 'a', 'c', 't', 'o', 'r', 'y', - 'C', 'o', 'n', 'f', 'i', 'g', ':', '4', '\232', '\305', '\210', '\036', - '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + '3', '.', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'B', '\010', '\372', + 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 't', 'r', 'i', + 'g', 'g', 'e', 'r', 's', '\"', 'p', '\n', '\023', 'B', 'u', 'f', + 'f', 'e', 'r', 'F', 'a', 'c', 't', 'o', 'r', 'y', 'C', 'o', + 'n', 'f', 'i', 'g', '\022', 'Y', '\n', '%', 'm', 'i', 'n', 'i', + 'm', 'u', 'm', '_', 'a', 'c', 'c', 'o', 'u', 'n', 't', '_', + 't', 'o', '_', 't', 'r', 'a', 'c', 'k', '_', 'p', 'o', 'w', + 'e', 'r', '_', 'o', 'f', '_', 't', 'w', 'o', '\030', '\001', ' ', + '\001', '(', '\r', 'B', '\t', '\372', 'B', '\006', '*', '\004', '\030', '8', + '(', '\n', 'R', '\037', 'm', 'i', 'n', 'i', 'm', 'u', 'm', 'A', + 'c', 'c', 'o', 'u', 'n', 't', 'T', 'o', 'T', 'r', 'a', 'c', + 'k', 'P', 'o', 'w', 'e', 'r', 'O', 'f', 'T', 'w', 'o', '\"', + '\350', '\003', '\n', '\017', 'O', 'v', 'e', 'r', 'l', 'o', 'a', 'd', + 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', 'D', '\n', '\020', 'r', + 'e', 'f', 'r', 'e', 's', 'h', '_', 'i', 'n', 't', 'e', 'r', + 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', + 'R', '\017', 'r', 'e', 'f', 'r', 'e', 's', 'h', 'I', 'n', 't', + 'e', 'r', 'v', 'a', 'l', '\022', '`', '\n', '\021', 'r', 'e', 's', + 'o', 'u', 'r', 'c', 'e', '_', 'm', 'o', 'n', 'i', 't', 'o', + 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', ')', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', '3', '.', + 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'M', 'o', 'n', 'i', + 't', 'o', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', + '\001', 'R', '\020', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'M', + 'o', 'n', 'i', 't', 'o', 'r', 's', '\022', 'B', '\n', '\007', 'a', + 'c', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', + '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', - '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'v', 'e', - 'r', 'l', 'o', 'a', 'd', 'M', 'a', 'n', 'a', 'g', 'e', 'r', - 'B', '\215', '\001', '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', - 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'v', '3', '.', 'O', 'v', 'e', 'r', 'l', 'o', 'a', 'd', + 'A', 'c', 't', 'i', 'o', 'n', 'R', '\007', 'a', 'c', 't', 'i', + 'o', 'n', 's', '\022', 'P', '\n', '\017', 'l', 'o', 'a', 'd', 's', + 'h', 'e', 'd', '_', 'p', 'o', 'i', 'n', 't', 's', '\030', '\005', + ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'o', 'v', 'e', 'r', - 'l', 'o', 'a', 'd', '.', 'v', '3', 'B', '\r', 'O', 'v', 'e', - 'r', 'l', 'o', 'a', 'd', 'P', 'r', 'o', 't', 'o', 'P', '\001', - 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', - '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', - 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', - 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', - 'o', 'n', 'f', 'i', 'g', '/', 'o', 'v', 'e', 'r', 'l', 'o', - 'a', 'd', '/', 'v', '3', ';', 'o', 'v', 'e', 'r', 'l', 'o', - 'a', 'd', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', - 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'l', 'o', 'a', 'd', '.', 'v', '3', '.', 'L', 'o', 'a', 'd', + 'S', 'h', 'e', 'd', 'P', 'o', 'i', 'n', 't', 'R', '\016', 'l', + 'o', 'a', 'd', 's', 'h', 'e', 'd', 'P', 'o', 'i', 'n', 't', + 's', '\022', 'a', '\n', '\025', 'b', 'u', 'f', 'f', 'e', 'r', '_', + 'f', 'a', 'c', 't', 'o', 'r', 'y', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '-', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', '3', '.', + 'B', 'u', 'f', 'f', 'e', 'r', 'F', 'a', 'c', 't', 'o', 'r', + 'y', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'b', 'u', 'f', + 'f', 'e', 'r', 'F', 'a', 'c', 't', 'o', 'r', 'y', 'C', 'o', + 'n', 'f', 'i', 'g', ':', '4', '\232', '\305', '\210', '\036', '/', '\n', + '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '.', 'v', + '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'v', 'e', 'r', 'l', + 'o', 'a', 'd', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'B', '\215', + '\001', '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', + 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'o', 'v', 'e', 'r', 'l', 'o', + 'a', 'd', '.', 'v', '3', 'B', '\r', 'O', 'v', 'e', 'r', 'l', + 'o', 'a', 'd', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'J', + 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', + 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', + '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', + 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', + 'f', 'i', 'g', '/', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', + '/', 'v', '3', ';', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', + 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', + 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[7] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c index e7d33ac9946..61c72692b40 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c @@ -12,6 +12,7 @@ #include "envoy/config/rbac/v3/rbac.upb_minitable.h" extern _upb_DefPool_Init envoy_config_core_v3_address_proto_upbdefinit; +extern _upb_DefPool_Init envoy_config_core_v3_cel_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_route_v3_route_components_proto_upbdefinit; extern _upb_DefPool_Init envoy_type_matcher_v3_filter_state_proto_upbdefinit; @@ -27,7 +28,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[4740] = { +static const char descriptor[4916] = { '\n', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', '/', 'r', 'b', 'a', 'c', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', @@ -35,398 +36,414 @@ static const char descriptor[4740] = { 'r', 'b', 'a', 'c', '.', 'v', '3', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'a', 'd', 'd', 'r', 'e', 's', - 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', + 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', - 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', - 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', ',', 'e', - 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', - 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r', 'o', 'u', - 't', 'e', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', - 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', - 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '/', 'v', '3', '/', 'f', 'i', 'l', 't', 'e', - 'r', '_', 's', 't', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', - 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', - 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', - '/', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'p', 'r', - 'o', 't', 'o', '\032', ' ', 'e', 'n', 'v', 'o', 'y', '/', 't', + 'r', 'e', '/', 'v', '3', '/', 'c', 'e', 'l', '.', 'p', 'r', + 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', + 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', + '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', + 'p', 'r', 'o', 't', 'o', '\032', ',', 'e', 'n', 'v', 'o', 'y', + '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', + 'e', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e', '_', 'c', + 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', + 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', - 'v', '3', '/', 'p', 'a', 't', 'h', '.', 'p', 'r', 'o', 't', - 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', - 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', - '/', 's', 't', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', - 'o', '\032', '\031', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', - 'e', '/', 'v', '3', '/', 'r', 'a', 'n', 'g', 'e', '.', 'p', - 'r', 'o', 't', 'o', '\032', '&', 'g', 'o', 'o', 'g', 'l', 'e', + 'v', '3', '/', 'f', 'i', 'l', 't', 'e', 'r', '_', 's', 't', + 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', + 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', 'e', 't', + 'a', 'd', 'a', 't', 'a', '.', 'p', 'r', 'o', 't', 'o', '\032', + ' ', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'p', + 'a', 't', 'h', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', + 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 's', 't', 'r', + 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'e', + 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3', + '/', 'r', 'a', 'n', 'g', 'e', '.', 'p', 'r', 'o', 't', 'o', + '\032', '&', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'a', 'p', 'i', + '/', 'e', 'x', 'p', 'r', '/', 'v', '1', 'a', 'l', 'p', 'h', + 'a', '1', '/', 'c', 'h', 'e', 'c', 'k', 'e', 'd', '.', 'p', + 'r', 'o', 't', 'o', '\032', '%', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'a', 'p', 'i', '/', 'e', 'x', 'p', 'r', '/', 'v', '1', - 'a', 'l', 'p', 'h', 'a', '1', '/', 'c', 'h', 'e', 'c', 'k', - 'e', 'd', '.', 'p', 'r', 'o', 't', 'o', '\032', '%', 'g', 'o', - 'o', 'g', 'l', 'e', '/', 'a', 'p', 'i', '/', 'e', 'x', 'p', - 'r', '/', 'v', '1', 'a', 'l', 'p', 'h', 'a', '1', '/', 's', - 'y', 'n', 't', 'a', 'x', '.', 'p', 'r', 'o', 't', 'o', '\032', - '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', - 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', - 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', - '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', - 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', - 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', + 'a', 'l', 'p', 'h', 'a', '1', '/', 's', 'y', 'n', 't', 'a', + 'x', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', + 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', + 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', + 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', - 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', - 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', - 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', - 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', - 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', - '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', - 'o', 't', 'o', '\"', '\341', '\006', '\n', '\004', 'R', 'B', 'A', 'C', - '\022', 'C', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\001', - ' ', '\001', '(', '\016', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', - '.', 'v', '3', '.', 'R', 'B', 'A', 'C', '.', 'A', 'c', 't', - 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', - '\001', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\022', 'D', '\n', - '\010', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', '\002', ' ', - '\003', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', - 'v', '3', '.', 'R', 'B', 'A', 'C', '.', 'P', 'o', 'l', 'i', - 'c', 'i', 'e', 's', 'E', 'n', 't', 'r', 'y', 'R', '\010', 'p', - 'o', 'l', 'i', 'c', 'i', 'e', 's', '\022', 'b', '\n', '\025', 'a', - 'u', 'd', 'i', 't', '_', 'l', 'o', 'g', 'g', 'i', 'n', 'g', - '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\001', - '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', - '3', '.', 'R', 'B', 'A', 'C', '.', 'A', 'u', 'd', 'i', 't', - 'L', 'o', 'g', 'g', 'i', 'n', 'g', 'O', 'p', 't', 'i', 'o', - 'n', 's', 'R', '\023', 'a', 'u', 'd', 'i', 't', 'L', 'o', 'g', - 'g', 'i', 'n', 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', '\032', - '\304', '\003', '\n', '\023', 'A', 'u', 'd', 'i', 't', 'L', 'o', 'g', - 'g', 'i', 'n', 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', - 'p', '\n', '\017', 'a', 'u', 'd', 'i', 't', '_', 'c', 'o', 'n', - 'd', 'i', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', - '2', '=', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', + 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', + 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', + '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', + 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', + 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', + 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', + 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', + '\341', '\006', '\n', '\004', 'R', 'B', 'A', 'C', '\022', 'C', '\n', '\006', + 'a', 'c', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', + '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', - 'R', 'B', 'A', 'C', '.', 'A', 'u', 'd', 'i', 't', 'L', 'o', - 'g', 'g', 'i', 'n', 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', - '.', 'A', 'u', 'd', 'i', 't', 'C', 'o', 'n', 'd', 'i', 't', - 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', - '\001', 'R', '\016', 'a', 'u', 'd', 'i', 't', 'C', 'o', 'n', 'd', - 'i', 't', 'i', 'o', 'n', '\022', 'g', '\n', '\016', 'l', 'o', 'g', - 'g', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', - '\002', ' ', '\003', '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', - 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', '.', 'A', 'u', - 'd', 'i', 't', 'L', 'o', 'g', 'g', 'i', 'n', 'g', 'O', 'p', - 't', 'i', 'o', 'n', 's', '.', 'A', 'u', 'd', 'i', 't', 'L', - 'o', 'g', 'g', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\r', 'l', 'o', 'g', 'g', 'e', 'r', 'C', 'o', 'n', 'f', 'i', - 'g', 's', '\032', '\203', '\001', '\n', '\021', 'A', 'u', 'd', 'i', 't', - 'L', 'o', 'g', 'g', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', - '\022', 'M', '\n', '\014', 'a', 'u', 'd', 'i', 't', '_', 'l', 'o', - 'g', 'g', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', + 'R', 'B', 'A', 'C', '.', 'A', 'c', 't', 'i', 'o', 'n', 'B', + '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'a', + 'c', 't', 'i', 'o', 'n', '\022', 'D', '\n', '\010', 'p', 'o', 'l', + 'i', 'c', 'i', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', + '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', + 'B', 'A', 'C', '.', 'P', 'o', 'l', 'i', 'c', 'i', 'e', 's', + 'E', 'n', 't', 'r', 'y', 'R', '\010', 'p', 'o', 'l', 'i', 'c', + 'i', 'e', 's', '\022', 'b', '\n', '\025', 'a', 'u', 'd', 'i', 't', + '_', 'l', 'o', 'g', 'g', 'i', 'n', 'g', '_', 'o', 'p', 't', + 'i', 'o', 'n', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', - 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\013', 'a', 'u', 'd', 'i', - 't', 'L', 'o', 'g', 'g', 'e', 'r', '\022', '\037', '\n', '\013', 'i', - 's', '_', 'o', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\030', '\002', - ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', 'O', 'p', 't', 'i', - 'o', 'n', 'a', 'l', '\"', 'L', '\n', '\016', 'A', 'u', 'd', 'i', - 't', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', '\010', - '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\000', '\022', '\013', '\n', '\007', - 'O', 'N', '_', 'D', 'E', 'N', 'Y', '\020', '\001', '\022', '\014', '\n', - '\010', 'O', 'N', '_', 'A', 'L', 'L', 'O', 'W', '\020', '\002', '\022', - '\025', '\n', '\021', 'O', 'N', '_', 'D', 'E', 'N', 'Y', '_', 'A', - 'N', 'D', '_', 'A', 'L', 'L', 'O', 'W', '\020', '\003', '\032', 'Y', - '\n', '\r', 'P', 'o', 'l', 'i', 'c', 'i', 'e', 's', 'E', 'n', - 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '2', '\n', - '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', - '2', '\034', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', - 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\005', 'v', 'a', 'l', 'u', - 'e', ':', '\002', '8', '\001', '\"', '&', '\n', '\006', 'A', 'c', 't', - 'i', 'o', 'n', '\022', '\t', '\n', '\005', 'A', 'L', 'L', 'O', 'W', - '\020', '\000', '\022', '\010', '\n', '\004', 'D', 'E', 'N', 'Y', '\020', '\001', - '\022', '\007', '\n', '\003', 'L', 'O', 'G', '\020', '\002', ':', ' ', '\232', - '\305', '\210', '\036', '\033', '\n', '\031', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', - 'v', '2', '.', 'R', 'B', 'A', 'C', '\"', '\223', '\003', '\n', '\006', - 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'L', '\n', '\013', 'p', 'e', - 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 's', '\030', '\001', ' ', - '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', - 'v', '3', '.', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', - 'n', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', - '\013', 'p', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 's', - '\022', 'I', '\n', '\n', 'p', 'r', 'i', 'n', 'c', 'i', 'p', 'a', - 'l', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', + 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', + 'A', 'C', '.', 'A', 'u', 'd', 'i', 't', 'L', 'o', 'g', 'g', + 'i', 'n', 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\023', + 'a', 'u', 'd', 'i', 't', 'L', 'o', 'g', 'g', 'i', 'n', 'g', + 'O', 'p', 't', 'i', 'o', 'n', 's', '\032', '\304', '\003', '\n', '\023', + 'A', 'u', 'd', 'i', 't', 'L', 'o', 'g', 'g', 'i', 'n', 'g', + 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'p', '\n', '\017', 'a', + 'u', 'd', 'i', 't', '_', 'c', 'o', 'n', 'd', 'i', 't', 'i', + 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', '2', '=', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', + '.', 'A', 'u', 'd', 'i', 't', 'L', 'o', 'g', 'g', 'i', 'n', + 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'A', 'u', 'd', + 'i', 't', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'B', + '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\016', 'a', + 'u', 'd', 'i', 't', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', + 'n', '\022', 'g', '\n', '\016', 'l', 'o', 'g', 'g', 'e', 'r', '_', + 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\002', ' ', '\003', '(', + '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', + '.', 'R', 'B', 'A', 'C', '.', 'A', 'u', 'd', 'i', 't', 'L', + 'o', 'g', 'g', 'i', 'n', 'g', 'O', 'p', 't', 'i', 'o', 'n', + 's', '.', 'A', 'u', 'd', 'i', 't', 'L', 'o', 'g', 'g', 'e', + 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\r', 'l', 'o', 'g', + 'g', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\203', + '\001', '\n', '\021', 'A', 'u', 'd', 'i', 't', 'L', 'o', 'g', 'g', + 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'M', '\n', '\014', + 'a', 'u', 'd', 'i', 't', '_', 'l', 'o', 'g', 'g', 'e', 'r', + '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', + 'i', 'g', 'R', '\013', 'a', 'u', 'd', 'i', 't', 'L', 'o', 'g', + 'g', 'e', 'r', '\022', '\037', '\n', '\013', 'i', 's', '_', 'o', 'p', + 't', 'i', 'o', 'n', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\010', + 'R', '\n', 'i', 's', 'O', 'p', 't', 'i', 'o', 'n', 'a', 'l', + '\"', 'L', '\n', '\016', 'A', 'u', 'd', 'i', 't', 'C', 'o', 'n', + 'd', 'i', 't', 'i', 'o', 'n', '\022', '\010', '\n', '\004', 'N', 'O', + 'N', 'E', '\020', '\000', '\022', '\013', '\n', '\007', 'O', 'N', '_', 'D', + 'E', 'N', 'Y', '\020', '\001', '\022', '\014', '\n', '\010', 'O', 'N', '_', + 'A', 'L', 'L', 'O', 'W', '\020', '\002', '\022', '\025', '\n', '\021', 'O', + 'N', '_', 'D', 'E', 'N', 'Y', '_', 'A', 'N', 'D', '_', 'A', + 'L', 'L', 'O', 'W', '\020', '\003', '\032', 'Y', '\n', '\r', 'P', 'o', + 'l', 'i', 'c', 'i', 'e', 's', 'E', 'n', 't', 'r', 'y', '\022', + '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', + 'R', '\003', 'k', 'e', 'y', '\022', '2', '\n', '\005', 'v', 'a', 'l', + 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', 'r', 'i', 'n', - 'c', 'i', 'p', 'a', 'l', 'B', '\010', '\372', 'B', '\005', '\222', '\001', - '\002', '\010', '\001', 'R', '\n', 'p', 'r', 'i', 'n', 'c', 'i', 'p', - 'a', 'l', 's', '\022', 'Z', '\n', '\t', 'c', 'o', 'n', 'd', 'i', - 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '\036', + 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', 'o', 'l', 'i', + 'c', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', + '\001', '\"', '&', '\n', '\006', 'A', 'c', 't', 'i', 'o', 'n', '\022', + '\t', '\n', '\005', 'A', 'L', 'L', 'O', 'W', '\020', '\000', '\022', '\010', + '\n', '\004', 'D', 'E', 'N', 'Y', '\020', '\001', '\022', '\007', '\n', '\003', + 'L', 'O', 'G', '\020', '\002', ':', ' ', '\232', '\305', '\210', '\036', '\033', + '\n', '\031', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'R', + 'B', 'A', 'C', '\"', '\335', '\003', '\n', '\006', 'P', 'o', 'l', 'i', + 'c', 'y', '\022', 'L', '\n', '\013', 'p', 'e', 'r', 'm', 'i', 's', + 's', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', + ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', + 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'B', '\010', '\372', + 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\013', 'p', 'e', 'r', + 'm', 'i', 's', 's', 'i', 'o', 'n', 's', '\022', 'I', '\n', '\n', + 'p', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', 's', '\030', '\002', + ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', + '.', 'v', '3', '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', + 'l', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', + '\n', 'p', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', 's', '\022', + 'Z', '\n', '\t', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', + '\030', '\003', ' ', '\001', '(', '\013', '2', '\036', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'a', 'p', 'i', '.', 'e', 'x', 'p', 'r', + '.', 'v', '1', 'a', 'l', 'p', 'h', 'a', '1', '.', 'E', 'x', + 'p', 'r', 'B', '\034', '\362', '\230', '\376', '\217', '\005', '\026', '\022', '\024', + 'e', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '_', 's', + 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\t', 'c', 'o', + 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', 'p', '\n', '\021', 'c', + 'h', 'e', 'c', 'k', 'e', 'd', '_', 'c', 'o', 'n', 'd', 'i', + 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\013', '2', '%', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'a', 'p', 'i', '.', 'e', 'x', 'p', 'r', '.', 'v', '1', 'a', 'l', 'p', 'h', 'a', - '1', '.', 'E', 'x', 'p', 'r', 'B', '\034', '\362', '\230', '\376', '\217', - '\005', '\026', '\022', '\024', 'e', 'x', 'p', 'r', 'e', 's', 's', 'i', - 'o', 'n', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', - 'R', '\t', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', - 'p', '\n', '\021', 'c', 'h', 'e', 'c', 'k', 'e', 'd', '_', 'c', - 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', - '(', '\013', '2', '%', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'a', 'p', 'i', '.', 'e', 'x', 'p', 'r', '.', 'v', '1', 'a', - 'l', 'p', 'h', 'a', '1', '.', 'C', 'h', 'e', 'c', 'k', 'e', - 'd', 'E', 'x', 'p', 'r', 'B', '\034', '\362', '\230', '\376', '\217', '\005', - '\026', '\022', '\024', 'e', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', - 'n', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', - '\020', 'c', 'h', 'e', 'c', 'k', 'e', 'd', 'C', 'o', 'n', 'd', - 'i', 't', 'i', 'o', 'n', ':', '\"', '\232', '\305', '\210', '\036', '\035', - '\n', '\033', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'P', - 'o', 'l', 'i', 'c', 'y', '\"', '\307', '\001', '\n', '\017', 'S', 'o', - 'u', 'r', 'c', 'e', 'd', 'M', 'e', 't', 'a', 'd', 'a', 't', - 'a', '\022', '[', '\n', '\020', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', - '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', - 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', - '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', - 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', - '\212', '\001', '\002', '\020', '\001', 'R', '\017', 'm', 'e', 't', 'a', 'd', - 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'W', - '\n', '\017', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 's', - 'o', 'u', 'r', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', - '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'M', - 'e', 't', 'a', 'd', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', - 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', - '\016', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', 'S', 'o', 'u', - 'r', 'c', 'e', '\"', '\214', '\t', '\n', '\n', 'P', 'e', 'r', 'm', - 'i', 's', 's', 'i', 'o', 'n', '\022', 'C', '\n', '\t', 'a', 'n', - 'd', '_', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\001', '(', - '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', - '.', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', '.', - 'S', 'e', 't', 'H', '\000', 'R', '\010', 'a', 'n', 'd', 'R', 'u', - 'l', 'e', 's', '\022', 'A', '\n', '\010', 'o', 'r', '_', 'r', 'u', - 'l', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '$', '.', + '1', '.', 'C', 'h', 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', + 'r', 'B', '\034', '\362', '\230', '\376', '\217', '\005', '\026', '\022', '\024', 'e', + 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '_', 's', 'p', + 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\020', 'c', 'h', 'e', + 'c', 'k', 'e', 'd', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', + 'n', '\022', 'H', '\n', '\n', 'c', 'e', 'l', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', 'e', 'r', - 'm', 'i', 's', 's', 'i', 'o', 'n', '.', 'S', 'e', 't', 'H', - '\000', 'R', '\007', 'o', 'r', 'R', 'u', 'l', 'e', 's', '\022', '\033', - '\n', '\003', 'a', 'n', 'y', '\030', '\003', ' ', '\001', '(', '\010', 'B', - '\007', '\372', 'B', '\004', 'j', '\002', '\010', '\001', 'H', '\000', 'R', '\003', - 'a', 'n', 'y', '\022', '>', '\n', '\006', 'h', 'e', 'a', 'd', 'e', - 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', - 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', - '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\022', '?', '\n', '\010', 'u', - 'r', 'l', '_', 'p', 'a', 't', 'h', '\030', '\n', ' ', '\001', '(', - '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'e', 'l', + 'E', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', 'R', '\t', 'c', 'e', 'l', 'C', 'o', 'n', + 'f', 'i', 'g', ':', '\"', '\232', '\305', '\210', '\036', '\035', '\n', '\033', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'P', 'o', 'l', + 'i', 'c', 'y', '\"', '\307', '\001', '\n', '\017', 'S', 'o', 'u', 'r', + 'c', 'e', 'd', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', + '[', '\n', '\020', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', '\001', '(', + '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', - '3', '.', 'P', 'a', 't', 'h', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'H', '\000', 'R', '\007', 'u', 'r', 'l', 'P', 'a', 't', 'h', - '\022', 'H', '\n', '\016', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', - 'i', 'o', 'n', '_', 'i', 'p', '\030', '\005', ' ', '\001', '(', '\013', - '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', - '\r', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', - 'I', 'p', '\022', '6', '\n', '\020', 'd', 'e', 's', 't', 'i', 'n', - 'a', 't', 'i', 'o', 'n', '_', 'p', 'o', 'r', 't', '\030', '\006', - ' ', '\001', '(', '\r', 'B', '\t', '\372', 'B', '\006', '*', '\004', '\030', - '\377', '\377', '\003', 'H', '\000', 'R', '\017', 'd', 'e', 's', 't', 'i', - 'n', 'a', 't', 'i', 'o', 'n', 'P', 'o', 'r', 't', '\022', 'Q', - '\n', '\026', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', - 'n', '_', 'p', 'o', 'r', 't', '_', 'r', 'a', 'n', 'g', 'e', - '\030', '\013', ' ', '\001', '(', '\013', '2', '\031', '.', 'e', 'n', 'v', - 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', - 'n', 't', '3', '2', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', - '\024', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', - 'P', 'o', 'r', 't', 'R', 'a', 'n', 'g', 'e', '\022', 'Q', '\n', - '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\007', ' ', - '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', - 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', - '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', - 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', - '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\010', - 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', '=', '\n', '\010', - 'n', 'o', 't', '_', 'r', 'u', 'l', 'e', '\030', '\010', ' ', '\001', - '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', - '3', '.', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', - 'H', '\000', 'R', '\007', 'n', 'o', 't', 'R', 'u', 'l', 'e', '\022', - 'Z', '\n', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'e', 'd', - '_', 's', 'e', 'r', 'v', 'e', 'r', '_', 'n', 'a', 'm', 'e', - '\030', '\t', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', - 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', - 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\023', - 'r', 'e', 'q', 'u', 'e', 's', 't', 'e', 'd', 'S', 'e', 'r', - 'v', 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'F', '\n', '\007', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '\030', '\014', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\007', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'O', '\n', '\014', 'u', - 'r', 'i', '_', 't', 'e', 'm', 'p', 'l', 'a', 't', 'e', '\030', - '\r', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', - 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', - 'g', 'H', '\000', 'R', '\013', 'u', 'r', 'i', 'T', 'e', 'm', 'p', - 'l', 'a', 't', 'e', '\022', 'R', '\n', '\020', 's', 'o', 'u', 'r', - 'c', 'e', 'd', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', - '\030', '\016', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', - 'a', 'c', '.', 'v', '3', '.', 'S', 'o', 'u', 'r', 'c', 'e', - 'd', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'H', '\000', 'R', - '\017', 's', 'o', 'u', 'r', 'c', 'e', 'd', 'M', 'e', 't', 'a', - 'd', 'a', 't', 'a', '\032', 's', '\n', '\003', 'S', 'e', 't', '\022', - '@', '\n', '\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\003', - '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', - '3', '.', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', - 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\005', - 'r', 'u', 'l', 'e', 's', ':', '*', '\232', '\305', '\210', '\036', '%', - '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'P', + '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', + '\002', '\020', '\001', 'R', '\017', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'W', '\n', '\017', + 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 's', 'o', 'u', + 'r', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '$', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'M', 'e', 't', + 'a', 'd', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', + '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\016', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', + 'e', '\"', '\214', '\t', '\n', '\n', 'P', 'e', 'r', 'm', 'i', 's', + 's', 'i', 'o', 'n', '\022', 'C', '\n', '\t', 'a', 'n', 'd', '_', + 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', + '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', '.', 'S', 'e', - 't', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', + 't', 'H', '\000', 'R', '\010', 'a', 'n', 'd', 'R', 'u', 'l', 'e', + 's', '\022', 'A', '\n', '\010', 'o', 'r', '_', 'r', 'u', 'l', 'e', + 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'b', 'a', 'c', '.', 'v', '2', '.', 'P', 'e', 'r', 'm', 'i', - 's', 's', 'i', 'o', 'n', 'B', '\013', '\n', '\004', 'r', 'u', 'l', - 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\314', '\t', '\n', '\t', 'P', - 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', '\022', '>', '\n', '\007', - 'a', 'n', 'd', '_', 'i', 'd', 's', '\030', '\001', ' ', '\001', '(', - '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', - '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', '.', 'S', - 'e', 't', 'H', '\000', 'R', '\006', 'a', 'n', 'd', 'I', 'd', 's', - '\022', '<', '\n', '\006', 'o', 'r', '_', 'i', 'd', 's', '\030', '\002', - ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', - '.', 'v', '3', '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', - 'l', '.', 'S', 'e', 't', 'H', '\000', 'R', '\005', 'o', 'r', 'I', - 'd', 's', '\022', '\033', '\n', '\003', 'a', 'n', 'y', '\030', '\003', ' ', - '\001', '(', '\010', 'B', '\007', '\372', 'B', '\004', 'j', '\002', '\010', '\001', - 'H', '\000', 'R', '\003', 'a', 'n', 'y', '\022', 'U', '\n', '\r', 'a', - 'u', 't', 'h', 'e', 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', - '\030', '\004', ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', - 'a', 'c', '.', 'v', '3', '.', 'P', 'r', 'i', 'n', 'c', 'i', - 'p', 'a', 'l', '.', 'A', 'u', 't', 'h', 'e', 'n', 't', 'i', - 'c', 'a', 't', 'e', 'd', 'H', '\000', 'R', '\r', 'a', 'u', 't', - 'h', 'e', 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', '\022', 'K', - '\n', '\t', 's', 'o', 'u', 'r', 'c', 'e', '_', 'i', 'p', '\030', - '\005', ' ', '\001', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', - 'g', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', 'H', '\000', 'R', '\010', 's', 'o', 'u', 'r', 'c', - 'e', 'I', 'p', '\022', 'K', '\n', '\020', 'd', 'i', 'r', 'e', 'c', - 't', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'i', 'p', '\030', - '\n', ' ', '\001', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', - 'g', 'e', 'H', '\000', 'R', '\016', 'd', 'i', 'r', 'e', 'c', 't', - 'R', 'e', 'm', 'o', 't', 'e', 'I', 'p', '\022', '>', '\n', '\t', - 'r', 'e', 'm', 'o', 't', 'e', '_', 'i', 'p', '\030', '\013', ' ', - '\001', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', - 'H', '\000', 'R', '\010', 'r', 'e', 'm', 'o', 't', 'e', 'I', 'p', - '\022', '>', '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\006', + 'b', 'a', 'c', '.', 'v', '3', '.', 'P', 'e', 'r', 'm', 'i', + 's', 's', 'i', 'o', 'n', '.', 'S', 'e', 't', 'H', '\000', 'R', + '\007', 'o', 'r', 'R', 'u', 'l', 'e', 's', '\022', '\033', '\n', '\003', + 'a', 'n', 'y', '\030', '\003', ' ', '\001', '(', '\010', 'B', '\007', '\372', + 'B', '\004', 'j', '\002', '\010', '\001', 'H', '\000', 'R', '\003', 'a', 'n', + 'y', '\022', '>', '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', + '\004', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', + 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\006', 'h', + 'e', 'a', 'd', 'e', 'r', '\022', '?', '\n', '\010', 'u', 'r', 'l', + '_', 'p', 'a', 't', 'h', '\030', '\n', ' ', '\001', '(', '\013', '2', + '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'P', 'a', 't', 'h', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', + '\000', 'R', '\007', 'u', 'r', 'l', 'P', 'a', 't', 'h', '\022', 'H', + '\n', '\016', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', + 'n', '_', 'i', 'p', '\030', '\005', ' ', '\001', '(', '\013', '2', '\037', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'i', + 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', '\r', 'd', + 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'I', 'p', + '\022', '6', '\n', '\020', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', + 'i', 'o', 'n', '_', 'p', 'o', 'r', 't', '\030', '\006', ' ', '\001', + '(', '\r', 'B', '\t', '\372', 'B', '\006', '*', '\004', '\030', '\377', '\377', + '\003', 'H', '\000', 'R', '\017', 'd', 'e', 's', 't', 'i', 'n', 'a', + 't', 'i', 'o', 'n', 'P', 'o', 'r', 't', '\022', 'Q', '\n', '\026', + 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', + 'p', 'o', 'r', 't', '_', 'r', 'a', 'n', 'g', 'e', '\030', '\013', + ' ', '\001', '(', '\013', '2', '\031', '.', 'e', 'n', 'v', 'o', 'y', + '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't', + '3', '2', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', '\024', 'd', + 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'P', 'o', + 'r', 't', 'R', 'a', 'n', 'g', 'e', '\022', 'Q', '\n', '\010', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\007', ' ', '\001', '(', + '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', + 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', + '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\010', 'm', 'e', + 't', 'a', 'd', 'a', 't', 'a', '\022', '=', '\n', '\010', 'n', 'o', + 't', '_', 'r', 'u', 'l', 'e', '\030', '\010', ' ', '\001', '(', '\013', + '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', + 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'H', '\000', + 'R', '\007', 'n', 'o', 't', 'R', 'u', 'l', 'e', '\022', 'Z', '\n', + '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'e', 'd', '_', 's', + 'e', 'r', 'v', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\t', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', - 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', - 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\006', 'h', 'e', - 'a', 'd', 'e', 'r', '\022', '?', '\n', '\010', 'u', 'r', 'l', '_', - 'p', 'a', 't', 'h', '\030', '\t', ' ', '\001', '(', '\013', '2', '\"', - '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'P', - 'a', 't', 'h', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', - 'R', '\007', 'u', 'r', 'l', 'P', 'a', 't', 'h', '\022', 'Q', '\n', - '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\007', ' ', - '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', - 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', - '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', - 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', - '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\010', - 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'N', '\n', '\014', - 'f', 'i', 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', 'e', - '\030', '\014', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', - 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', - 'r', 'S', 't', 'a', 't', 'e', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'H', '\000', 'R', '\013', 'f', 'i', 'l', 't', 'e', 'r', 'S', - 't', 'a', 't', 'e', '\022', '8', '\n', '\006', 'n', 'o', 't', '_', - 'i', 'd', '\030', '\010', ' ', '\001', '(', '\013', '2', '\037', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', 'r', 'i', 'n', - 'c', 'i', 'p', 'a', 'l', 'H', '\000', 'R', '\005', 'n', 'o', 't', - 'I', 'd', '\022', 'R', '\n', '\020', 's', 'o', 'u', 'r', 'c', 'e', - 'd', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\r', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\023', 'r', 'e', + 'q', 'u', 'e', 's', 't', 'e', 'd', 'S', 'e', 'r', 'v', 'e', + 'r', 'N', 'a', 'm', 'e', '\022', 'F', '\n', '\007', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '\030', '\014', ' ', '\001', '(', '\013', '2', '*', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', + 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\007', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '\022', 'O', '\n', '\014', 'u', 'r', 'i', + '_', 't', 'e', 'm', 'p', 'l', 'a', 't', 'e', '\030', '\r', ' ', + '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', + '\000', 'R', '\013', 'u', 'r', 'i', 'T', 'e', 'm', 'p', 'l', 'a', + 't', 'e', '\022', 'R', '\n', '\020', 's', 'o', 'u', 'r', 'c', 'e', + 'd', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\016', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'd', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'H', '\000', 'R', '\017', 's', 'o', 'u', 'r', 'c', 'e', 'd', 'M', 'e', 't', 'a', 'd', 'a', - 't', 'a', '\032', 'm', '\n', '\003', 'S', 'e', 't', '\022', ';', '\n', - '\003', 'i', 'd', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\037', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', 'r', - 'i', 'n', 'c', 'i', 'p', 'a', 'l', 'B', '\010', '\372', 'B', '\005', - '\222', '\001', '\002', '\010', '\001', 'R', '\003', 'i', 'd', 's', ':', ')', - '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', - '.', 'v', '2', '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', - 'l', '.', 'S', 'e', 't', '\032', '\227', '\001', '\n', '\r', 'A', 'u', - 't', 'h', 'e', 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', '\022', - 'K', '\n', '\016', 'p', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', - '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', - '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', - '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', - 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'R', '\r', 'p', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', - 'N', 'a', 'm', 'e', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', - ',', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'P', 'r', - 'i', 'n', 'c', 'i', 'p', 'a', 'l', '.', 'A', 'u', 't', 'h', - 'e', 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', 'J', '\004', '\010', - '\001', '\020', '\002', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', + 't', 'a', '\032', 's', '\n', '\003', 'S', 'e', 't', '\022', '@', '\n', + '\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', + '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', + 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'B', '\010', + '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\005', 'r', 'u', + 'l', 'e', 's', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'P', 'r', 'i', - 'n', 'c', 'i', 'p', 'a', 'l', 'B', '\021', '\n', '\n', 'i', 'd', - 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', - '\001', '\"', '`', '\n', '\006', 'A', 'c', 't', 'i', 'o', 'n', '\022', - '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', - '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', - 'n', 'a', 'm', 'e', '\022', '9', '\n', '\006', 'a', 'c', 't', 'i', - 'o', 'n', '\030', '\002', ' ', '\001', '(', '\016', '2', '!', '.', 'e', + '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'P', 'e', 'r', + 'm', 'i', 's', 's', 'i', 'o', 'n', '.', 'S', 'e', 't', ':', + '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', + 'c', '.', 'v', '2', '.', 'P', 'e', 'r', 'm', 'i', 's', 's', + 'i', 'o', 'n', 'B', '\013', '\n', '\004', 'r', 'u', 'l', 'e', '\022', + '\003', '\370', 'B', '\001', '\"', '\222', '\n', '\n', '\t', 'P', 'r', 'i', + 'n', 'c', 'i', 'p', 'a', 'l', '\022', '>', '\n', '\007', 'a', 'n', + 'd', '_', 'i', 'd', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', + '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'P', + 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', '.', 'S', 'e', 't', + 'H', '\000', 'R', '\006', 'a', 'n', 'd', 'I', 'd', 's', '\022', '<', + '\n', '\006', 'o', 'r', '_', 'i', 'd', 's', '\030', '\002', ' ', '\001', + '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', + '3', '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', '.', + 'S', 'e', 't', 'H', '\000', 'R', '\005', 'o', 'r', 'I', 'd', 's', + '\022', '\033', '\n', '\003', 'a', 'n', 'y', '\030', '\003', ' ', '\001', '(', + '\010', 'B', '\007', '\372', 'B', '\004', 'j', '\002', '\010', '\001', 'H', '\000', + 'R', '\003', 'a', 'n', 'y', '\022', 'U', '\n', '\r', 'a', 'u', 't', + 'h', 'e', 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', '\030', '\004', + ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', + '.', 'v', '3', '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', + 'l', '.', 'A', 'u', 't', 'h', 'e', 'n', 't', 'i', 'c', 'a', + 't', 'e', 'd', 'H', '\000', 'R', '\r', 'a', 'u', 't', 'h', 'e', + 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', '\022', 'K', '\n', '\t', + 's', 'o', 'u', 'r', 'c', 'e', '_', 'i', 'p', '\030', '\005', ' ', + '\001', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', + 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', + '0', 'H', '\000', 'R', '\010', 's', 'o', 'u', 'r', 'c', 'e', 'I', + 'p', '\022', 'K', '\n', '\020', 'd', 'i', 'r', 'e', 'c', 't', '_', + 'r', 'e', 'm', 'o', 't', 'e', '_', 'i', 'p', '\030', '\n', ' ', + '\001', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', + 'H', '\000', 'R', '\016', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', + 'm', 'o', 't', 'e', 'I', 'p', '\022', '>', '\n', '\t', 'r', 'e', + 'm', 'o', 't', 'e', '_', 'i', 'p', '\030', '\013', ' ', '\001', '(', + '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'H', '\000', + 'R', '\010', 'r', 'e', 'm', 'o', 't', 'e', 'I', 'p', '\022', '>', + '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\006', ' ', '\001', + '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', + 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', + 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\006', 'h', 'e', 'a', 'd', + 'e', 'r', '\022', '?', '\n', '\010', 'u', 'r', 'l', '_', 'p', 'a', + 't', 'h', '\030', '\t', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', + 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'P', 'a', 't', + 'h', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\007', + 'u', 'r', 'l', 'P', 'a', 't', 'h', '\022', 'Q', '\n', '\010', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\007', ' ', '\001', '(', + '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', + 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', + '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\010', 'm', 'e', + 't', 'a', 'd', 'a', 't', 'a', '\022', 'N', '\n', '\014', 'f', 'i', + 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\014', + ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'S', + 't', 'a', 't', 'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', + '\000', 'R', '\013', 'f', 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', + 't', 'e', '\022', '8', '\n', '\006', 'n', 'o', 't', '_', 'i', 'd', + '\030', '\010', ' ', '\001', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', + 'a', 'c', '.', 'v', '3', '.', 'P', 'r', 'i', 'n', 'c', 'i', + 'p', 'a', 'l', 'H', '\000', 'R', '\005', 'n', 'o', 't', 'I', 'd', + '\022', 'R', '\n', '\020', 's', 'o', 'u', 'r', 'c', 'e', 'd', '_', + 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\r', ' ', '\001', + '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', + '3', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'd', 'M', 'e', 't', + 'a', 'd', 'a', 't', 'a', 'H', '\000', 'R', '\017', 's', 'o', 'u', + 'r', 'c', 'e', 'd', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + '\022', 'D', '\n', '\006', 'c', 'u', 's', 't', 'o', 'm', '\030', '\016', + ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', + 'H', '\000', 'R', '\006', 'c', 'u', 's', 't', 'o', 'm', '\032', 'm', + '\n', '\003', 'S', 'e', 't', '\022', ';', '\n', '\003', 'i', 'd', 's', + '\030', '\001', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', + 'a', 'c', '.', 'v', '3', '.', 'P', 'r', 'i', 'n', 'c', 'i', + 'p', 'a', 'l', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', + '\001', 'R', '\003', 'i', 'd', 's', ':', ')', '\232', '\305', '\210', '\036', + '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', + 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', '.', 'S', 'e', + 't', '\032', '\227', '\001', '\n', '\r', 'A', 'u', 't', 'h', 'e', 'n', + 't', 'i', 'c', 'a', 't', 'e', 'd', '\022', 'K', '\n', '\016', 'p', + 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', '_', 'n', 'a', 'm', + 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', + 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', + 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\r', 'p', + 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', 'N', 'a', 'm', 'e', + ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', + 'a', 'c', '.', 'v', '2', '.', 'P', 'r', 'i', 'n', 'c', 'i', + 'p', 'a', 'l', '.', 'A', 'u', 't', 'h', 'e', 'n', 't', 'i', + 'c', 'a', 't', 'e', 'd', 'J', '\004', '\010', '\001', '\020', '\002', ':', + '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', + 'c', '.', 'v', '2', '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', + 'a', 'l', 'B', '\021', '\n', '\n', 'i', 'd', 'e', 'n', 't', 'i', + 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '`', '\n', + '\006', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\004', 'n', + 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', + 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', + '\022', '9', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\002', + ' ', '\001', '(', '\016', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', + '.', 'v', '3', '.', 'R', 'B', 'A', 'C', '.', 'A', 'c', 't', + 'i', 'o', 'n', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '*', + '(', '\n', '\016', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'S', + 'o', 'u', 'r', 'c', 'e', '\022', '\013', '\n', '\007', 'D', 'Y', 'N', + 'A', 'M', 'I', 'C', '\020', '\000', '\022', '\t', '\n', '\005', 'R', 'O', + 'U', 'T', 'E', '\020', '\001', 'B', '}', '\n', '\"', 'i', 'o', '.', + 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', - '.', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\006', 'a', 'c', 't', - 'i', 'o', 'n', '*', '(', '\n', '\016', 'M', 'e', 't', 'a', 'd', - 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '\013', '\n', - '\007', 'D', 'Y', 'N', 'A', 'M', 'I', 'C', '\020', '\000', '\022', '\t', - '\n', '\005', 'R', 'O', 'U', 'T', 'E', '\020', '\001', 'B', '}', '\n', - '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', - 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', 'B', - '\t', 'R', 'b', 'a', 'c', 'P', 'r', 'o', 't', 'o', 'P', '\001', - 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', - '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', - 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', - 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', - 'o', 'n', 'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', - '3', ';', 'r', 'b', 'a', 'c', 'v', '3', '\272', '\200', '\310', '\321', - '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'r', 'b', 'a', 'c', '.', 'v', '3', 'B', '\t', 'R', 'b', 'a', + 'c', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', + 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', + 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', + 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', + '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', + 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', ';', 'r', 'b', + 'a', 'c', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', + 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[16] = { +static _upb_DefPool_Init *deps[17] = { &envoy_config_core_v3_address_proto_upbdefinit, + &envoy_config_core_v3_cel_proto_upbdefinit, &envoy_config_core_v3_extension_proto_upbdefinit, &envoy_config_route_v3_route_components_proto_upbdefinit, &envoy_type_matcher_v3_filter_state_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c index 177d7288737..c20b212f3ef 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c @@ -20,7 +20,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[2134] = { +static const char descriptor[2169] = { '\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', @@ -48,7 +48,7 @@ static const char descriptor[2134] = { 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\"', '\211', '\014', '\n', '\022', 'R', 'o', + 'p', 'r', 'o', 't', 'o', '\"', '\254', '\014', '\n', '\022', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', @@ -143,62 +143,65 @@ static const char descriptor[2134] = { 'h', 'o', 's', 't', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\030', 'i', 'g', 'n', 'o', 'r', 'e', 'P', 'o', 'r', 't', 'I', 'n', 'H', 'o', 's', - 't', 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\022', 'S', '\n', - '\'', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'p', 'a', 't', 'h', - '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '_', - 'i', 'n', '_', 'p', 'a', 't', 'h', '_', 'm', 'a', 't', 'c', - 'h', 'i', 'n', 'g', '\030', '\017', ' ', '\001', '(', '\010', 'R', '\"', - 'i', 'g', 'n', 'o', 'r', 'e', 'P', 'a', 't', 'h', 'P', 'a', - 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'I', 'n', 'P', 'a', - 't', 'h', 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\022', 'z', - '\n', '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', - 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', - 'g', '\030', '\020', ' ', '\003', '(', '\013', '2', 'C', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', - 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', - 'o', 'n', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', - 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', - 'n', 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'P', - 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', - 't', 'a', '\030', '\021', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', - 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', - 't', 'a', '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', - 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', - 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', - 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', - 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', - 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', - '\001', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'R', - 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', - 'a', 't', 'i', 'o', 'n', '\"', 's', '\n', '\004', 'V', 'h', 'd', - 's', '\022', 'Q', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', - 's', 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', - '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', - 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', - 'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', - ':', '\030', '\232', '\305', '\210', '\036', '\023', '\n', '\021', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'V', 'h', - 'd', 's', 'B', '\201', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', + 't', 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\022', '!', '\n', + '\014', 'v', 'h', 'o', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', + 'r', '\030', '\022', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'h', 'o', + 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'S', '\n', '\'', + 'i', 'g', 'n', 'o', 'r', 'e', '_', 'p', 'a', 't', 'h', '_', + 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '_', 'i', + 'n', '_', 'p', 'a', 't', 'h', '_', 'm', 'a', 't', 'c', 'h', + 'i', 'n', 'g', '\030', '\017', ' ', '\001', '(', '\010', 'R', '\"', 'i', + 'g', 'n', 'o', 'r', 'e', 'P', 'a', 't', 'h', 'P', 'a', 'r', + 'a', 'm', 'e', 't', 'e', 'r', 's', 'I', 'n', 'P', 'a', 't', + 'h', 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\022', 'z', '\n', + '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', 'f', + 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', + '\030', '\020', ' ', '\003', '(', '\013', '2', 'C', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', 'B', '\n', 'R', 'o', 'u', 't', - 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', - 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', - 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', - 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', - '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', - 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', ';', 'r', - 'o', 'u', 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', - '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', + 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', + 'n', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', + 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', + 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'P', 'e', + 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', '\030', '\021', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', + 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', + 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', + 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', + 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', + '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', + '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', + 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', + ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'R', 'o', + 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', + 't', 'i', 'o', 'n', '\"', 's', '\n', '\004', 'V', 'h', 'd', 's', + '\022', 'Q', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', + 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', + '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', + 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'c', + 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', ':', + '\030', '\232', '\305', '\210', '\036', '\023', '\n', '\021', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'V', 'h', 'd', + 's', 'B', '\201', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', + 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', + 't', 'e', '.', 'v', '3', 'B', '\n', 'R', 'o', 'u', 't', 'e', + 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', + 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', + 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', + 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', + 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', + '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', ';', 'r', 'o', + 'u', 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', + '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[9] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c index a340ce55ea4..45718c97943 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c @@ -11,9 +11,12 @@ #include "envoy/config/route/v3/route_components.upbdefs.h" #include "envoy/config/route/v3/route_components.upb_minitable.h" +extern _upb_DefPool_Init envoy_config_common_mutation_rules_v3_mutation_rules_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_proxy_protocol_proto_upbdefinit; +extern _upb_DefPool_Init envoy_config_core_v3_substitution_format_string_proto_upbdefinit; +extern _upb_DefPool_Init envoy_type_matcher_v3_filter_state_proto_upbdefinit; extern _upb_DefPool_Init envoy_type_matcher_v3_metadata_proto_upbdefinit; extern _upb_DefPool_Init envoy_type_matcher_v3_regex_proto_upbdefinit; extern _upb_DefPool_Init envoy_type_matcher_v3_string_proto_upbdefinit; @@ -31,13 +34,18 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[23708] = { +static const char descriptor[24710] = { '\n', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', 'o', 't', 'o', '\022', '\025', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '\032', '\037', 'e', + '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '\032', ':', 'e', + 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', + 'c', 'o', 'm', 'm', 'o', 'n', '/', 'm', 'u', 't', 'a', 't', + 'i', 'o', 'n', '_', 'r', 'u', 'l', 'e', 's', '/', 'v', '3', + '/', 'm', 'u', 't', 'a', 't', 'i', 'o', 'n', '_', 'r', 'u', + 'l', 'e', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', @@ -47,1973 +55,2055 @@ static const char descriptor[23708] = { 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'p', 'r', 'o', 'x', 'y', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '.', 'p', 'r', - 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 't', - 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', - 'v', '3', '/', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', - 'p', 'r', 'o', 't', 'o', '\032', '!', 'e', 'n', 'v', 'o', 'y', - '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '/', 'v', '3', '/', 'r', 'e', 'g', 'e', 'x', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', + 'o', 't', 'o', '\032', '5', 'e', 'n', 'v', 'o', 'y', '/', 'c', + 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', + '3', '/', 's', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', + 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 's', 't', + 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', + 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', + 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'f', 'i', + 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', 'e', '.', 'p', + 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', - '/', 'v', '3', '/', 's', 't', 'r', 'i', 'n', 'g', '.', 'p', - 'r', 'o', 't', 'o', '\032', '%', 'e', 'n', 'v', 'o', 'y', '/', - 't', 'y', 'p', 'e', '/', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '/', 'v', '3', '/', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '.', 'p', 'r', 'o', 't', 'o', '\032', '&', 'e', 'n', 'v', - 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 't', 'r', 'a', 'c', - 'i', 'n', 'g', '/', 'v', '3', '/', 'c', 'u', 's', 't', 'o', - 'm', '_', 't', 'a', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', - '\033', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', - 'v', '3', '/', 'p', 'e', 'r', 'c', 'e', 'n', 't', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\031', 'e', 'n', 'v', 'o', 'y', '/', - 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'r', 'a', 'n', 'g', - 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', + '/', 'v', '3', '/', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', + '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'e', 'n', 'v', 'o', + 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', + 'e', 'r', '/', 'v', '3', '/', 'r', 'e', 'g', 'e', 'x', '.', + 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', + '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '/', 'v', '3', '/', 's', 't', 'r', 'i', 'n', 'g', '.', + 'p', 'r', 'o', 't', 'o', '\032', '%', 'e', 'n', 'v', 'o', 'y', + '/', 't', 'y', 'p', 'e', '/', 'm', 'e', 't', 'a', 'd', 'a', + 't', 'a', '/', 'v', '3', '/', 'm', 'e', 't', 'a', 'd', 'a', + 't', 'a', '.', 'p', 'r', 'o', 't', 'o', '\032', '&', 'e', 'n', + 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 't', 'r', 'a', + 'c', 'i', 'n', 'g', '/', 'v', '3', '/', 'c', 'u', 's', 't', + 'o', 'm', '_', 't', 'a', 'g', '.', 'p', 'r', 'o', 't', 'o', + '\032', '\033', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', + '/', 'v', '3', '/', 'p', 'e', 'r', 'c', 'e', 'n', 't', '.', + 'p', 'r', 'o', 't', 'o', '\032', '\031', 'e', 'n', 'v', 'o', 'y', + '/', 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'r', 'a', 'n', + 'g', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', + 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', + 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', - 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', - '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', - 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', - 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', - 't', 'o', '\032', '!', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', - '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't', - 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', - 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', - 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', - 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', - 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', - 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', - 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', - 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', - 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\"', '\275', '\017', '\n', '\013', 'V', 'i', - 'r', 't', 'u', 'a', 'l', 'H', 'o', 's', 't', '\022', '\033', '\n', - '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', - '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', - 'm', 'e', '\022', ',', '\n', '\007', 'd', 'o', 'm', 'a', 'i', 'n', - 's', '\030', '\002', ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', - '\222', '\001', '\014', '\010', '\001', '\"', '\010', 'r', '\006', '\300', '\001', '\002', - '\310', '\001', '\000', 'R', '\007', 'd', 'o', 'm', 'a', 'i', 'n', 's', - '\022', 'M', '\n', '\006', 'r', 'o', 'u', 't', 'e', 's', '\030', '\003', - ' ', '\003', '(', '\013', '2', '\034', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', - 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'B', '\027', - '\362', '\230', '\376', '\217', '\005', '\021', '\022', '\017', 'r', 'o', 'u', 't', - 'e', '_', 's', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'R', - '\006', 'r', 'o', 'u', 't', 'e', 's', '\022', 'O', '\n', '\007', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '\030', '\025', ' ', '\001', '(', '\013', - '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', - 'a', 't', 'c', 'h', 'e', 'r', 'B', '\027', '\362', '\230', '\376', '\217', - '\005', '\021', '\022', '\017', 'r', 'o', 'u', 't', 'e', '_', 's', 'e', - 'l', 'e', 'c', 't', 'i', 'o', 'n', 'R', '\007', 'm', 'a', 't', - 'c', 'h', 'e', 'r', '\022', '`', '\n', '\013', 'r', 'e', 'q', 'u', - 'i', 'r', 'e', '_', 't', 'l', 's', '\030', '\004', ' ', '\001', '(', - '\016', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', 's', - 't', '.', 'T', 'l', 's', 'R', 'e', 'q', 'u', 'i', 'r', 'e', - 'm', 'e', 'n', 't', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', - '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\n', 'r', 'e', 'q', 'u', - 'i', 'r', 'e', 'T', 'l', 's', '\022', 'P', '\n', '\020', 'v', 'i', - 'r', 't', 'u', 'a', 'l', '_', 'c', 'l', 'u', 's', 't', 'e', - 'r', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '%', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'V', 'i', 'r', - 't', 'u', 'a', 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', 'R', - '\017', 'v', 'i', 'r', 't', 'u', 'a', 'l', 'C', 'l', 'u', 's', - 't', 'e', 'r', 's', '\022', 'A', '\n', '\013', 'r', 'a', 't', 'e', - '_', 'l', 'i', 'm', 'i', 't', 's', '\030', '\006', ' ', '\003', '(', - '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'R', - '\n', 'r', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 's', '\022', - 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', - 'd', '\030', '\007', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', - 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', - 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', - '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', - 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'M', '\n', '\031', - 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', - 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', - 'e', '\030', '\r', ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', - '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', - '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', - 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', - 'o', 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's', 'p', 'o', - 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', - 't', 'o', '_', 'a', 'd', 'd', '\030', '\n', ' ', '\003', '(', '\013', - '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', - 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', - '\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', 'n', - 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', - 'd', 'd', '\022', 'O', '\n', '\032', 'r', 'e', 's', 'p', 'o', 'n', - 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', - 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\013', ' ', '\003', - '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', '\"', '\n', - 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027', - 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', - 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', - 'B', '\n', '\004', 'c', 'o', 'r', 's', '\030', '\010', ' ', '\001', '(', - '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'C', 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', 'y', - 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', - '0', 'R', '\004', 'c', 'o', 'r', 's', '\022', 's', '\n', '\027', 't', - 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', 'f', 'i', 'l', - 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\017', - ' ', '\003', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', - 'e', '.', 'v', '3', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l', - 'H', 'o', 's', 't', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', - 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', - 'g', 'E', 'n', 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', - 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', - 'n', 'f', 'i', 'g', '\022', 'A', '\n', '\035', 'i', 'n', 'c', 'l', - 'u', 'd', 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', - 'a', 't', 't', 'e', 'm', 'p', 't', '_', 'c', 'o', 'u', 'n', - 't', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\032', 'i', 'n', 'c', - 'l', 'u', 'd', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'A', - 't', 't', 'e', 'm', 'p', 't', 'C', 'o', 'u', 'n', 't', '\022', - 'H', '\n', '!', 'i', 'n', 'c', 'l', 'u', 'd', 'e', '_', 'a', - 't', 't', 'e', 'm', 'p', 't', '_', 'c', 'o', 'u', 'n', 't', - '_', 'i', 'n', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', - '\030', '\023', ' ', '\001', '(', '\010', 'R', '\035', 'i', 'n', 'c', 'l', - 'u', 'd', 'e', 'A', 't', 't', 'e', 'm', 'p', 't', 'C', 'o', - 'u', 'n', 't', 'I', 'n', 'R', 'e', 's', 'p', 'o', 'n', 's', - 'e', '\022', 'E', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', 'p', - 'o', 'l', 'i', 'c', 'y', '\030', '\020', ' ', '\001', '(', '\013', '2', - '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'R', - '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', - '\022', 'O', '\n', '\031', 'r', 'e', 't', 'r', 'y', '_', 'p', 'o', - 'l', 'i', 'c', 'y', '_', 't', 'y', 'p', 'e', 'd', '_', 'c', - 'o', 'n', 'f', 'i', 'g', '\030', '\024', ' ', '\001', '(', '\013', '2', - '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\026', 'r', - 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'T', 'y', - 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'E', '\n', - '\014', 'h', 'e', 'd', 'g', 'e', '_', 'p', 'o', 'l', 'i', 'c', - 'y', '\030', '\021', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'd', 'g', - 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'h', 'e', 'd', - 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'D', '\n', '\037', - 'i', 'n', 'c', 'l', 'u', 'd', 'e', '_', 'i', 's', '_', 't', - 'i', 'm', 'e', 'o', 'u', 't', '_', 'r', 'e', 't', 'r', 'y', - '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\027', ' ', '\001', '(', - '\010', 'R', '\033', 'i', 'n', 'c', 'l', 'u', 'd', 'e', 'I', 's', - 'T', 'i', 'm', 'e', 'o', 'u', 't', 'R', 'e', 't', 'r', 'y', - 'H', 'e', 'a', 'd', 'e', 'r', '\022', '`', '\n', '\036', 'p', 'e', - 'r', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'u', - 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', - 'y', 't', 'e', 's', '\030', '\022', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'R', '\032', 'p', 'e', 'r', 'R', 'e', 'q', - 'u', 'e', 's', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', - 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\022', 'n', '\n', '\027', - 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i', 'r', 'r', - 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', - '\026', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', + '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', + 'o', 't', 'o', '\032', '!', 'x', 'd', 's', '/', 't', 'y', 'p', + 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', + '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', + 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', + 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', + 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', + 'o', 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', + 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', + 'g', 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', + 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', + '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', + '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', + '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', + 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', + 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', + '.', 'p', 'r', 'o', 't', 'o', '\"', '\255', '\020', '\n', '\013', 'V', + 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', 's', 't', '\022', '\033', + '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', + 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', + 'a', 'm', 'e', '\022', ',', '\n', '\007', 'd', 'o', 'm', 'a', 'i', + 'n', 's', '\030', '\002', ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', + '\017', '\222', '\001', '\014', '\010', '\001', '\"', '\010', 'r', '\006', '\300', '\001', + '\002', '\310', '\001', '\000', 'R', '\007', 'd', 'o', 'm', 'a', 'i', 'n', + 's', '\022', 'M', '\n', '\006', 'r', 'o', 'u', 't', 'e', 's', '\030', + '\003', ' ', '\003', '(', '\013', '2', '\034', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', - 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', - 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', - 'y', 'R', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', - 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'i', 'e', 's', - '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', - '\030', '\030', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', - 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', - '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', - 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', - 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', - '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', - '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', - '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', - 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', '\"', - ':', '\n', '\022', 'T', 'l', 's', 'R', 'e', 'q', 'u', 'i', 'r', - 'e', 'm', 'e', 'n', 't', 'T', 'y', 'p', 'e', '\022', '\010', '\n', - '\004', 'N', 'O', 'N', 'E', '\020', '\000', '\022', '\021', '\n', '\r', 'E', - 'X', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'O', 'N', 'L', 'Y', - '\020', '\001', '\022', '\007', '\n', '\003', 'A', 'L', 'L', '\020', '\002', ':', - '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', - 't', 'e', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', - 's', 't', 'J', '\004', '\010', '\t', '\020', '\n', 'J', '\004', '\010', '\014', - '\020', '\r', 'R', '\021', 'p', 'e', 'r', '_', 'f', 'i', 'l', 't', - 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\"', 'd', '\n', - '\014', 'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', - 'n', '\022', ',', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', - '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', - 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', - 'A', 'n', 'y', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', ':', - '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', - 't', 'e', '.', 'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', - 'i', 'o', 'n', '\"', 'A', '\n', '\t', 'R', 'o', 'u', 't', 'e', - 'L', 'i', 's', 't', '\022', '4', '\n', '\006', 'r', 'o', 'u', 't', - 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\034', '.', 'e', + 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'B', + '\027', '\362', '\230', '\376', '\217', '\005', '\021', '\022', '\017', 'r', 'o', 'u', + 't', 'e', '_', 's', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', + 'R', '\006', 'r', 'o', 'u', 't', 'e', 's', '\022', 'O', '\n', '\007', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\025', ' ', '\001', '(', + '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\027', '\362', '\230', '\376', + '\217', '\005', '\021', '\022', '\017', 'r', 'o', 'u', 't', 'e', '_', 's', + 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'R', '\007', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '\022', '`', '\n', '\013', 'r', 'e', 'q', + 'u', 'i', 'r', 'e', '_', 't', 'l', 's', '\030', '\004', ' ', '\001', + '(', '\016', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', + 'v', '3', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', + 's', 't', '.', 'T', 'l', 's', 'R', 'e', 'q', 'u', 'i', 'r', + 'e', 'm', 'e', 'n', 't', 'T', 'y', 'p', 'e', 'B', '\010', '\372', + 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\n', 'r', 'e', 'q', + 'u', 'i', 'r', 'e', 'T', 'l', 's', '\022', 'P', '\n', '\020', 'v', + 'i', 'r', 't', 'u', 'a', 'l', '_', 'c', 'l', 'u', 's', 't', + 'e', 'r', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '%', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'V', 'i', + 'r', 't', 'u', 'a', 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', + 'R', '\017', 'v', 'i', 'r', 't', 'u', 'a', 'l', 'C', 'l', 'u', + 's', 't', 'e', 'r', 's', '\022', 'A', '\n', '\013', 'r', 'a', 't', + 'e', '_', 'l', 'i', 'm', 'i', 't', 's', '\030', '\006', ' ', '\003', + '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', + 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', + 'R', '\n', 'r', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 's', + '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', + 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', + 'd', 'd', '\030', '\007', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', - 't', 'e', 'R', '\006', 'r', 'o', 'u', 't', 'e', 's', '\"', '\257', - '\013', '\n', '\005', 'R', 'o', 'u', 't', 'e', '\022', '\022', '\n', '\004', - 'n', 'a', 'm', 'e', '\030', '\016', ' ', '\001', '(', '\t', 'R', '\004', - 'n', 'a', 'm', 'e', '\022', 'A', '\n', '\005', 'm', 'a', 't', 'c', - 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', - 'e', 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', '\212', - '\001', '\002', '\020', '\001', 'R', '\005', 'm', 'a', 't', 'c', 'h', '\022', - ':', '\n', '\005', 'r', 'o', 'u', 't', 'e', '\030', '\002', ' ', '\001', - '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', + 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', + 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', + 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', + 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'M', '\n', + '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', + 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', + 'v', 'e', '\030', '\r', ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', + '\017', '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020', '\001', '\300', '\001', + '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', + 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', + 'm', 'o', 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's', 'p', + 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', + '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\n', ' ', '\003', '(', + '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', + 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', + '\001', '\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', + 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', + 'A', 'd', 'd', '\022', 'O', '\n', '\032', 'r', 'e', 's', 'p', 'o', + 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', + 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\013', ' ', + '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', '\"', + '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', + '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', + 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', + '\022', 'B', '\n', '\004', 'c', 'o', 'r', 's', '\030', '\010', ' ', '\001', + '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', - 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', - 'o', 'n', 'H', '\000', 'R', '\005', 'r', 'o', 'u', 't', 'e', '\022', - 'C', '\n', '\010', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', - '\003', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', + 'v', '3', '.', 'C', 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', + 'y', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', + '.', '0', 'R', '\004', 'c', 'o', 'r', 's', '\022', 's', '\n', '\027', + 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', 'f', 'i', + 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '\017', ' ', '\003', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'R', 'e', 'd', 'i', 'r', 'e', - 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\010', - 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', 'V', '\n', '\017', - 'd', 'i', 'r', 'e', 'c', 't', '_', 'r', 'e', 's', 'p', 'o', - 'n', 's', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '+', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'D', 'i', - 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', - 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\016', 'd', 'i', - 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', - '\022', 'J', '\n', '\r', 'f', 'i', 'l', 't', 'e', 'r', '_', 'a', - 'c', 't', 'i', 'o', 'n', '\030', '\021', ' ', '\001', '(', '\013', '2', - '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', - 'H', '\000', 'R', '\014', 'f', 'i', 'l', 't', 'e', 'r', 'A', 'c', - 't', 'i', 'o', 'n', '\022', '`', '\n', '\025', 'n', 'o', 'n', '_', - 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', '_', 'a', - 'c', 't', 'i', 'o', 'n', '\030', '\022', ' ', '\001', '(', '\013', '2', - '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'N', 'o', 'n', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', - 'g', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\023', 'n', - 'o', 'n', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', - 'A', 'c', 't', 'i', 'o', 'n', '\022', ':', '\n', '\010', 'm', 'e', - 't', 'a', 'd', 'a', 't', 'a', '\030', '\004', ' ', '\001', '(', '\013', - '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', - 't', 'a', 'd', 'a', 't', 'a', '\022', '>', '\n', '\t', 'd', 'e', - 'c', 'o', 'r', 'a', 't', 'o', 'r', '\030', '\005', ' ', '\001', '(', - '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 't', 'e', '.', 'v', '3', '.', 'V', 'i', 'r', 't', 'u', 'a', + 'l', 'H', 'o', 's', 't', '.', 'T', 'y', 'p', 'e', 'd', 'P', + 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', + 'i', 'g', 'E', 'n', 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', + 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', + 'o', 'n', 'f', 'i', 'g', '\022', 'A', '\n', '\035', 'i', 'n', 'c', + 'l', 'u', 'd', 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', + '_', 'a', 't', 't', 'e', 'm', 'p', 't', '_', 'c', 'o', 'u', + 'n', 't', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\032', 'i', 'n', + 'c', 'l', 'u', 'd', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', + 'A', 't', 't', 'e', 'm', 'p', 't', 'C', 'o', 'u', 'n', 't', + '\022', 'H', '\n', '!', 'i', 'n', 'c', 'l', 'u', 'd', 'e', '_', + 'a', 't', 't', 'e', 'm', 'p', 't', '_', 'c', 'o', 'u', 'n', + 't', '_', 'i', 'n', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', + 'e', '\030', '\023', ' ', '\001', '(', '\010', 'R', '\035', 'i', 'n', 'c', + 'l', 'u', 'd', 'e', 'A', 't', 't', 'e', 'm', 'p', 't', 'C', + 'o', 'u', 'n', 't', 'I', 'n', 'R', 'e', 's', 'p', 'o', 'n', + 's', 'e', '\022', 'E', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', + 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\020', ' ', '\001', '(', '\013', + '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', + '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', + 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', + 'y', '\022', 'O', '\n', '\031', 'r', 'e', 't', 'r', 'y', '_', 'p', + 'o', 'l', 'i', 'c', 'y', '_', 't', 'y', 'p', 'e', 'd', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\024', ' ', '\001', '(', '\013', + '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\026', + 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'T', + 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'E', + '\n', '\014', 'h', 'e', 'd', 'g', 'e', '_', 'p', 'o', 'l', 'i', + 'c', 'y', '\030', '\021', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'd', + 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'h', 'e', + 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'D', '\n', + '\037', 'i', 'n', 'c', 'l', 'u', 'd', 'e', '_', 'i', 's', '_', + 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'r', 'e', 't', 'r', + 'y', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\027', ' ', '\001', + '(', '\010', 'R', '\033', 'i', 'n', 'c', 'l', 'u', 'd', 'e', 'I', + 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'R', 'e', 't', 'r', + 'y', 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'm', '\n', '\036', 'p', + 'e', 'r', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', + 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', + 'b', 'y', 't', 'e', 's', '\030', '\022', ' ', '\001', '(', '\013', '2', + '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', + 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'R', '\032', 'p', 'e', 'r', 'R', + 'e', 'q', 'u', 'e', 's', 't', 'B', 'u', 'f', 'f', 'e', 'r', + 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\022', 'a', + '\n', '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'o', + 'd', 'y', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', + 'm', 'i', 't', '\030', '\031', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', + 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', + '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 'B', 'o', + 'd', 'y', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', + 't', '\022', 'n', '\n', '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', + '_', 'm', 'i', 'r', 'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', + 'c', 'i', 'e', 's', '\030', '\026', ' ', '\003', '(', '\013', '2', '6', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', + 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', + 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', + 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\025', 'r', 'e', 'q', 'u', + 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', + 'i', 'c', 'i', 'e', 's', '\022', ':', '\n', '\010', 'm', 'e', 't', + 'a', 'd', 'a', 't', 'a', '\030', '\030', ' ', '\001', '(', '\013', '2', + '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', + 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', + 'a', 'd', 'a', 't', 'a', '\032', ']', '\n', '\031', 'T', 'y', 'p', + 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', + 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', + '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', + 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', + ':', '\002', '8', '\001', '\"', ':', '\n', '\022', 'T', 'l', 's', 'R', + 'e', 'q', 'u', 'i', 'r', 'e', 'm', 'e', 'n', 't', 'T', 'y', + 'p', 'e', '\022', '\010', '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\000', + '\022', '\021', '\n', '\r', 'E', 'X', 'T', 'E', 'R', 'N', 'A', 'L', + '_', 'O', 'N', 'L', 'Y', '\020', '\001', '\022', '\007', '\n', '\003', 'A', + 'L', 'L', '\020', '\002', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', + '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', + '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'V', 'i', 'r', 't', + 'u', 'a', 'l', 'H', 'o', 's', 't', 'J', '\004', '\010', '\t', '\020', + '\n', 'J', '\004', '\010', '\014', '\020', '\r', 'R', '\021', 'p', 'e', 'r', + '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\"', 'd', '\n', '\014', 'F', 'i', 'l', 't', 'e', 'r', + 'A', 'c', 't', 'i', 'o', 'n', '\022', ',', '\n', '\006', 'a', 'c', + 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\006', 'a', 'c', + 't', 'i', 'o', 'n', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', + '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', + '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'F', 'i', 'l', 't', + 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', '\"', 'A', '\n', '\t', + 'R', 'o', 'u', 't', 'e', 'L', 'i', 's', 't', '\022', '4', '\n', + '\006', 'r', 'o', 'u', 't', 'e', 's', '\030', '\001', ' ', '\003', '(', + '\013', '2', '\034', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', 'R', - '\t', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\022', 'm', - '\n', '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', - 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', - 'g', '\030', '\r', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', + '3', '.', 'R', 'o', 'u', 't', 'e', 'R', '\006', 'r', 'o', 'u', + 't', 'e', 's', '\"', '\225', '\014', '\n', '\005', 'R', 'o', 'u', 't', + 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\016', ' ', + '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'A', '\n', + '\005', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', + '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', + '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'm', + 'a', 't', 'c', 'h', '\022', ':', '\n', '\005', 'r', 'o', 'u', 't', + 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', - 'e', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', - 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', - 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'P', 'e', - 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', - 'g', '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', - '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', - 'a', 'd', 'd', '\030', '\t', ' ', '\003', '(', '\013', '2', '\'', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', - 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', - 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', - '\007', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', - 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'M', - '\n', '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', - 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', - 'o', 'v', 'e', '\030', '\014', ' ', '\003', '(', '\t', 'B', '\022', '\372', - 'B', '\017', '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020', '\001', '\300', - '\001', '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', - 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', - 'e', 'm', 'o', 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's', - 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', - 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\n', ' ', '\003', + 'e', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\005', 'r', + 'o', 'u', 't', 'e', '\022', 'C', '\n', '\010', 'r', 'e', 'd', 'i', + 'r', 'e', 'c', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '%', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', + 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', + 'n', 'H', '\000', 'R', '\010', 'r', 'e', 'd', 'i', 'r', 'e', 'c', + 't', '\022', 'V', '\n', '\017', 'd', 'i', 'r', 'e', 'c', 't', '_', + 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '\030', '\007', ' ', '\001', + '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', + 'v', '3', '.', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', + 'p', 'o', 'n', 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'H', + '\000', 'R', '\016', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', + 'p', 'o', 'n', 's', 'e', '\022', 'J', '\n', '\r', 'f', 'i', 'l', + 't', 'e', 'r', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\021', + ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'A', + 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\014', 'f', 'i', 'l', + 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', '\022', '`', '\n', + '\025', 'n', 'o', 'n', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', + 'i', 'n', 'g', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\022', + ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'N', 'o', 'n', 'F', 'o', 'r', 'w', + 'a', 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', + 'H', '\000', 'R', '\023', 'n', 'o', 'n', 'F', 'o', 'r', 'w', 'a', + 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\022', + ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', + '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', + 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', + '>', '\n', '\t', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', + '\030', '\005', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', + 'u', 't', 'e', '.', 'v', '3', '.', 'D', 'e', 'c', 'o', 'r', + 'a', 't', 'o', 'r', 'R', '\t', 'd', 'e', 'c', 'o', 'r', 'a', + 't', 'o', 'r', '\022', 'm', '\n', '\027', 't', 'y', 'p', 'e', 'd', + '_', 'p', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\r', ' ', '\003', '(', '\013', + '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', + '.', 'R', 'o', 'u', 't', 'e', '.', 'T', 'y', 'p', 'e', 'd', + 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', + 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', 'R', '\024', 't', 'y', + 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'g', '\n', '\026', 'r', 'e', + 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', + 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\t', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', - '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', - 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', - 'o', 'A', 'd', 'd', '\022', 'O', '\n', '\032', 'r', 'e', 's', 'p', - 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', - '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\013', - ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', - '\"', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', - 'R', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', - 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', - 'e', '\022', '8', '\n', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', - '\030', '\017', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'c', 'i', - 'n', 'g', 'R', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\022', - '`', '\n', '\036', 'p', 'e', 'r', '_', 'r', 'e', 'q', 'u', 'e', - 's', 't', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', - 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030', '\020', ' ', + '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q', 'u', + 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', + 'A', 'd', 'd', '\022', 'M', '\n', '\031', 'r', 'e', 'q', 'u', 'e', + 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', + 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\014', ' ', '\003', + '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', '\"', '\n', + 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\026', + 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', + 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', 'i', + '\n', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', + 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', + 'd', '\030', '\n', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', + 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', + 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', + '\024', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', + 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'O', '\n', + '\032', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', + 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', + 'o', 'v', 'e', '\030', '\013', ' ', '\003', '(', '\t', 'B', '\022', '\372', + 'B', '\017', '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020', '\001', '\300', + '\001', '\001', '\310', '\001', '\000', 'R', '\027', 'r', 'e', 's', 'p', 'o', + 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', + 'R', 'e', 'm', 'o', 'v', 'e', '\022', '8', '\n', '\007', 't', 'r', + 'a', 'c', 'i', 'n', 'g', '\030', '\017', ' ', '\001', '(', '\013', '2', + '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'R', '\007', 't', 'r', 'a', + 'c', 'i', 'n', 'g', '\022', 'm', '\n', '\036', 'p', 'e', 'r', '_', + 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'u', 'f', 'f', + 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', + 'e', 's', '\030', '\020', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', + 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', + '3', '.', '0', 'R', '\032', 'p', 'e', 'r', 'R', 'e', 'q', 'u', + 'e', 's', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', 'm', + 'i', 't', 'B', 'y', 't', 'e', 's', '\022', '\037', '\n', '\013', 's', + 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\023', + ' ', '\001', '(', '\t', 'R', '\n', 's', 't', 'a', 't', 'P', 'r', + 'e', 'f', 'i', 'x', '\022', 'W', '\n', '\031', 'r', 'e', 'q', 'u', + 'e', 's', 't', '_', 'b', 'o', 'd', 'y', '_', 'b', 'u', 'f', + 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '\030', '\024', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', - 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\032', 'p', - 'e', 'r', 'R', 'e', 'q', 'u', 'e', 's', 't', 'B', 'u', 'f', - 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', - 's', '\022', '\037', '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', - 'e', 'f', 'i', 'x', '\030', '\023', ' ', '\001', '(', '\t', 'R', '\n', - 's', 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\032', ']', - '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', - 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', - 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', - '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', - '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', - 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '\037', '\232', - '\305', '\210', '\036', '\032', '\n', '\030', 'e', 'n', 'v', 'o', 'y', '.', - 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', - '.', 'R', 'o', 'u', 't', 'e', 'B', '\r', '\n', '\006', 'a', 'c', - 't', 'i', 'o', 'n', '\022', '\003', '\370', 'B', '\001', 'J', '\004', '\010', - '\006', '\020', '\007', 'J', '\004', '\010', '\010', '\020', '\t', 'R', '\021', 'p', - 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\"', '\363', '\n', '\n', '\017', 'W', 'e', 'i', - 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', - '\022', 'Z', '\n', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', - '\030', '\001', ' ', '\003', '(', '\013', '2', '4', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', 'g', 'h', - 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', - 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', - 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', - 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'L', '\n', '\014', - 't', 'o', 't', 'a', 'l', '_', 'w', 'e', 'i', 'g', 'h', 't', - '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', - 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', - '0', 'R', '\013', 't', 'o', 't', 'a', 'l', 'W', 'e', 'i', 'g', - 'h', 't', '\022', ',', '\n', '\022', 'r', 'u', 'n', 't', 'i', 'm', - 'e', '_', 'k', 'e', 'y', '_', 'p', 'r', 'e', 'f', 'i', 'x', - '\030', '\002', ' ', '\001', '(', '\t', 'R', '\020', 'r', 'u', 'n', 't', - 'i', 'm', 'e', 'K', 'e', 'y', 'P', 'r', 'e', 'f', 'i', 'x', - '\022', '.', '\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', - 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'B', '\013', '\372', - 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\000', - 'R', '\n', 'h', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', - '\032', '\222', '\010', '\n', '\r', 'C', 'l', 'u', 's', 't', 'e', 'r', - 'W', 'e', 'i', 'g', 'h', 't', '\022', '-', '\n', '\004', 'n', 'a', - 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\031', '\362', '\230', - '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', - 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', - '\004', 'n', 'a', 'm', 'e', '\022', 'K', '\n', '\016', 'c', 'l', 'u', - 's', 't', 'e', 'r', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', - '\014', ' ', '\001', '(', '\t', 'B', '$', '\372', 'B', '\010', 'r', '\006', - '\300', '\001', '\001', '\310', '\001', '\000', '\362', '\230', '\376', '\217', '\005', '\023', - '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', - 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\r', 'c', 'l', 'u', - 's', 't', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '4', - '\n', '\006', 'w', 'e', 'i', 'g', 'h', 't', '\030', '\002', ' ', '\001', - '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', - 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\006', 'w', 'e', - 'i', 'g', 'h', 't', '\022', 'E', '\n', '\016', 'm', 'e', 't', 'a', - 'd', 'a', 't', 'a', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', - ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', - 'R', '\r', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', - 't', 'c', 'h', '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', - 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', - 'o', '_', 'a', 'd', 'd', '\030', '\004', ' ', '\003', '(', '\013', '2', + 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'R', '\026', 'r', + 'e', 'q', 'u', 'e', 's', 't', 'B', 'o', 'd', 'y', 'B', 'u', + 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', '\032', ']', '\n', + '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', + 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', + 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', + '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', + 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', + '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', + 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '\037', '\232', '\305', + '\210', '\036', '\032', '\n', '\030', 'e', 'n', 'v', 'o', 'y', '.', 'a', + 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', + 'R', 'o', 'u', 't', 'e', 'B', '\r', '\n', '\006', 'a', 'c', 't', + 'i', 'o', 'n', '\022', '\003', '\370', 'B', '\001', 'J', '\004', '\010', '\006', + '\020', '\007', 'J', '\004', '\010', '\010', '\020', '\t', 'R', '\021', 'p', 'e', + 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '\"', '\271', '\013', '\n', '\017', 'W', 'e', 'i', 'g', + 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', + 'Z', '\n', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', + '\001', ' ', '\003', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', + 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', 'g', 'h', 't', + 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'l', + 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', 'B', + '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'c', + 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'L', '\n', '\014', 't', + 'o', 't', 'a', 'l', '_', 'w', 'e', 'i', 'g', 'h', 't', '\030', + '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', + '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', + 'R', '\013', 't', 'o', 't', 'a', 'l', 'W', 'e', 'i', 'g', 'h', + 't', '\022', ',', '\n', '\022', 'r', 'u', 'n', 't', 'i', 'm', 'e', + '_', 'k', 'e', 'y', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', + '\002', ' ', '\001', '(', '\t', 'R', '\020', 'r', 'u', 'n', 't', 'i', + 'm', 'e', 'K', 'e', 'y', 'P', 'r', 'e', 'f', 'i', 'x', '\022', + '.', '\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', + 'm', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', + '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\000', 'R', + '\n', 'h', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', '\022', + 'D', '\n', '\017', 'u', 's', 'e', '_', 'h', 'a', 's', 'h', '_', + 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\005', ' ', '\001', '(', '\013', + '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', + 'a', 'l', 'u', 'e', 'H', '\000', 'R', '\r', 'u', 's', 'e', 'H', + 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '\032', '\222', '\010', + '\n', '\r', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', + 'g', 'h', 't', '\022', '-', '\n', '\004', 'n', 'a', 'm', 'e', '\030', + '\001', ' ', '\001', '(', '\t', 'B', '\031', '\362', '\230', '\376', '\217', '\005', + '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', + 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\004', 'n', 'a', + 'm', 'e', '\022', 'K', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', + 'r', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\014', ' ', '\001', + '(', '\t', 'B', '$', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', + '\310', '\001', '\000', '\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', + 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', + 'f', 'i', 'e', 'r', 'R', '\r', 'c', 'l', 'u', 's', 't', 'e', + 'r', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '4', '\n', '\006', 'w', + 'e', 'i', 'g', 'h', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', + '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', + 'V', 'a', 'l', 'u', 'e', 'R', '\006', 'w', 'e', 'i', 'g', 'h', + 't', '\022', 'E', '\n', '\016', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', + '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\r', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', + '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', + 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', + 'd', 'd', '\030', '\004', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', + 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', + 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', + 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', + 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'K', '\n', + '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', + 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', + 'v', 'e', '\030', '\t', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', + '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', + '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', + 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', + 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's', 'p', 'o', 'n', + 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', + 'o', '_', 'a', 'd', 'd', '\030', '\005', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', - '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', - 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', - '\022', 'K', '\n', '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', - 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', - 'e', 'm', 'o', 'v', 'e', '\030', '\t', ' ', '\003', '(', '\t', 'B', - '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', - '\001', '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', - 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', - 'e', 'm', 'o', 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's', - 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', - 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\005', ' ', '\003', - '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', - 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', - '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', - 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', - 'o', 'A', 'd', 'd', '\022', 'M', '\n', '\032', 'r', 'e', 's', 'p', - 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', - '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\006', - ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', - '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027', - 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', - 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', - '\205', '\001', '\n', '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', - 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '\n', ' ', '\003', '(', '\013', '2', 'N', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', - 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', - 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', - 'g', 'h', 't', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', - 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', - 'E', 'n', 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd', - 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', '?', '\n', '\024', 'h', 'o', 's', 't', '_', - 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'l', 'i', 't', 'e', - 'r', 'a', 'l', '\030', '\013', ' ', '\001', '(', '\t', 'B', '\013', '\372', - 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\000', - 'R', '\022', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', - 'e', 'L', 'i', 't', 'e', 'r', 'a', 'l', '\032', ']', '\n', '\031', - 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', - 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', - 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', - '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', - 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', - 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '7', '\232', '\305', '\210', - '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'W', - 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', - 'e', 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', - 'i', 'g', 'h', 't', 'B', '\030', '\n', '\026', 'h', 'o', 's', 't', - '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', - 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\007', '\020', '\010', - 'J', '\004', '\010', '\010', '\020', '\t', 'R', '\021', 'p', 'e', 'r', '_', - 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', - 'g', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', - 'o', 'u', 't', 'e', '.', 'W', 'e', 'i', 'g', 'h', 't', 'e', - 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', 'B', '\030', '\n', '\026', - 'r', 'a', 'n', 'd', 'o', 'm', '_', 'v', 'a', 'l', 'u', 'e', - '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\"', '\215', - '\001', '\n', '\026', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', - 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', - 'n', '\022', 'R', '\n', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', - 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', - 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', - '\020', '\001', 'R', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', '\022', '\037', '\n', '\013', 'i', 's', '_', 'o', 'p', 't', 'i', - 'o', 'n', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', - 'i', 's', 'O', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\"', '\305', - '\n', '\n', '\n', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', - 'h', '\022', '\030', '\n', '\006', 'p', 'r', 'e', 'f', 'i', 'x', '\030', - '\001', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\006', 'p', 'r', 'e', - 'f', 'i', 'x', '\022', '\024', '\n', '\004', 'p', 'a', 't', 'h', '\030', - '\002', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\004', 'p', 'a', 't', - 'h', '\022', 'N', '\n', '\n', 's', 'a', 'f', 'e', '_', 'r', 'e', - 'g', 'e', 'x', '\030', '\n', ' ', '\001', '(', '\013', '2', '#', '.', - 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', - 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', - '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\t', - 's', 'a', 'f', 'e', 'R', 'e', 'g', 'e', 'x', '\022', '[', '\n', - '\017', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'm', 'a', 't', - 'c', 'h', 'e', 'r', '\030', '\014', ' ', '\001', '(', '\013', '2', '0', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', - 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'C', 'o', - 'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', - 'H', '\000', 'R', '\016', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'M', - 'a', 't', 'c', 'h', 'e', 'r', '\022', 'K', '\n', '\025', 'p', 'a', - 't', 'h', '_', 's', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'd', - '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\016', ' ', '\001', '(', - '\t', 'B', '\025', '\372', 'B', '\022', 'r', '\020', '2', '\016', '^', '[', - '^', '?', '#', ']', '+', '[', '^', '?', '#', '/', ']', '$', - 'H', '\000', 'R', '\023', 'p', 'a', 't', 'h', 'S', 'e', 'p', 'a', - 'r', 'a', 't', 'e', 'd', 'P', 'r', 'e', 'f', 'i', 'x', '\022', - 'X', '\n', '\021', 'p', 'a', 't', 'h', '_', 'm', 'a', 't', 'c', - 'h', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\017', ' ', '\001', - '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', - 'R', '\017', 'p', 'a', 't', 'h', 'M', 'a', 't', 'c', 'h', 'P', - 'o', 'l', 'i', 'c', 'y', '\022', 'A', '\n', '\016', 'c', 'a', 's', - 'e', '_', 's', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '\030', - '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', - 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', - 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\r', 'c', - 'a', 's', 'e', 'S', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', - '\022', 'Y', '\n', '\020', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', - 'f', 'r', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', - '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', - 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', - 'n', 't', 'R', '\017', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'F', - 'r', 'a', 'c', 't', 'i', 'o', 'n', '\022', '>', '\n', '\007', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '\030', '\006', ' ', '\003', '(', '\013', - '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', - '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\022', - 'W', '\n', '\020', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', - 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\007', ' ', '\003', '(', - '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', - 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', - '\017', 'q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', - 't', 'e', 'r', 's', '\022', 'K', '\n', '\004', 'g', 'r', 'p', 'c', - '\030', '\010', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', + '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', 'n', 's', + 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', + 'd', '\022', 'M', '\n', '\032', 'r', 'e', 's', 'p', 'o', 'n', 's', + 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', + '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\006', ' ', '\003', '(', + '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', + '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027', 'r', 'e', 's', + 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', + 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', '\205', '\001', '\n', + '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', 'f', + 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', + '\030', '\n', ' ', '\003', '(', '\013', '2', 'N', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', - 'M', 'a', 't', 'c', 'h', '.', 'G', 'r', 'p', 'c', 'R', 'o', - 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', - 'o', 'n', 's', 'R', '\004', 'g', 'r', 'p', 'c', '\022', 'Y', '\n', - '\013', 't', 'l', 's', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', - '\030', '\013', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', - 'M', 'a', 't', 'c', 'h', '.', 'T', 'l', 's', 'C', 'o', 'n', - 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', - 'i', 'o', 'n', 's', 'R', '\n', 't', 'l', 's', 'C', 'o', 'n', - 't', 'e', 'x', 't', '\022', 'Q', '\n', '\020', 'd', 'y', 'n', 'a', - 'm', 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', - '\030', '\r', ' ', '\003', '(', '\013', '2', '&', '.', 'e', 'n', 'v', + 'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', 'g', 'h', + 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', + 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', + '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', + 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', + 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'P', 'e', 'r', + 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', + '\022', '?', '\n', '\024', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', + 'r', 'i', 't', 'e', '_', 'l', 'i', 't', 'e', 'r', 'a', 'l', + '\030', '\013', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', + '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\000', 'R', '\022', 'h', + 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', 'L', 'i', + 't', 'e', 'r', 'a', 'l', '\032', ']', '\n', '\031', 'T', 'y', 'p', + 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', + 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', + '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', + 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', + ':', '\002', '8', '\001', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', + '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', + '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'W', 'e', 'i', 'g', + 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', + 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', + 't', 'B', '\030', '\n', '\026', 'h', 'o', 's', 't', '_', 'r', 'e', + 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', + 'i', 'e', 'r', 'J', '\004', '\010', '\007', '\020', '\010', 'J', '\004', '\010', + '\010', '\020', '\t', 'R', '\021', 'p', 'e', 'r', '_', 'f', 'i', 'l', + 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', ':', ')', + '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', + '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', + 'e', '.', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', + 'u', 's', 't', 'e', 'r', 'B', '\030', '\n', '\026', 'r', 'a', 'n', + 'd', 'o', 'm', '_', 'v', 'a', 'l', 'u', 'e', '_', 's', 'p', + 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\"', '\215', '\001', '\n', '\026', + 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', + 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', '\022', 'R', + '\n', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', + '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', + 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', + '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', '\037', + '\n', '\013', 'i', 's', '_', 'o', 'p', 't', 'i', 'o', 'n', 'a', + 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', 'O', + 'p', 't', 'i', 'o', 'n', 'a', 'l', '\"', '\223', '\013', '\n', '\n', + 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '\022', '\030', + '\n', '\006', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\001', ' ', '\001', + '(', '\t', 'H', '\000', 'R', '\006', 'p', 'r', 'e', 'f', 'i', 'x', + '\022', '\024', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', + '(', '\t', 'H', '\000', 'R', '\004', 'p', 'a', 't', 'h', '\022', 'N', + '\n', '\n', 's', 'a', 'f', 'e', '_', 'r', 'e', 'g', 'e', 'x', + '\030', '\n', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', - 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', - 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', - 'a', 't', 'a', '\032', 'S', '\n', '\025', 'G', 'r', 'p', 'c', 'R', - 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', - 'i', 'o', 'n', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', - '3', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', - '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', - 'e', 'M', 'a', 't', 'c', 'h', '.', 'G', 'r', 'p', 'c', 'R', - 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', - 'i', 'o', 'n', 's', '\032', '\311', '\001', '\n', '\026', 'T', 'l', 's', - 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', - 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '8', '\n', '\t', 'p', - 'r', 'e', 's', 'e', 'n', 't', 'e', 'd', '\030', '\001', ' ', '\001', + 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', + '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\t', 's', 'a', 'f', + 'e', 'R', 'e', 'g', 'e', 'x', '\022', '[', '\n', '\017', 'c', 'o', + 'n', 'n', 'e', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '\030', '\014', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', + 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', + 'e', 'M', 'a', 't', 'c', 'h', '.', 'C', 'o', 'n', 'n', 'e', + 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', + '\016', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', + 'h', 'e', 'r', '\022', 'K', '\n', '\025', 'p', 'a', 't', 'h', '_', + 's', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'd', '_', 'p', 'r', + 'e', 'f', 'i', 'x', '\030', '\016', ' ', '\001', '(', '\t', 'B', '\025', + '\372', 'B', '\022', 'r', '\020', '2', '\016', '^', '[', '^', '?', '#', + ']', '+', '[', '^', '?', '#', '/', ']', '$', 'H', '\000', 'R', + '\023', 'p', 'a', 't', 'h', 'S', 'e', 'p', 'a', 'r', 'a', 't', + 'e', 'd', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'X', '\n', '\021', + 'p', 'a', 't', 'h', '_', 'm', 'a', 't', 'c', 'h', '_', 'p', + 'o', 'l', 'i', 'c', 'y', '\030', '\017', ' ', '\001', '(', '\013', '2', + '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', + 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\017', 'p', + 'a', 't', 'h', 'M', 'a', 't', 'c', 'h', 'P', 'o', 'l', 'i', + 'c', 'y', '\022', 'A', '\n', '\016', 'c', 'a', 's', 'e', '_', 's', + 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', - 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'p', 'r', 'e', 's', - 'e', 'n', 't', 'e', 'd', '\022', '8', '\n', '\t', 'v', 'a', 'l', - 'i', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', - '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', - 'a', 'l', 'u', 'e', 'R', '\t', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'e', 'd', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', - 'M', 'a', 't', 'c', 'h', '.', 'T', 'l', 's', 'C', 'o', 'n', - 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', - 'i', 'o', 'n', 's', '\032', '\020', '\n', '\016', 'C', 'o', 'n', 'n', - 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', ':', '$', - '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', - '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', - 'e', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', - 'B', '\025', '\n', '\016', 'p', 'a', 't', 'h', '_', 's', 'p', 'e', - 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'J', - '\004', '\010', '\005', '\020', '\006', 'J', '\004', '\010', '\003', '\020', '\004', 'R', - '\005', 'r', 'e', 'g', 'e', 'x', '\"', '\250', '\006', '\n', '\n', 'C', - 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '_', '\n', - '\031', 'a', 'l', 'l', 'o', 'w', '_', 'o', 'r', 'i', 'g', 'i', - 'n', '_', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', - 'c', 'h', '\030', '\013', ' ', '\003', '(', '\013', '2', '$', '.', 'e', - 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', - 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\026', - 'a', 'l', 'l', 'o', 'w', 'O', 'r', 'i', 'g', 'i', 'n', 'S', - 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '#', - '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'm', 'e', 't', 'h', - 'o', 'd', 's', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\014', 'a', - 'l', 'l', 'o', 'w', 'M', 'e', 't', 'h', 'o', 'd', 's', '\022', - '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'h', 'e', 'a', - 'd', 'e', 'r', 's', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', - 'a', 'l', 'l', 'o', 'w', 'H', 'e', 'a', 'd', 'e', 'r', 's', - '\022', '%', '\n', '\016', 'e', 'x', 'p', 'o', 's', 'e', '_', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', '\001', '(', '\t', - 'R', '\r', 'e', 'x', 'p', 'o', 's', 'e', 'H', 'e', 'a', 'd', - 'e', 'r', 's', '\022', '\027', '\n', '\007', 'm', 'a', 'x', '_', 'a', - 'g', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\006', 'm', 'a', - 'x', 'A', 'g', 'e', '\022', 'G', '\n', '\021', 'a', 'l', 'l', 'o', - 'w', '_', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', - 's', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', - '\020', 'a', 'l', 'l', 'o', 'w', 'C', 'r', 'e', 'd', 'e', 'n', - 't', 'i', 'a', 'l', 's', '\022', 'W', '\n', '\016', 'f', 'i', 'l', - 't', 'e', 'r', '_', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', - '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', - 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', - 'r', 'c', 'e', 'n', 't', 'H', '\000', 'R', '\r', 'f', 'i', 'l', - 't', 'e', 'r', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\022', 'U', - '\n', '\016', 's', 'h', 'a', 'd', 'o', 'w', '_', 'e', 'n', 'a', - 'b', 'l', 'e', 'd', '\030', '\n', ' ', '\001', '(', '\013', '2', '.', + 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\r', 'c', 'a', 's', 'e', + 'S', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '\022', 'Y', '\n', + '\020', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'f', 'r', 'a', + 'c', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\013', '2', + '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', + 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', + 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', + '\017', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', + 't', 'i', 'o', 'n', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', + 'e', 'r', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '$', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', + 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', + '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\022', 'W', '\n', '\020', + 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', + 't', 'e', 'r', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', - 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', - 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\r', - 's', 'h', 'a', 'd', 'o', 'w', 'E', 'n', 'a', 'b', 'l', 'e', - 'd', '\022', '[', '\n', '\034', 'a', 'l', 'l', 'o', 'w', '_', 'p', - 'r', 'i', 'v', 'a', 't', 'e', '_', 'n', 'e', 't', 'w', 'o', - 'r', 'k', '_', 'a', 'c', 'c', 'e', 's', 's', '\030', '\014', ' ', - '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\031', 'a', 'l', 'l', - 'o', 'w', 'P', 'r', 'i', 'v', 'a', 't', 'e', 'N', 'e', 't', - 'w', 'o', 'r', 'k', 'A', 'c', 'c', 'e', 's', 's', '\022', 'a', - '\n', '\037', 'f', 'o', 'r', 'w', 'a', 'r', 'd', '_', 'n', 'o', - 't', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '_', 'p', - 'r', 'e', 'f', 'l', 'i', 'g', 'h', 't', 's', '\030', '\r', ' ', + 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'Q', + 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', + 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', 'q', 'u', + 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', + 's', '\022', 'K', '\n', '\004', 'g', 'r', 'p', 'c', '\030', '\010', ' ', + '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', + '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', + 'c', 'h', '.', 'G', 'r', 'p', 'c', 'R', 'o', 'u', 't', 'e', + 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', + 'R', '\004', 'g', 'r', 'p', 'c', '\022', 'Y', '\n', '\013', 't', 'l', + 's', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\013', ' ', + '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', + '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', + 'c', 'h', '.', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', + 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', + 's', 'R', '\n', 't', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', + 't', '\022', 'Q', '\n', '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', + '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\r', ' ', + '\003', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', 'd', 'y', 'n', + 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + '\022', 'L', '\n', '\014', 'f', 'i', 'l', 't', 'e', 'r', '_', 's', + 't', 'a', 't', 'e', '\030', '\020', ' ', '\003', '(', '\013', '2', ')', + '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'F', + 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'R', '\013', 'f', 'i', 'l', 't', 'e', + 'r', 'S', 't', 'a', 't', 'e', '\032', 'S', '\n', '\025', 'G', 'r', + 'p', 'c', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', + 'O', 'p', 't', 'i', 'o', 'n', 's', ':', ':', '\232', '\305', '\210', + '\036', '5', '\n', '3', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', + 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'G', 'r', + 'p', 'c', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', + 'O', 'p', 't', 'i', 'o', 'n', 's', '\032', '\311', '\001', '\n', '\026', + 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a', + 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '8', + '\n', '\t', 'p', 'r', 'e', 's', 'e', 'n', 't', 'e', 'd', '\030', + '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'p', + 'r', 'e', 's', 'e', 'n', 't', 'e', 'd', '\022', '8', '\n', '\t', + 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\034', 'f', 'o', 'r', - 'w', 'a', 'r', 'd', 'N', 'o', 't', 'M', 'a', 't', 'c', 'h', - 'i', 'n', 'g', 'P', 'r', 'e', 'f', 'l', 'i', 'g', 'h', 't', - 's', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', + 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'v', 'a', 'l', + 'i', 'd', 'a', 't', 'e', 'd', ':', ';', '\232', '\305', '\210', '\036', + '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', + 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'T', 'l', 's', + 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', + 'O', 'p', 't', 'i', 'o', 'n', 's', '\032', '\020', '\n', '\016', 'C', + 'o', 'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', + 'r', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', - 'o', 'u', 't', 'e', '.', 'C', 'o', 'r', 's', 'P', 'o', 'l', - 'i', 'c', 'y', 'B', '\023', '\n', '\021', 'e', 'n', 'a', 'b', 'l', - 'e', 'd', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', - 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\010', '\020', '\t', - 'J', '\004', '\010', '\007', '\020', '\010', 'R', '\014', 'a', 'l', 'l', 'o', - 'w', '_', 'o', 'r', 'i', 'g', 'i', 'n', 'R', '\022', 'a', 'l', - 'l', 'o', 'w', '_', 'o', 'r', 'i', 'g', 'i', 'n', '_', 'r', - 'e', 'g', 'e', 'x', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', - 'd', '\"', '\246', '-', '\n', '\013', 'R', 'o', 'u', 't', 'e', 'A', - 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\007', 'c', 'l', 'u', - 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', - '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\007', 'c', - 'l', 'u', 's', 't', 'e', 'r', '\022', '6', '\n', '\016', 'c', 'l', - 'u', 's', 't', 'e', 'r', '_', 'h', 'e', 'a', 'd', 'e', 'r', - '\030', '\002', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', - '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\000', 'R', - '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', 'H', 'e', 'a', 'd', - 'e', 'r', '\022', 'U', '\n', '\021', 'w', 'e', 'i', 'g', 'h', 't', - 'e', 'd', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', - '\003', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', 'g', 'h', 't', - 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R', - '\020', 'w', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', - 's', 't', 'e', 'r', 's', '\022', ':', '\n', '\030', 'c', 'l', 'u', - 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', - 'e', 'r', '_', 'p', 'l', 'u', 'g', 'i', 'n', '\030', '%', ' ', - '\001', '(', '\t', 'H', '\000', 'R', '\026', 'c', 'l', 'u', 's', 't', - 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', - 'l', 'u', 'g', 'i', 'n', '\022', 'v', '\n', '\037', 'i', 'n', 'l', - 'i', 'n', 'e', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', - 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '_', 'p', 'l', - 'u', 'g', 'i', 'n', '\030', '\'', ' ', '\001', '(', '\013', '2', '-', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'C', - 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', - 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 'H', '\000', 'R', - '\034', 'i', 'n', 'l', 'i', 'n', 'e', 'C', 'l', 'u', 's', 't', - 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', - 'l', 'u', 'g', 'i', 'n', '\022', '\216', '\001', '\n', '\037', 'c', 'l', - 'u', 's', 't', 'e', 'r', '_', 'n', 'o', 't', '_', 'f', 'o', - 'u', 'n', 'd', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', - '_', 'c', 'o', 'd', 'e', '\030', '\024', ' ', '\001', '(', '\016', '2', - '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', 'o', 't', 'F', 'o', - 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', - 'o', 'd', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', - '\001', 'R', '\033', 'c', 'l', 'u', 's', 't', 'e', 'r', 'N', 'o', + 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', + 't', 'c', 'h', 'B', '\025', '\n', '\016', 'p', 'a', 't', 'h', '_', + 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', + 'B', '\001', 'J', '\004', '\010', '\005', '\020', '\006', 'J', '\004', '\010', '\003', + '\020', '\004', 'R', '\005', 'r', 'e', 'g', 'e', 'x', '\"', '\250', '\006', + '\n', '\n', 'C', 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', 'y', + '\022', '_', '\n', '\031', 'a', 'l', 'l', 'o', 'w', '_', 'o', 'r', + 'i', 'g', 'i', 'n', '_', 's', 't', 'r', 'i', 'n', 'g', '_', + 'm', 'a', 't', 'c', 'h', '\030', '\013', ' ', '\003', '(', '\013', '2', + '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', + 'r', 'R', '\026', 'a', 'l', 'l', 'o', 'w', 'O', 'r', 'i', 'g', + 'i', 'n', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', + 'h', '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'm', + 'e', 't', 'h', 'o', 'd', 's', '\030', '\002', ' ', '\001', '(', '\t', + 'R', '\014', 'a', 'l', 'l', 'o', 'w', 'M', 'e', 't', 'h', 'o', + 'd', 's', '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', + 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\001', '(', + '\t', 'R', '\014', 'a', 'l', 'l', 'o', 'w', 'H', 'e', 'a', 'd', + 'e', 'r', 's', '\022', '%', '\n', '\016', 'e', 'x', 'p', 'o', 's', + 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', + '\001', '(', '\t', 'R', '\r', 'e', 'x', 'p', 'o', 's', 'e', 'H', + 'e', 'a', 'd', 'e', 'r', 's', '\022', '\027', '\n', '\007', 'm', 'a', + 'x', '_', 'a', 'g', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', + '\006', 'm', 'a', 'x', 'A', 'g', 'e', '\022', 'G', '\n', '\021', 'a', + 'l', 'l', 'o', 'w', '_', 'c', 'r', 'e', 'd', 'e', 'n', 't', + 'i', 'a', 'l', 's', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', + 'u', 'e', 'R', '\020', 'a', 'l', 'l', 'o', 'w', 'C', 'r', 'e', + 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\022', 'W', '\n', '\016', + 'f', 'i', 'l', 't', 'e', 'r', '_', 'e', 'n', 'a', 'b', 'l', + 'e', 'd', '\030', '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', + 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', + 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'H', '\000', 'R', '\r', + 'f', 'i', 'l', 't', 'e', 'r', 'E', 'n', 'a', 'b', 'l', 'e', + 'd', '\022', 'U', '\n', '\016', 's', 'h', 'a', 'd', 'o', 'w', '_', + 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\n', ' ', '\001', '(', + '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', + 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', + 't', 'R', '\r', 's', 'h', 'a', 'd', 'o', 'w', 'E', 'n', 'a', + 'b', 'l', 'e', 'd', '\022', '[', '\n', '\034', 'a', 'l', 'l', 'o', + 'w', '_', 'p', 'r', 'i', 'v', 'a', 't', 'e', '_', 'n', 'e', + 't', 'w', 'o', 'r', 'k', '_', 'a', 'c', 'c', 'e', 's', 's', + '\030', '\014', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\031', + 'a', 'l', 'l', 'o', 'w', 'P', 'r', 'i', 'v', 'a', 't', 'e', + 'N', 'e', 't', 'w', 'o', 'r', 'k', 'A', 'c', 'c', 'e', 's', + 's', '\022', 'a', '\n', '\037', 'f', 'o', 'r', 'w', 'a', 'r', 'd', + '_', 'n', 'o', 't', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', + 'g', '_', 'p', 'r', 'e', 'f', 'l', 'i', 'g', 'h', 't', 's', + '\030', '\r', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\034', + 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'N', 'o', 't', 'M', 'a', + 't', 'c', 'h', 'i', 'n', 'g', 'P', 'r', 'e', 'f', 'l', 'i', + 'g', 'h', 't', 's', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', + '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', + '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'C', 'o', 'r', 's', + 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\023', '\n', '\021', 'e', 'n', + 'a', 'b', 'l', 'e', 'd', '_', 's', 'p', 'e', 'c', 'i', 'f', + 'i', 'e', 'r', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', + '\010', '\020', '\t', 'J', '\004', '\010', '\007', '\020', '\010', 'R', '\014', 'a', + 'l', 'l', 'o', 'w', '_', 'o', 'r', 'i', 'g', 'i', 'n', 'R', + '\022', 'a', 'l', 'l', 'o', 'w', '_', 'o', 'r', 'i', 'g', 'i', + 'n', '_', 'r', 'e', 'g', 'e', 'x', 'R', '\007', 'e', 'n', 'a', + 'b', 'l', 'e', 'd', '\"', '\353', '/', '\n', '\013', 'R', 'o', 'u', + 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\007', + 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', + 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', '6', '\n', + '\016', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'h', 'e', 'a', + 'd', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\r', '\372', + 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', + 'H', '\000', 'R', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', 'H', + 'e', 'a', 'd', 'e', 'r', '\022', 'U', '\n', '\021', 'w', 'e', 'i', + 'g', 'h', 't', 'e', 'd', '_', 'c', 'l', 'u', 's', 't', 'e', + 'r', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '&', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', + 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', + 'H', '\000', 'R', '\020', 'w', 'e', 'i', 'g', 'h', 't', 'e', 'd', + 'C', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', ':', '\n', '\030', + 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', + 'i', 'f', 'i', 'e', 'r', '_', 'p', 'l', 'u', 'g', 'i', 'n', + '\030', '%', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\026', 'c', 'l', + 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', + 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', '\022', 'v', '\n', '\037', + 'i', 'n', 'l', 'i', 'n', 'e', '_', 'c', 'l', 'u', 's', 't', + 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', + '_', 'p', 'l', 'u', 'g', 'i', 'n', '\030', '\'', ' ', '\001', '(', + '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', + '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', + 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', + 'H', '\000', 'R', '\034', 'i', 'n', 'l', 'i', 'n', 'e', 'C', 'l', + 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', + 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', '\022', '\216', '\001', '\n', + '\037', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', 'o', 't', + '_', 'f', 'o', 'u', 'n', 'd', '_', 'r', 'e', 's', 'p', 'o', + 'n', 's', 'e', '_', 'c', 'o', 'd', 'e', '\030', '\024', ' ', '\001', + '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', + 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', + 'o', 'n', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', - 's', 'e', 'C', 'o', 'd', 'e', '\022', 'E', '\n', '\016', 'm', 'e', - 't', 'a', 'd', 'a', 't', 'a', '_', 'm', 'a', 't', 'c', 'h', - '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', - 't', 'a', 'R', '\r', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', - 'M', 'a', 't', 'c', 'h', '\022', '2', '\n', '\016', 'p', 'r', 'e', - 'f', 'i', 'x', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', - '\005', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', - '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\r', 'p', 'r', 'e', 'f', - 'i', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'S', '\n', - '\r', 'r', 'e', 'g', 'e', 'x', '_', 'r', 'e', 'w', 'r', 'i', - 't', 'e', '\030', ' ', ' ', '\001', '(', '\013', '2', '.', '.', 'e', - 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', - 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', - 'b', 's', 't', 'i', 't', 'u', 't', 'e', 'R', '\014', 'r', 'e', - 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'Z', - '\n', '\023', 'p', 'a', 't', 'h', '_', 'r', 'e', 'w', 'r', 'i', - 't', 'e', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', ')', ' ', - '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\021', 'p', 'a', 't', 'h', 'R', 'e', 'w', 'r', 'i', 't', 'e', - 'P', 'o', 'l', 'i', 'c', 'y', '\022', '?', '\n', '\024', 'h', 'o', - 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'l', - 'i', 't', 'e', 'r', 'a', 'l', '\030', '\006', ' ', '\001', '(', '\t', - 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', - '\000', 'H', '\001', 'R', '\022', 'h', 'o', 's', 't', 'R', 'e', 'w', - 'r', 'i', 't', 'e', 'L', 'i', 't', 'e', 'r', 'a', 'l', '\022', - 'H', '\n', '\021', 'a', 'u', 't', 'o', '_', 'h', 'o', 's', 't', - '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\007', ' ', '\001', - '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', - 'l', 'V', 'a', 'l', 'u', 'e', 'H', '\001', 'R', '\017', 'a', 'u', - 't', 'o', 'H', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', - 'e', '\022', '=', '\n', '\023', 'h', 'o', 's', 't', '_', 'r', 'e', - 'w', 'r', 'i', 't', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', - '\030', '\035', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', - '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\001', 'R', '\021', 'h', - 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', 'H', 'e', - 'a', 'd', 'e', 'r', '\022', 'g', '\n', '\027', 'h', 'o', 's', 't', - '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'p', 'a', 't', - 'h', '_', 'r', 'e', 'g', 'e', 'x', '\030', '#', ' ', '\001', '(', - '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', - 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', - '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', - 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', - 'e', 'H', '\001', 'R', '\024', 'h', 'o', 's', 't', 'R', 'e', 'w', - 'r', 'i', 't', 'e', 'P', 'a', 't', 'h', 'R', 'e', 'g', 'e', - 'x', '\022', '5', '\n', '\027', 'a', 'p', 'p', 'e', 'n', 'd', '_', - 'x', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'e', 'd', '_', - 'h', 'o', 's', 't', '\030', '&', ' ', '\001', '(', '\010', 'R', '\024', - 'a', 'p', 'p', 'e', 'n', 'd', 'X', 'F', 'o', 'r', 'w', 'a', - 'r', 'd', 'e', 'd', 'H', 'o', 's', 't', '\022', '3', '\n', '\007', - 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\010', ' ', '\001', '(', - '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', - 't', 'i', 'o', 'n', 'R', '\007', 't', 'i', 'm', 'e', 'o', 'u', - 't', '\022', '<', '\n', '\014', 'i', 'd', 'l', 'e', '_', 't', 'i', - 'm', 'e', 'o', 'u', 't', '\030', '\030', ' ', '\001', '(', '\013', '2', - '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', 'R', '\013', 'i', 'd', 'l', 'e', 'T', 'i', 'm', 'e', - 'o', 'u', 't', '\022', 'V', '\n', '\021', 'e', 'a', 'r', 'l', 'y', - '_', 'd', 'a', 't', 'a', '_', 'p', 'o', 'l', 'i', 'c', 'y', - '\030', '(', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', + 's', 'e', 'C', 'o', 'd', 'e', 'B', '\010', '\372', 'B', '\005', '\202', + '\001', '\002', '\020', '\001', 'R', '\033', 'c', 'l', 'u', 's', 't', 'e', + 'r', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', 'R', 'e', 's', + 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', 'E', '\n', + '\016', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'm', 'a', + 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', + 'a', 'd', 'a', 't', 'a', 'R', '\r', 'm', 'e', 't', 'a', 'd', + 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', '\022', '2', '\n', '\016', + 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'e', 'w', 'r', 'i', + 't', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', + '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\r', 'p', + 'r', 'e', 'f', 'i', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', + '\022', 'S', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_', 'r', 'e', + 'w', 'r', 'i', 't', 'e', '\030', ' ', ' ', '\001', '(', '\013', '2', + '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', + 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e', 'R', + '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', + 'e', '\022', 'Z', '\n', '\023', 'p', 'a', 't', 'h', '_', 'r', 'e', + 'w', 'r', 'i', 't', 'e', '_', 'p', 'o', 'l', 'i', 'c', 'y', + '\030', ')', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', - 'i', 'g', 'R', '\017', 'e', 'a', 'r', 'l', 'y', 'D', 'a', 't', - 'a', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'E', '\n', '\014', 'r', - 'e', 't', 'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', - '\t', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', - 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'r', 'e', 't', 'r', 'y', - 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'O', '\n', '\031', 'r', 'e', - 't', 'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y', '_', 't', - 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', - '!', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', + 'i', 'g', 'R', '\021', 'p', 'a', 't', 'h', 'R', 'e', 'w', 'r', + 'i', 't', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '!', '\n', + '\014', 'p', 'a', 't', 'h', '_', 'r', 'e', 'w', 'r', 'i', 't', + 'e', '\030', '-', ' ', '\001', '(', '\t', 'R', '\013', 'p', 'a', 't', + 'h', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', '?', '\n', '\024', + 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', + '_', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\030', '\006', ' ', '\001', + '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', + '\310', '\001', '\000', 'H', '\001', 'R', '\022', 'h', 'o', 's', 't', 'R', + 'e', 'w', 'r', 'i', 't', 'e', 'L', 'i', 't', 'e', 'r', 'a', + 'l', '\022', 'H', '\n', '\021', 'a', 'u', 't', 'o', '_', 'h', 'o', + 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\007', + ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', + 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'H', '\001', 'R', '\017', + 'a', 'u', 't', 'o', 'H', 'o', 's', 't', 'R', 'e', 'w', 'r', + 'i', 't', 'e', '\022', '=', '\n', '\023', 'h', 'o', 's', 't', '_', + 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'h', 'e', 'a', 'd', + 'e', 'r', '\030', '\035', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', + '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\001', 'R', + '\021', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', + 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'g', '\n', '\027', 'h', 'o', + 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'p', + 'a', 't', 'h', '_', 'r', 'e', 'g', 'e', 'x', '\030', '#', ' ', + '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', + 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', + 'u', 't', 'e', 'H', '\001', 'R', '\024', 'h', 'o', 's', 't', 'R', + 'e', 'w', 'r', 'i', 't', 'e', 'P', 'a', 't', 'h', 'R', 'e', + 'g', 'e', 'x', '\022', '#', '\n', '\014', 'h', 'o', 's', 't', '_', + 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', ',', ' ', '\001', '(', + '\t', 'H', '\001', 'R', '\013', 'h', 'o', 's', 't', 'R', 'e', 'w', + 'r', 'i', 't', 'e', '\022', '5', '\n', '\027', 'a', 'p', 'p', 'e', + 'n', 'd', '_', 'x', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', + 'e', 'd', '_', 'h', 'o', 's', 't', '\030', '&', ' ', '\001', '(', + '\010', 'R', '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'X', 'F', 'o', + 'r', 'w', 'a', 'r', 'd', 'e', 'd', 'H', 'o', 's', 't', '\022', + '3', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\010', + ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', + 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\007', 't', 'i', 'm', + 'e', 'o', 'u', 't', '\022', '<', '\n', '\014', 'i', 'd', 'l', 'e', + '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\030', ' ', '\001', + '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 'R', '\013', 'i', 'd', 'l', 'e', 'T', + 'i', 'm', 'e', 'o', 'u', 't', '\022', '>', '\n', '\r', 'f', 'l', + 'u', 's', 'h', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', + '*', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', - 'A', 'n', 'y', 'R', '\026', 'r', 'e', 't', 'r', 'y', 'P', 'o', - 'l', 'i', 'c', 'y', 'T', 'y', 'p', 'e', 'd', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'n', '\n', '\027', 'r', 'e', 'q', 'u', 'e', - 's', 't', '_', 'm', 'i', 'r', 'r', 'o', 'r', '_', 'p', 'o', - 'l', 'i', 'c', 'i', 'e', 's', '\030', '\036', ' ', '\003', '(', '\013', - '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', - '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', - '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', - 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\025', 'r', 'e', - 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', - 'o', 'l', 'i', 'c', 'i', 'e', 's', '\022', 'K', '\n', '\010', 'p', - 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\013', ' ', '\001', '(', - '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\014', 'f', 'l', + 'u', 's', 'h', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'V', + '\n', '\021', 'e', 'a', 'r', 'l', 'y', '_', 'd', 'a', 't', 'a', + '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '(', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'R', 'o', 'u', 't', 'i', 'n', 'g', 'P', 'r', 'i', 'o', - 'r', 'i', 't', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', - '\020', '\001', 'R', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', - '\022', 'A', '\n', '\013', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm', - 'i', 't', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', ' ', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', - 't', 'e', 'L', 'i', 'm', 'i', 't', 'R', '\n', 'r', 'a', 't', - 'e', 'L', 'i', 'm', 'i', 't', 's', '\022', '\\', '\n', '\026', 'i', - 'n', 'c', 'l', 'u', 'd', 'e', '_', 'v', 'h', '_', 'r', 'a', - 't', 'e', '_', 'l', 'i', 'm', 'i', 't', 's', '\030', '\016', ' ', - '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', - '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 'i', 'n', - 'c', 'l', 'u', 'd', 'e', 'V', 'h', 'R', 'a', 't', 'e', 'L', - 'i', 'm', 'i', 't', 's', '\022', 'N', '\n', '\013', 'h', 'a', 's', - 'h', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\017', ' ', '\003', - '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', - 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', - 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', - 'y', 'R', '\n', 'h', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', - 'y', '\022', 'B', '\n', '\004', 'c', 'o', 'r', 's', '\030', '\021', ' ', - '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', - '.', 'v', '3', '.', 'C', 'o', 'r', 's', 'P', 'o', 'l', 'i', - 'c', 'y', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', 'R', '\004', 'c', 'o', 'r', 's', '\022', 'P', '\n', - '\020', 'm', 'a', 'x', '_', 'g', 'r', 'p', 'c', '_', 't', 'i', - 'm', 'e', 'o', 'u', 't', '\030', '\027', ' ', '\001', '(', '\013', '2', - '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', 'R', '\016', 'm', 'a', 'x', 'G', 'r', 'p', 'c', - 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'V', '\n', '\023', 'g', - 'r', 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', - 'o', 'f', 'f', 's', 'e', 't', '\030', '\034', ' ', '\001', '(', '\013', - '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', - '\003', '3', '.', '0', 'R', '\021', 'g', 'r', 'p', 'c', 'T', 'i', - 'm', 'e', 'o', 'u', 't', 'O', 'f', 'f', 's', 'e', 't', '\022', - 'Y', '\n', '\017', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '_', 'c', - 'o', 'n', 'f', 'i', 'g', 's', '\030', '\031', ' ', '\003', '(', '\013', - '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\017', 'e', + 'a', 'r', 'l', 'y', 'D', 'a', 't', 'a', 'P', 'o', 'l', 'i', + 'c', 'y', '\022', 'E', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', + 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\t', ' ', '\001', '(', '\013', + '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', - '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', - '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', - 'i', 'g', 'R', '\016', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'C', - 'o', 'n', 'f', 'i', 'g', 's', '\022', 'g', '\n', '\030', 'i', 'n', - 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', - 'e', 'c', 't', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\"', - ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', - 'e', '.', 'v', '3', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', - 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', - 'i', 'c', 'y', 'R', '\026', 'i', 'n', 't', 'e', 'r', 'n', 'a', - 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', - 'i', 'c', 'y', '\022', '\200', '\001', '\n', '\030', 'i', 'n', 't', 'e', - 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', - 't', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\032', ' ', '\001', - '(', '\016', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', - 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', - 'o', 'n', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', - 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', - 'n', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', - '.', '0', 'R', '\026', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', - 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', - 'o', 'n', '\022', '_', '\n', '\026', 'm', 'a', 'x', '_', 'i', 'n', - 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', - 'e', 'c', 't', 's', '\030', '\037', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', - '\004', '\003', '3', '.', '0', 'R', '\024', 'm', 'a', 'x', 'I', 'n', - 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', - 'c', 't', 's', '\022', 'E', '\n', '\014', 'h', 'e', 'd', 'g', 'e', - '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\033', ' ', '\001', '(', - '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', - 'y', 'R', '\013', 'h', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', - 'c', 'y', '\022', 'd', '\n', '\023', 'm', 'a', 'x', '_', 's', 't', - 'r', 'e', 'a', 'm', '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', - 'n', '\030', '$', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', + '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', + 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', + 'y', '\022', 'O', '\n', '\031', 'r', 'e', 't', 'r', 'y', '_', 'p', + 'o', 'l', 'i', 'c', 'y', '_', 't', 'y', 'p', 'e', 'd', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '!', ' ', '\001', '(', '\013', + '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\026', + 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'T', + 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'n', + '\n', '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i', + 'r', 'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'i', 'e', + 's', '\030', '\036', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', - 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M', 'a', 'x', 'S', - 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', - 'n', 'R', '\021', 'm', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', - 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\032', '\313', '\003', '\n', - '\023', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', - 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '3', '\n', '\007', - 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', - '\t', 'B', '\031', '\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', - 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', - 'f', 'i', 'e', 'r', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', - 'r', '\022', 'K', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', 'r', - '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\005', ' ', '\001', '(', - '\t', 'B', '$', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\310', - '\001', '\000', '\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', - 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', - 'i', 'e', 'r', 'R', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', - 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'Y', '\n', '\020', 'r', 'u', - 'n', 't', 'i', 'm', 'e', '_', 'f', 'r', 'a', 'c', 't', 'i', - 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '.', '.', 'e', + 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', + 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', + 'i', 'c', 'y', 'R', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', + 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'i', + 'e', 's', '\022', 'K', '\n', '\010', 'p', 'r', 'i', 'o', 'r', 'i', + 't', 'y', '\030', '\013', ' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', - 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', - 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'r', 'u', - 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', - 'n', '\022', '?', '\n', '\r', 't', 'r', 'a', 'c', 'e', '_', 's', - 'a', 'm', 'p', 'l', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\013', - '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', - 'a', 'l', 'u', 'e', 'R', '\014', 't', 'r', 'a', 'c', 'e', 'S', - 'a', 'm', 'p', 'l', 'e', 'd', '\022', 'H', '\n', '!', 'd', 'i', - 's', 'a', 'b', 'l', 'e', '_', 's', 'h', 'a', 'd', 'o', 'w', - '_', 'h', 'o', 's', 't', '_', 's', 'u', 'f', 'f', 'i', 'x', - '_', 'a', 'p', 'p', 'e', 'n', 'd', '\030', '\006', ' ', '\001', '(', - '\010', 'R', '\035', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'S', 'h', - 'a', 'd', 'o', 'w', 'H', 'o', 's', 't', 'S', 'u', 'f', 'f', - 'i', 'x', 'A', 'p', 'p', 'e', 'n', 'd', ':', '9', '\232', '\305', - '\210', '\036', '4', '\n', '2', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', - 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', - 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', - 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'J', '\004', '\010', '\002', '\020', - '\003', 'R', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', - 'e', 'y', '\032', '\326', '\013', '\n', '\n', 'H', 'a', 's', 'h', 'P', - 'o', 'l', 'i', 'c', 'y', '\022', 'N', '\n', '\006', 'h', 'e', 'a', - 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '4', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', + 'i', 'n', 'g', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', 'B', + '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 'p', + 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', 'A', '\n', '\013', 'r', + 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', 't', 's', '\030', '\r', + ' ', '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', + 'i', 't', 'R', '\n', 'r', 'a', 't', 'e', 'L', 'i', 'm', 'i', + 't', 's', '\022', '\\', '\n', '\026', 'i', 'n', 'c', 'l', 'u', 'd', + 'e', '_', 'v', 'h', '_', 'r', 'a', 't', 'e', '_', 'l', 'i', + 'm', 'i', 't', 's', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', + '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', + 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', + 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', + '3', '.', '0', 'R', '\023', 'i', 'n', 'c', 'l', 'u', 'd', 'e', + 'V', 'h', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 's', + '\022', 'N', '\n', '\013', 'h', 'a', 's', 'h', '_', 'p', 'o', 'l', + 'i', 'c', 'y', '\030', '\017', ' ', '\003', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', - 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'H', 'e', 'a', - 'd', 'e', 'r', 'H', '\000', 'R', '\006', 'h', 'e', 'a', 'd', 'e', - 'r', '\022', 'N', '\n', '\006', 'c', 'o', 'o', 'k', 'i', 'e', '\030', - '\002', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', + 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\n', 'h', 'a', + 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'B', '\n', '\004', + 'c', 'o', 'r', 's', '\030', '\021', ' ', '\001', '(', '\013', '2', '!', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'C', + 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\013', '\030', + '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\004', + 'c', 'o', 'r', 's', '\022', 'P', '\n', '\020', 'm', 'a', 'x', '_', + 'g', 'r', 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', + '\030', '\027', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\013', '\030', + '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\016', + 'm', 'a', 'x', 'G', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', + 'u', 't', '\022', 'V', '\n', '\023', 'g', 'r', 'p', 'c', '_', 't', + 'i', 'm', 'e', 'o', 'u', 't', '_', 'o', 'f', 'f', 's', 'e', + 't', '\030', '\034', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\013', + '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', + '\021', 'g', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', 'u', 't', + 'O', 'f', 'f', 's', 'e', 't', '\022', 'Y', '\n', '\017', 'u', 'p', + 'g', 'r', 'a', 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', + 's', '\030', '\031', ' ', '\003', '(', '\013', '2', '0', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', + 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', + 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', + 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'u', + 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', + 's', '\022', 'g', '\n', '\030', 'i', 'n', 't', 'e', 'r', 'n', 'a', + 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '_', 'p', + 'o', 'l', 'i', 'c', 'y', '\030', '\"', ' ', '\001', '(', '\013', '2', + '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', + 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\026', + 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', + 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\200', + '\001', '\n', '\030', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', + 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '_', 'a', 'c', 't', + 'i', 'o', 'n', '\030', '\032', ' ', '\001', '(', '\016', '2', '9', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', + 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'I', 'n', + 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', + 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\013', '\030', '\001', + '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\026', 'i', + 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', + 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', '_', '\n', + '\026', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'n', 'a', + 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\030', + '\037', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', + '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', + 'R', '\024', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'n', 'a', + 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\022', 'E', + '\n', '\014', 'h', 'e', 'd', 'g', 'e', '_', 'p', 'o', 'l', 'i', + 'c', 'y', '\030', '\033', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'd', + 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'h', 'e', + 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'd', '\n', + '\023', 'm', 'a', 'x', '_', 's', 't', 'r', 'e', 'a', 'm', '_', + 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '$', ' ', '\001', + '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', + 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', + 'o', 'n', '.', 'M', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', + 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'm', 'a', + 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', + 'i', 'o', 'n', '\032', '\210', '\005', '\n', '\023', 'R', 'e', 'q', 'u', + 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', + 'i', 'c', 'y', '\022', '3', '\n', '\007', 'c', 'l', 'u', 's', 't', + 'e', 'r', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\031', '\362', '\230', + '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', + 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', + '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', 'K', '\n', '\016', + 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'h', 'e', 'a', 'd', + 'e', 'r', '\030', '\005', ' ', '\001', '(', '\t', 'B', '$', '\372', 'B', + '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', '\362', '\230', '\376', + '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', + '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\r', + 'c', 'l', 'u', 's', 't', 'e', 'r', 'H', 'e', 'a', 'd', 'e', + 'r', '\022', 'Y', '\n', '\020', 'r', 'u', 'n', 't', 'i', 'm', 'e', + '_', 'f', 'r', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', + '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', + 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', + 'e', 'n', 't', 'R', '\017', 'r', 'u', 'n', 't', 'i', 'm', 'e', + 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', '\022', '?', '\n', '\r', + 't', 'r', 'a', 'c', 'e', '_', 's', 'a', 'm', 'p', 'l', 'e', + 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', + '\014', 't', 'r', 'a', 'c', 'e', 'S', 'a', 'm', 'p', 'l', 'e', + 'd', '\022', 'H', '\n', '!', 'd', 'i', 's', 'a', 'b', 'l', 'e', + '_', 's', 'h', 'a', 'd', 'o', 'w', '_', 'h', 'o', 's', 't', + '_', 's', 'u', 'f', 'f', 'i', 'x', '_', 'a', 'p', 'p', 'e', + 'n', 'd', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\035', 'd', 'i', + 's', 'a', 'b', 'l', 'e', 'S', 'h', 'a', 'd', 'o', 'w', 'H', + 'o', 's', 't', 'S', 'u', 'f', 'f', 'i', 'x', 'A', 'p', 'p', + 'e', 'n', 'd', '\022', '|', '\n', '\031', 'r', 'e', 'q', 'u', 'e', + 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'm', + 'u', 't', 'a', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\003', + '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', + '.', 'm', 'u', 't', 'a', 't', 'i', 'o', 'n', '_', 'r', 'u', + 'l', 'e', 's', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', + 'r', 'M', 'u', 't', 'a', 't', 'i', 'o', 'n', 'B', '\t', '\372', + 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\027', 'r', 'e', + 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', + 'M', 'u', 't', 'a', 't', 'i', 'o', 'n', 's', '\022', '=', '\n', + '\024', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', + 'e', '_', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\030', '\010', ' ', + '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', + '\002', '\310', '\001', '\000', 'R', '\022', 'h', 'o', 's', 't', 'R', 'e', + 'w', 'r', 'i', 't', 'e', 'L', 'i', 't', 'e', 'r', 'a', 'l', + ':', '9', '\232', '\305', '\210', '\036', '4', '\n', '2', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', + 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', + 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', + 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'J', + '\004', '\010', '\002', '\020', '\003', 'R', '\013', 'r', 'u', 'n', 't', 'i', + 'm', 'e', '_', 'k', 'e', 'y', '\032', '\326', '\013', '\n', '\n', 'H', + 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'N', '\n', + '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', + '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', + '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', + 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', + '.', 'H', 'e', 'a', 'd', 'e', 'r', 'H', '\000', 'R', '\006', 'h', + 'e', 'a', 'd', 'e', 'r', '\022', 'N', '\n', '\006', 'c', 'o', 'o', + 'k', 'i', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '4', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', + 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', + 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'o', + 'k', 'i', 'e', 'H', '\000', 'R', '\006', 'c', 'o', 'o', 'k', 'i', + 'e', '\022', 'y', '\n', '\025', 'c', 'o', 'n', 'n', 'e', 'c', 't', + 'i', 'o', 'n', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', + 'e', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', 'B', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', + 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', + 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'n', 'n', + 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', + 't', 'i', 'e', 's', 'H', '\000', 'R', '\024', 'c', 'o', 'n', 'n', + 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', + 't', 'i', 'e', 's', '\022', 'g', '\n', '\017', 'q', 'u', 'e', 'r', + 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\030', + '\005', ' ', '\001', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', - 'l', 'i', 'c', 'y', '.', 'C', 'o', 'o', 'k', 'i', 'e', 'H', - '\000', 'R', '\006', 'c', 'o', 'o', 'k', 'i', 'e', '\022', 'y', '\n', - '\025', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', - 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\030', '\003', - ' ', '\001', '(', '\013', '2', 'B', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', - 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', + 'l', 'i', 'c', 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', + 'r', 'a', 'm', 'e', 't', 'e', 'r', 'H', '\000', 'R', '\016', 'q', + 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', + 'r', '\022', '^', '\n', '\014', 'f', 'i', 'l', 't', 'e', 'r', '_', + 's', 't', 'a', 't', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', + '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', + 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'F', + 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', 'H', '\000', + 'R', '\013', 'f', 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', + 'e', '\022', '\032', '\n', '\010', 't', 'e', 'r', 'm', 'i', 'n', 'a', + 'l', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\010', 't', 'e', 'r', + 'm', 'i', 'n', 'a', 'l', '\032', '\306', '\001', '\n', '\006', 'H', 'e', + 'a', 'd', 'e', 'r', '\022', '.', '\n', '\013', 'h', 'e', 'a', 'd', + 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', + '\001', '\310', '\001', '\000', 'R', '\n', 'h', 'e', 'a', 'd', 'e', 'r', + 'N', 'a', 'm', 'e', '\022', 'S', '\n', '\r', 'r', 'e', 'g', 'e', + 'x', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\002', ' ', + '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', + 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', + 'u', 't', 'e', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', + 'w', 'r', 'i', 't', 'e', ':', '7', '\232', '\305', '\210', '\036', '2', + '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', + 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', + 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'H', 'e', 'a', 'd', + 'e', 'r', '\032', '_', '\n', '\017', 'C', 'o', 'o', 'k', 'i', 'e', + 'A', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', '\022', '%', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\021', '\372', 'B', '\016', 'r', '\014', '\020', '\001', '(', '\200', '\200', '\001', + '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', + '\022', '%', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', + '\001', '(', '\t', 'B', '\017', '\372', 'B', '\014', 'r', '\n', '(', '\200', + '\200', '\001', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\005', 'v', 'a', + 'l', 'u', 'e', '\032', '\376', '\001', '\n', '\006', 'C', 'o', 'o', 'k', + 'i', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', + ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', + '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '+', '\n', '\003', 't', + 't', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', + '\003', 't', 't', 'l', '\022', '\022', '\n', '\004', 'p', 'a', 't', 'h', + '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'p', 'a', 't', 'h', + '\022', ']', '\n', '\n', 'a', 't', 't', 'r', 'i', 'b', 'u', 't', + 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '=', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', + 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', + 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'o', 'k', + 'i', 'e', 'A', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', 'R', + '\n', 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', 's', ':', + '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', + 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', + 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', + 'y', '.', 'C', 'o', 'o', 'k', 'i', 'e', '\032', 'z', '\n', '\024', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', + 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\022', '\033', '\n', '\t', + 's', 'o', 'u', 'r', 'c', 'e', '_', 'i', 'p', '\030', '\001', ' ', + '\001', '(', '\010', 'R', '\010', 's', 'o', 'u', 'r', 'c', 'e', 'I', + 'p', ':', 'E', '\232', '\305', '\210', '\036', '@', '\n', '>', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', + 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', - 'H', '\000', 'R', '\024', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', - 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', - '\022', 'g', '\n', '\017', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', - 'r', 'a', 'm', 'e', 't', 'e', 'r', '\030', '\005', ' ', '\001', '(', - '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', + '\032', 'n', '\n', '\016', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', + 'a', 'm', 'e', 't', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', + 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', + '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', ':', + '?', '\232', '\305', '\210', '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', + 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', + 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', + 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', + 'e', 't', 'e', 'r', '\032', 'f', '\n', '\013', 'F', 'i', 'l', 't', + 'e', 'r', 'S', 't', 'a', 't', 'e', '\022', '\031', '\n', '\003', 'k', + 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', + '\004', 'r', '\002', '\020', '\001', 'R', '\003', 'k', 'e', 'y', ':', '<', + '\232', '\305', '\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o', 'y', + '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', + 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', - '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', - 't', 'e', 'r', 'H', '\000', 'R', '\016', 'q', 'u', 'e', 'r', 'y', - 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\022', '^', '\n', - '\014', 'f', 'i', 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', - 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', - 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', - 'P', 'o', 'l', 'i', 'c', 'y', '.', 'F', 'i', 'l', 't', 'e', - 'r', 'S', 't', 'a', 't', 'e', 'H', '\000', 'R', '\013', 'f', 'i', - 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', '\022', '\032', '\n', - '\010', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', '\030', '\004', ' ', - '\001', '(', '\010', 'R', '\010', 't', 'e', 'r', 'm', 'i', 'n', 'a', - 'l', '\032', '\306', '\001', '\n', '\006', 'H', 'e', 'a', 'd', 'e', 'r', - '\022', '.', '\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', - 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', - 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', - 'R', '\n', 'h', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', - '\022', 'S', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_', 'r', 'e', - 'w', 'r', 'i', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', - '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', - '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', - 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', - 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e', 'R', - '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', - 'e', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', - 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', - 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', - 'i', 'c', 'y', '.', 'H', 'e', 'a', 'd', 'e', 'r', '\032', '_', - '\n', '\017', 'C', 'o', 'o', 'k', 'i', 'e', 'A', 't', 't', 'r', - 'i', 'b', 'u', 't', 'e', '\022', '%', '\n', '\004', 'n', 'a', 'm', - 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\021', '\372', 'B', '\016', - 'r', '\014', '\020', '\001', '(', '\200', '\200', '\001', '\300', '\001', '\001', '\310', - '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '%', '\n', '\005', - 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'B', - '\017', '\372', 'B', '\014', 'r', '\n', '(', '\200', '\200', '\001', '\300', '\001', - '\002', '\310', '\001', '\000', 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\032', - '\376', '\001', '\n', '\006', 'C', 'o', 'o', 'k', 'i', 'e', '\022', '\033', - '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', - 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', - 'a', 'm', 'e', '\022', '+', '\n', '\003', 't', 't', 'l', '\030', '\002', - ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', - 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\003', 't', 't', 'l', - '\022', '\022', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\003', ' ', '\001', - '(', '\t', 'R', '\004', 'p', 'a', 't', 'h', '\022', ']', '\n', '\n', - 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', 's', '\030', '\004', - ' ', '\003', '(', '\013', '2', '=', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', - 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', - 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', - 'i', 'c', 'y', '.', 'C', 'o', 'o', 'k', 'i', 'e', 'A', 't', - 't', 'r', 'i', 'b', 'u', 't', 'e', 'R', '\n', 'a', 't', 't', - 'r', 'i', 'b', 'u', 't', 'e', 's', ':', '7', '\232', '\305', '\210', - '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', - 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', - 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', - 'o', 'k', 'i', 'e', '\032', 'z', '\n', '\024', 'C', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', - 't', 'i', 'e', 's', '\022', '\033', '\n', '\t', 's', 'o', 'u', 'r', - 'c', 'e', '_', 'i', 'p', '\030', '\001', ' ', '\001', '(', '\010', 'R', - '\010', 's', 'o', 'u', 'r', 'c', 'e', 'I', 'p', ':', 'E', '\232', - '\305', '\210', '\036', '@', '\n', '>', 'e', 'n', 'v', 'o', 'y', '.', - 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', - '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', - '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', - 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', - 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\032', 'n', '\n', '\016', - 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', - 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', - ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', - '\001', 'R', '\004', 'n', 'a', 'm', 'e', ':', '?', '\232', '\305', '\210', - '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', - 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', - 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'Q', 'u', - 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', - '\032', 'f', '\n', '\013', 'F', 'i', 'l', 't', 'e', 'r', 'S', 't', - 'a', 't', 'e', '\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', '\001', - ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', - '\001', 'R', '\003', 'k', 'e', 'y', ':', '<', '\232', '\305', '\210', '\036', - '7', '\n', '5', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', - 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', - 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'F', 'i', 'l', - 't', 'e', 'r', 'S', 't', 'a', 't', 'e', ':', '0', '\232', '\305', - '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', - 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', - 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\027', - '\n', '\020', 'p', 'o', 'l', 'i', 'c', 'y', '_', 's', 'p', 'e', - 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', - '\243', '\003', '\n', '\r', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', - 'o', 'n', 'f', 'i', 'g', '\022', '0', '\n', '\014', 'u', 'p', 'g', - 'r', 'a', 'd', 'e', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', - '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', - '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\013', 'u', 'p', 'g', 'r', - 'a', 'd', 'e', 'T', 'y', 'p', 'e', '\022', '4', '\n', '\007', 'e', - 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', - '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', - 'a', 'l', 'u', 'e', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', - 'd', '\022', 'e', '\n', '\016', 'c', 'o', 'n', 'n', 'e', 'c', 't', - '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', - '\013', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', - 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', - 'f', 'i', 'g', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'C', - 'o', 'n', 'f', 'i', 'g', 'R', '\r', 'c', 'o', 'n', 'n', 'e', - 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\215', '\001', '\n', - '\r', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', ']', '\n', '\025', 'p', 'r', 'o', 'x', 'y', '_', - 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', ')', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'P', 'r', 'o', - 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', - 'n', 'f', 'i', 'g', 'R', '\023', 'p', 'r', 'o', 'x', 'y', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', - 'g', '\022', '\035', '\n', '\n', 'a', 'l', 'l', 'o', 'w', '_', 'p', - 'o', 's', 't', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\t', 'a', - 'l', 'l', 'o', 'w', 'P', 'o', 's', 't', ':', '3', '\232', '\305', - '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', - 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', - 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', - 'g', '\032', '\210', '\002', '\n', '\021', 'M', 'a', 'x', 'S', 't', 'r', - 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', - 'I', '\n', '\023', 'm', 'a', 'x', '_', 's', 't', 'r', 'e', 'a', - 'm', '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\001', + '.', 'F', 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', + ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', + 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', + 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', + 'c', 'y', 'B', '\027', '\n', '\020', 'p', 'o', 'l', 'i', 'c', 'y', + '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', + '\370', 'B', '\001', '\032', '\243', '\003', '\n', '\r', 'U', 'p', 'g', 'r', + 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '0', '\n', + '\014', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '_', 't', 'y', 'p', + 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', + 'r', '\010', '\020', '\001', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\013', + 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'T', 'y', 'p', 'e', '\022', + '4', '\n', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\002', + ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', + 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'e', 'n', + 'a', 'b', 'l', 'e', 'd', '\022', 'e', '\n', '\016', 'c', 'o', 'n', + 'n', 'e', 'c', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '\003', ' ', '\001', '(', '\013', '2', '>', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', + 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', + 'c', 't', 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', + 'e', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', 'o', 'n', 'n', + 'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\r', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', + '\032', '\215', '\001', '\n', '\r', 'C', 'o', 'n', 'n', 'e', 'c', 't', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', ']', '\n', '\025', 'p', 'r', + 'o', 'x', 'y', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', + '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', + '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'P', 'r', 'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'p', 'r', + 'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', + 'o', 'n', 'f', 'i', 'g', '\022', '\035', '\n', '\n', 'a', 'l', 'l', + 'o', 'w', '_', 'p', 'o', 's', 't', '\030', '\002', ' ', '\001', '(', + '\010', 'R', '\t', 'a', 'l', 'l', 'o', 'w', 'P', 'o', 's', 't', + ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', + 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', + 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', + 'o', 'n', 'f', 'i', 'g', '\032', '\210', '\002', '\n', '\021', 'M', 'a', + 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', + 'i', 'o', 'n', '\022', 'I', '\n', '\023', 'm', 'a', 'x', '_', 's', + 't', 'r', 'e', 'a', 'm', '_', 'd', 'u', 'r', 'a', 't', 'i', + 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', + '\021', 'm', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', + 'r', 'a', 't', 'i', 'o', 'n', '\022', 'P', '\n', '\027', 'g', 'r', + 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'h', + 'e', 'a', 'd', 'e', 'r', '_', 'm', 'a', 'x', '\030', '\002', ' ', + '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', + 'r', 'a', 't', 'i', 'o', 'n', 'R', '\024', 'g', 'r', 'p', 'c', + 'T', 'i', 'm', 'e', 'o', 'u', 't', 'H', 'e', 'a', 'd', 'e', + 'r', 'M', 'a', 'x', '\022', 'V', '\n', '\032', 'g', 'r', 'p', 'c', + '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'h', 'e', 'a', + 'd', 'e', 'r', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', - 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'm', 'a', 'x', - 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', '\022', 'P', '\n', '\027', 'g', 'r', 'p', 'c', '_', 't', - 'i', 'm', 'e', 'o', 'u', 't', '_', 'h', 'e', 'a', 'd', 'e', - 'r', '_', 'm', 'a', 'x', '\030', '\002', ' ', '\001', '(', '\013', '2', - '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', 'R', '\024', 'g', 'r', 'p', 'c', 'T', 'i', 'm', 'e', - 'o', 'u', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 'x', - '\022', 'V', '\n', '\032', 'g', 'r', 'p', 'c', '_', 't', 'i', 'm', - 'e', 'o', 'u', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', - 'o', 'f', 'f', 's', 'e', 't', '\030', '\003', ' ', '\001', '(', '\013', - '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'R', '\027', 'g', 'r', 'p', 'c', 'T', 'i', 'm', - 'e', 'o', 'u', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'O', 'f', - 'f', 's', 'e', 't', '\"', '`', '\n', '\033', 'C', 'l', 'u', 's', - 't', 'e', 'r', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', 'R', - 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', - '\027', '\n', '\023', 'S', 'E', 'R', 'V', 'I', 'C', 'E', '_', 'U', - 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '\020', '\000', - '\022', '\r', '\n', '\t', 'N', 'O', 'T', '_', 'F', 'O', 'U', 'N', - 'D', '\020', '\001', '\022', '\031', '\n', '\025', 'I', 'N', 'T', 'E', 'R', - 'N', 'A', 'L', '_', 'S', 'E', 'R', 'V', 'E', 'R', '_', 'E', - 'R', 'R', 'O', 'R', '\020', '\002', '\"', '^', '\n', '\026', 'I', 'n', - 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', - 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\"', '\n', '\036', - 'P', 'A', 'S', 'S', '_', 'T', 'H', 'R', 'O', 'U', 'G', 'H', - '_', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'R', 'E', - 'D', 'I', 'R', 'E', 'C', 'T', '\020', '\000', '\022', '\034', '\n', '\030', - 'H', 'A', 'N', 'D', 'L', 'E', '_', 'I', 'N', 'T', 'E', 'R', - 'N', 'A', 'L', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', 'T', - '\020', '\001', '\032', '\002', '\030', '\001', ':', '%', '\232', '\305', '\210', '\036', - ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', - 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\030', '\n', - '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', - 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'B', - '\030', '\n', '\026', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', - 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', - 'r', 'J', '\004', '\010', '\014', '\020', '\r', 'J', '\004', '\010', '\022', '\020', - '\023', 'J', '\004', '\010', '\023', '\020', '\024', 'J', '\004', '\010', '\020', '\020', - '\021', 'J', '\004', '\010', '\026', '\020', '\027', 'J', '\004', '\010', '\025', '\020', - '\026', 'J', '\004', '\010', '\n', '\020', '\013', 'R', '\025', 'r', 'e', 'q', - 'u', 'e', 's', 't', '_', 'm', 'i', 'r', 'r', 'o', 'r', '_', - 'p', 'o', 'l', 'i', 'c', 'y', '\"', '\277', '\020', '\n', '\013', 'R', - 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\031', - '\n', '\010', 'r', 'e', 't', 'r', 'y', '_', 'o', 'n', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 't', 'r', 'y', 'O', - 'n', '\022', 'R', '\n', '\013', 'n', 'u', 'm', '_', 'r', 'e', 't', - 'r', 'i', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', - 'a', 'l', 'u', 'e', 'B', '\023', '\362', '\230', '\376', '\217', '\005', '\r', - '\n', '\013', 'm', 'a', 'x', '_', 'r', 'e', 't', 'r', 'i', 'e', - 's', 'R', '\n', 'n', 'u', 'm', 'R', 'e', 't', 'r', 'i', 'e', - 's', '\022', 'A', '\n', '\017', 'p', 'e', 'r', '_', 't', 'r', 'y', - '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', - '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', - 'a', 't', 'i', 'o', 'n', 'R', '\r', 'p', 'e', 'r', 'T', 'r', - 'y', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'J', '\n', '\024', - 'p', 'e', 'r', '_', 't', 'r', 'y', '_', 'i', 'd', 'l', 'e', - '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\r', ' ', '\001', - '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', - 'a', 't', 'i', 'o', 'n', 'R', '\021', 'p', 'e', 'r', 'T', 'r', - 'y', 'I', 'd', 'l', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', - '\022', 'W', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'p', 'r', - 'i', 'o', 'r', 'i', 't', 'y', '\030', '\004', ' ', '\001', '(', '\013', - '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', - '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', - '.', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', - 't', 'y', 'R', '\r', 'r', 'e', 't', 'r', 'y', 'P', 'r', 'i', - 'o', 'r', 'i', 't', 'y', '\022', 'g', '\n', '\024', 'r', 'e', 't', - 'r', 'y', '_', 'h', 'o', 's', 't', '_', 'p', 'r', 'e', 'd', - 'i', 'c', 'a', 't', 'e', '\030', '\005', ' ', '\003', '(', '\013', '2', - '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', - 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', - 'd', 'i', 'c', 'a', 't', 'e', 'R', '\022', 'r', 'e', 't', 'r', - 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', - 't', 'e', '\022', 'd', '\n', '\030', 'r', 'e', 't', 'r', 'y', '_', - 'o', 'p', 't', 'i', 'o', 'n', 's', '_', 'p', 'r', 'e', 'd', - 'i', 'c', 'a', 't', 'e', 's', '\030', '\014', ' ', '\003', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 'r', 'e', - 't', 'r', 'y', 'O', 'p', 't', 'i', 'o', 'n', 's', 'P', 'r', - 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\022', 'H', '\n', '!', - 'h', 'o', 's', 't', '_', 's', 'e', 'l', 'e', 'c', 't', 'i', - 'o', 'n', '_', 'r', 'e', 't', 'r', 'y', '_', 'm', 'a', 'x', - '_', 'a', 't', 't', 'e', 'm', 'p', 't', 's', '\030', '\006', ' ', - '\001', '(', '\003', 'R', '\035', 'h', 'o', 's', 't', 'S', 'e', 'l', - 'e', 'c', 't', 'i', 'o', 'n', 'R', 'e', 't', 'r', 'y', 'M', - 'a', 'x', 'A', 't', 't', 'e', 'm', 'p', 't', 's', '\022', '4', - '\n', '\026', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', - 's', 't', 'a', 't', 'u', 's', '_', 'c', 'o', 'd', 'e', 's', - '\030', '\007', ' ', '\003', '(', '\r', 'R', '\024', 'r', 'e', 't', 'r', - 'i', 'a', 'b', 'l', 'e', 'S', 't', 'a', 't', 'u', 's', 'C', - 'o', 'd', 'e', 's', '\022', 'U', '\n', '\016', 'r', 'e', 't', 'r', - 'y', '_', 'b', 'a', 'c', 'k', '_', 'o', 'f', 'f', '\030', '\010', - ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', + 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\027', 'g', 'r', 'p', + 'c', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'H', 'e', 'a', 'd', + 'e', 'r', 'O', 'f', 'f', 's', 'e', 't', '\"', '`', '\n', '\033', + 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', 'o', 't', 'F', 'o', + 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', + 'o', 'd', 'e', '\022', '\027', '\n', '\023', 'S', 'E', 'R', 'V', 'I', + 'C', 'E', '_', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', + 'L', 'E', '\020', '\000', '\022', '\r', '\n', '\t', 'N', 'O', 'T', '_', + 'F', 'O', 'U', 'N', 'D', '\020', '\001', '\022', '\031', '\n', '\025', 'I', + 'N', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'S', 'E', 'R', 'V', + 'E', 'R', '_', 'E', 'R', 'R', 'O', 'R', '\020', '\002', '\"', '^', + '\n', '\026', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', + 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', + '\022', '\"', '\n', '\036', 'P', 'A', 'S', 'S', '_', 'T', 'H', 'R', + 'O', 'U', 'G', 'H', '_', 'I', 'N', 'T', 'E', 'R', 'N', 'A', + 'L', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', 'T', '\020', '\000', + '\022', '\034', '\n', '\030', 'H', 'A', 'N', 'D', 'L', 'E', '_', 'I', + 'N', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'R', 'E', 'D', 'I', + 'R', 'E', 'C', 'T', '\020', '\001', '\032', '\002', '\030', '\001', ':', '%', + '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', + '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', + 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', + 'n', 'B', '\030', '\n', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', + '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', + '\370', 'B', '\001', 'B', '\030', '\n', '\026', 'h', 'o', 's', 't', '_', + 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', + 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\014', '\020', '\r', 'J', + '\004', '\010', '\022', '\020', '\023', 'J', '\004', '\010', '\023', '\020', '\024', 'J', + '\004', '\010', '\020', '\020', '\021', 'J', '\004', '\010', '\026', '\020', '\027', 'J', + '\004', '\010', '\025', '\020', '\026', 'J', '\004', '\010', '\n', '\020', '\013', 'R', + '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i', 'r', + 'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\"', '\277', + '\020', '\n', '\013', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', + 'c', 'y', '\022', '\031', '\n', '\010', 'r', 'e', 't', 'r', 'y', '_', + 'o', 'n', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', + 't', 'r', 'y', 'O', 'n', '\022', 'R', '\n', '\013', 'n', 'u', 'm', + '_', 'r', 'e', 't', 'r', 'i', 'e', 's', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', + 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\023', '\362', '\230', + '\376', '\217', '\005', '\r', '\n', '\013', 'm', 'a', 'x', '_', 'r', 'e', + 't', 'r', 'i', 'e', 's', 'R', '\n', 'n', 'u', 'm', 'R', 'e', + 't', 'r', 'i', 'e', 's', '\022', 'A', '\n', '\017', 'p', 'e', 'r', + '_', 't', 'r', 'y', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', + '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\r', 'p', + 'e', 'r', 'T', 'r', 'y', 'T', 'i', 'm', 'e', 'o', 'u', 't', + '\022', 'J', '\n', '\024', 'p', 'e', 'r', '_', 't', 'r', 'y', '_', + 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', + '\030', '\r', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'p', + 'e', 'r', 'T', 'r', 'y', 'I', 'd', 'l', 'e', 'T', 'i', 'm', + 'e', 'o', 'u', 't', '\022', 'W', '\n', '\016', 'r', 'e', 't', 'r', + 'y', '_', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\004', + ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', - 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'B', 'a', - 'c', 'k', 'O', 'f', 'f', 'R', '\014', 'r', 'e', 't', 'r', 'y', - 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'x', '\n', '\033', 'r', - 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', 't', 'e', 'd', '_', + 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'P', 'r', + 'i', 'o', 'r', 'i', 't', 'y', 'R', '\r', 'r', 'e', 't', 'r', + 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', 'g', '\n', + '\024', 'r', 'e', 't', 'r', 'y', '_', 'h', 'o', 's', 't', '_', + 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\005', ' ', + '\003', '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', + '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', + 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', + 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'R', '\022', + 'r', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', + 'd', 'i', 'c', 'a', 't', 'e', '\022', 'd', '\n', '\030', 'r', 'e', + 't', 'r', 'y', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '_', + 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\030', '\014', + ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', + 'R', '\026', 'r', 'e', 't', 'r', 'y', 'O', 'p', 't', 'i', 'o', + 'n', 's', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', + '\022', 'H', '\n', '!', 'h', 'o', 's', 't', '_', 's', 'e', 'l', + 'e', 'c', 't', 'i', 'o', 'n', '_', 'r', 'e', 't', 'r', 'y', + '_', 'm', 'a', 'x', '_', 'a', 't', 't', 'e', 'm', 'p', 't', + 's', '\030', '\006', ' ', '\001', '(', '\003', 'R', '\035', 'h', 'o', 's', + 't', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'R', 'e', + 't', 'r', 'y', 'M', 'a', 'x', 'A', 't', 't', 'e', 'm', 'p', + 't', 's', '\022', '4', '\n', '\026', 'r', 'e', 't', 'r', 'i', 'a', + 'b', 'l', 'e', '_', 's', 't', 'a', 't', 'u', 's', '_', 'c', + 'o', 'd', 'e', 's', '\030', '\007', ' ', '\003', '(', '\r', 'R', '\024', + 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 't', 'a', + 't', 'u', 's', 'C', 'o', 'd', 'e', 's', '\022', 'U', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', 'c', 'k', '_', 'o', - 'f', 'f', '\030', '\013', ' ', '\001', '(', '\013', '2', ':', '.', 'e', + 'f', 'f', '\030', '\010', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', - 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'a', 't', - 'e', 'L', 'i', 'm', 'i', 't', 'e', 'd', 'R', 'e', 't', 'r', - 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', 'R', '\027', 'r', 'a', - 't', 'e', 'L', 'i', 'm', 'i', 't', 'e', 'd', 'R', 'e', 't', - 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'Q', '\n', - '\021', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '\030', '\t', ' ', '\003', '(', '\013', - '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', + 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', 'R', '\014', 'r', + 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', + 'x', '\n', '\033', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', + 't', 'e', 'd', '_', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', + 'c', 'k', '_', 'o', 'f', 'f', '\030', '\013', ' ', '\001', '(', '\013', + '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', - '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'R', '\020', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', - 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '`', '\n', '\031', - 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 'r', 'e', - 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', - 's', '\030', '\n', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', - 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\027', 'r', - 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'R', 'e', 'q', 'u', - 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\032', '\271', - '\001', '\n', '\r', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', - 'r', 'i', 't', 'y', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', - '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', - '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', - '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', - 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', - 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '3', '\232', '\305', - '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', - 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', - 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', - 'y', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', - 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', - 'c', 'o', 'n', 'f', 'i', 'g', '\032', '\303', '\001', '\n', '\022', 'R', - 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', - 'i', 'c', 'a', 't', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', - 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', - 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', - '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', - 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', + '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', + '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'e', 'd', + 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', + 'R', '\027', 'r', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'e', + 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', + 'f', '\022', 'Q', '\n', '\021', 'r', 'e', 't', 'r', 'i', 'a', 'b', + 'l', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\t', + ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'R', '\020', 'r', 'e', 't', 'r', + 'i', 'a', 'b', 'l', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', + '\022', '`', '\n', '\031', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', + 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', + 'a', 'd', 'e', 'r', 's', '\030', '\n', ' ', '\003', '(', '\013', '2', + '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', + 'r', 'R', '\027', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', + 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', + 'r', 's', '\032', '\271', '\001', '\n', '\r', 'R', 'e', 't', 'r', 'y', + 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', '\033', '\n', '\004', + 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', + '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', + 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', + 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', + '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', + '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', + ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', + 'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', + 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', + 'o', 'r', 'i', 't', 'y', 'B', '\r', '\n', '\013', 'c', 'o', 'n', + 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', + '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\032', '\303', + '\001', '\n', '\022', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', + 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', '\033', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', + 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', + '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', + 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', + 'g', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', + 'o', 'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', + 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'H', 'o', + 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', + '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', + 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', + 'n', 'f', 'i', 'g', '\032', '\326', '\001', '\n', '\014', 'R', 'e', 't', + 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'J', '\n', + '\r', 'b', 'a', 's', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', + 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', - 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '8', '\232', - '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', - 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', + 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', + '\n', '\372', 'B', '\007', '\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', + '\014', 'b', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', + 'l', '\022', 'F', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', + 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', + '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', + 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', + 'R', '\013', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'v', 'a', + 'l', ':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', + 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', + 'o', 'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', + 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'B', 'a', + 'c', 'k', 'O', 'f', 'f', '\032', '\210', '\001', '\n', '\013', 'R', 'e', + 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '!', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', + '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'V', '\n', '\006', + 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', '\001', '(', '\016', + '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', - '.', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', - 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\r', '\n', '\013', 'c', - 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', - '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', - '\032', '\326', '\001', '\n', '\014', 'R', 'e', 't', 'r', 'y', 'B', 'a', - 'c', 'k', 'O', 'f', 'f', '\022', 'J', '\n', '\r', 'b', 'a', 's', - 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', - ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', - 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\n', '\372', 'B', '\007', - '\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', '\014', 'b', 'a', 's', - 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'F', '\n', - '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', - 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', - '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\013', 'm', 'a', - 'x', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', ':', '2', '\232', - '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', 'v', 'o', 'y', '.', + '.', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', + 'F', 'o', 'r', 'm', 'a', 't', 'B', '\010', '\372', 'B', '\005', '\202', + '\001', '\002', '\020', '\001', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', + '\032', '\300', '\001', '\n', '\027', 'R', 'a', 't', 'e', 'L', 'i', 'm', + 'i', 't', 'e', 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', + 'k', 'O', 'f', 'f', '\022', ']', '\n', '\r', 'r', 'e', 's', 'e', + 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', + '\003', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', + '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', + 'i', 'c', 'y', '.', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', + 'd', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', + '\001', 'R', '\014', 'r', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', + 'e', 'r', 's', '\022', 'F', '\n', '\014', 'm', 'a', 'x', '_', 'i', + 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', + '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', + 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', + '*', '\000', 'R', '\013', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', + 'v', 'a', 'l', '\"', '4', '\n', '\021', 'R', 'e', 's', 'e', 't', + 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'o', 'r', 'm', 'a', 't', + '\022', '\013', '\n', '\007', 'S', 'E', 'C', 'O', 'N', 'D', 'S', '\020', + '\000', '\022', '\022', '\n', '\016', 'U', 'N', 'I', 'X', '_', 'T', 'I', + 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\001', ':', '%', '\232', + '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', - '.', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', - 'f', '\032', '\210', '\001', '\n', '\013', 'R', 'e', 's', 'e', 't', 'H', - 'e', 'a', 'd', 'e', 'r', '\022', '!', '\n', '\004', 'n', 'a', 'm', - 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', - 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\004', - 'n', 'a', 'm', 'e', '\022', 'V', '\n', '\006', 'f', 'o', 'r', 'm', - 'a', 't', '\030', '\002', ' ', '\001', '(', '\016', '2', '4', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', - 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 's', - 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'o', 'r', 'm', - 'a', 't', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', - 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\032', '\300', '\001', '\n', - '\027', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'e', 'd', - 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', - '\022', ']', '\n', '\r', 'r', 'e', 's', 'e', 't', '_', 'h', 'e', - 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', - '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', - 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'B', - '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\014', 'r', - 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', - 'F', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', - 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', - 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\013', - 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\"', - '4', '\n', '\021', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', - 'e', 'r', 'F', 'o', 'r', 'm', 'a', 't', '\022', '\013', '\n', '\007', - 'S', 'E', 'C', 'O', 'N', 'D', 'S', '\020', '\000', '\022', '\022', '\n', - '\016', 'U', 'N', 'I', 'X', '_', 'T', 'I', 'M', 'E', 'S', 'T', - 'A', 'M', 'P', '\020', '\001', ':', '%', '\232', '\305', '\210', '\036', ' ', - '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', - 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 't', - 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\234', '\002', '\n', - '\013', 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', - '\022', 'P', '\n', '\020', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', - 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '\030', '\001', ' ', '\001', - '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', - 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', - '\004', '*', '\002', '(', '\001', 'R', '\017', 'i', 'n', 'i', 't', 'i', - 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', 't', 's', '\022', '\\', - '\n', '\031', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', - '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'c', 'h', 'a', - 'n', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', - 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', - '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', - 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\027', 'a', 'd', 'd', - 'i', 't', 'i', 'o', 'n', 'a', 'l', 'R', 'e', 'q', 'u', 'e', - 's', 't', 'C', 'h', 'a', 'n', 'c', 'e', '\022', '6', '\n', '\030', - 'h', 'e', 'd', 'g', 'e', '_', 'o', 'n', '_', 'p', 'e', 'r', - '_', 't', 'r', 'y', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', - '\030', '\003', ' ', '\001', '(', '\010', 'R', '\024', 'h', 'e', 'd', 'g', - 'e', 'O', 'n', 'P', 'e', 'r', 'T', 'r', 'y', 'T', 'i', 'm', - 'e', 'o', 'u', 't', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', - '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', - '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'H', 'e', 'd', 'g', - 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\341', '\005', '\n', '\016', - 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', - 'o', 'n', '\022', '\'', '\n', '\016', 'h', 't', 't', 'p', 's', '_', - 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\004', ' ', '\001', - '(', '\010', 'H', '\000', 'R', '\r', 'h', 't', 't', 'p', 's', 'R', - 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', ')', '\n', '\017', 's', - 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'd', 'i', 'r', 'e', - 'c', 't', '\030', '\007', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\016', - 's', 'c', 'h', 'e', 'm', 'e', 'R', 'e', 'd', 'i', 'r', 'e', - 'c', 't', '\022', '0', '\n', '\r', 'h', 'o', 's', 't', '_', 'r', - 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\001', ' ', '\001', '(', + '\"', '\234', '\002', '\n', '\013', 'H', 'e', 'd', 'g', 'e', 'P', 'o', + 'l', 'i', 'c', 'y', '\022', 'P', '\n', '\020', 'i', 'n', 'i', 't', + 'i', 'a', 'l', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', + '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', + 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\017', 'i', + 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', + 't', 's', '\022', '\\', '\n', '\031', 'a', 'd', 'd', 'i', 't', 'i', + 'o', 'n', 'a', 'l', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', + '_', 'c', 'h', 'a', 'n', 'c', 'e', '\030', '\002', ' ', '\001', '(', + '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', + 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', + 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', + '\027', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'R', + 'e', 'q', 'u', 'e', 's', 't', 'C', 'h', 'a', 'n', 'c', 'e', + '\022', '6', '\n', '\030', 'h', 'e', 'd', 'g', 'e', '_', 'o', 'n', + '_', 'p', 'e', 'r', '_', 't', 'r', 'y', '_', 't', 'i', 'm', + 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\024', + 'h', 'e', 'd', 'g', 'e', 'O', 'n', 'P', 'e', 'r', 'T', 'r', + 'y', 'T', 'i', 'm', 'e', 'o', 'u', 't', ':', '%', '\232', '\305', + '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', + 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', + 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\"', + '\341', '\005', '\n', '\016', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', + 'A', 'c', 't', 'i', 'o', 'n', '\022', '\'', '\n', '\016', 'h', 't', + 't', 'p', 's', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', + '\030', '\004', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\r', 'h', 't', + 't', 'p', 's', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', + ')', '\n', '\017', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', + 'd', 'i', 'r', 'e', 'c', 't', '\030', '\007', ' ', '\001', '(', '\t', + 'H', '\000', 'R', '\016', 's', 'c', 'h', 'e', 'm', 'e', 'R', 'e', + 'd', 'i', 'r', 'e', 'c', 't', '\022', '0', '\n', '\r', 'h', 'o', + 's', 't', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', + '\001', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', + '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\014', 'h', 'o', 's', 't', + 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '#', '\n', '\r', + 'p', 'o', 'r', 't', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', + 't', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\014', 'p', 'o', 'r', + 't', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '2', '\n', + '\r', 'p', 'a', 't', 'h', '_', 'r', 'e', 'd', 'i', 'r', 'e', + 'c', 't', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', + '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001', 'R', + '\014', 'p', 'a', 't', 'h', 'R', 'e', 'd', 'i', 'r', 'e', 'c', + 't', '\022', '4', '\n', '\016', 'p', 'r', 'e', 'f', 'i', 'x', '_', + 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', - '\001', '\000', 'R', '\014', 'h', 'o', 's', 't', 'R', 'e', 'd', 'i', - 'r', 'e', 'c', 't', '\022', '#', '\n', '\r', 'p', 'o', 'r', 't', - '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\010', ' ', - '\001', '(', '\r', 'R', '\014', 'p', 'o', 'r', 't', 'R', 'e', 'd', - 'i', 'r', 'e', 'c', 't', '\022', '2', '\n', '\r', 'p', 'a', 't', - 'h', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\002', - ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', - '\001', '\002', '\310', '\001', '\000', 'H', '\001', 'R', '\014', 'p', 'a', 't', - 'h', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '4', '\n', - '\016', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'e', 'w', 'r', - 'i', 't', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'B', '\013', '\372', - 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001', - 'R', '\r', 'p', 'r', 'e', 'f', 'i', 'x', 'R', 'e', 'w', 'r', - 'i', 't', 'e', '\022', 'U', '\n', '\r', 'r', 'e', 'g', 'e', 'x', - '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\t', ' ', '\001', - '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', - 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', - 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', - 't', 'e', 'H', '\001', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', - 'e', 'w', 'r', 'i', 't', 'e', '\022', 'i', '\n', '\r', 'r', 'e', - 's', 'p', 'o', 'n', 's', 'e', '_', 'c', 'o', 'd', 'e', '\030', - '\003', ' ', '\001', '(', '\016', '2', ':', '.', 'e', 'n', 'v', 'o', + '\001', '\000', 'H', '\001', 'R', '\r', 'p', 'r', 'e', 'f', 'i', 'x', + 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'U', '\n', '\r', 'r', + 'e', 'g', 'e', 'x', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', + '\030', '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', + 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', + 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', + 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', + 't', 'i', 't', 'u', 't', 'e', 'H', '\001', 'R', '\014', 'r', 'e', + 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'i', + '\n', '\r', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'c', + 'o', 'd', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', ':', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', + 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', + '.', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', + 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', 'B', '\010', '\372', + 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\014', 'r', 'e', 's', + 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', '\037', '\n', + '\013', 's', 't', 'r', 'i', 'p', '_', 'q', 'u', 'e', 'r', 'y', + '\030', '\006', ' ', '\001', '(', '\010', 'R', '\n', 's', 't', 'r', 'i', + 'p', 'Q', 'u', 'e', 'r', 'y', '\"', 'w', '\n', '\024', 'R', 'e', + 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', + 's', 'e', 'C', 'o', 'd', 'e', '\022', '\025', '\n', '\021', 'M', 'O', + 'V', 'E', 'D', '_', 'P', 'E', 'R', 'M', 'A', 'N', 'E', 'N', + 'T', 'L', 'Y', '\020', '\000', '\022', '\t', '\n', '\005', 'F', 'O', 'U', + 'N', 'D', '\020', '\001', '\022', '\r', '\n', '\t', 'S', 'E', 'E', '_', + 'O', 'T', 'H', 'E', 'R', '\020', '\002', '\022', '\026', '\n', '\022', 'T', + 'E', 'M', 'P', 'O', 'R', 'A', 'R', 'Y', '_', 'R', 'E', 'D', + 'I', 'R', 'E', 'C', 'T', '\020', '\003', '\022', '\026', '\n', '\022', 'P', + 'E', 'R', 'M', 'A', 'N', 'E', 'N', 'T', '_', 'R', 'E', 'D', + 'I', 'R', 'E', 'C', 'T', '\020', '\004', ':', '(', '\232', '\305', '\210', + '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', + 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', + 'n', 'B', '\032', '\n', '\030', 's', 'c', 'h', 'e', 'm', 'e', '_', + 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', + 'i', 'f', 'i', 'e', 'r', 'B', '\030', '\n', '\026', 'p', 'a', 't', + 'h', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', + 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\"', '\362', '\001', '\n', '\024', + 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', + 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\006', + 's', 't', 'a', 't', 'u', 's', '\030', '\001', ' ', '\001', '(', '\r', + 'B', '\013', '\372', 'B', '\010', '*', '\006', '\020', '\330', '\004', '(', '\310', + '\001', 'R', '\006', 's', 't', 'a', 't', 'u', 's', '\022', '4', '\n', + '\004', 'b', 'o', 'd', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', + ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', + 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\004', 'b', + 'o', 'd', 'y', '\022', 'O', '\n', '\013', 'b', 'o', 'd', 'y', '_', + 'f', 'o', 'r', 'm', 'a', 't', '\030', '\003', ' ', '\001', '(', '\013', + '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', + 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', + 'R', '\n', 'b', 'o', 'd', 'y', 'F', 'o', 'r', 'm', 'a', 't', + ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', + 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', + 'u', 't', 'e', '.', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', + 's', 'p', 'o', 'n', 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', + '\"', '\025', '\n', '\023', 'N', 'o', 'n', 'F', 'o', 'r', 'w', 'a', + 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\"', + '\221', '\001', '\n', '\t', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', + 'r', '\022', '%', '\n', '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', + 'o', 'n', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', + '\004', 'r', '\002', '\020', '\001', 'R', '\t', 'o', 'p', 'e', 'r', 'a', + 't', 'i', 'o', 'n', '\022', '8', '\n', '\t', 'p', 'r', 'o', 'p', + 'a', 'g', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', + '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', + 'l', 'u', 'e', 'R', '\t', 'p', 'r', 'o', 'p', 'a', 'g', 'a', + 't', 'e', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', + 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', + 'r', 'o', 'u', 't', 'e', '.', 'D', 'e', 'c', 'o', 'r', 'a', + 't', 'o', 'r', '\"', '\237', '\003', '\n', '\007', 'T', 'r', 'a', 'c', + 'i', 'n', 'g', '\022', 'I', '\n', '\017', 'c', 'l', 'i', 'e', 'n', + 't', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\001', + ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', + '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', + 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', + 'n', 't', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'S', 'a', + 'm', 'p', 'l', 'i', 'n', 'g', '\022', 'I', '\n', '\017', 'r', 'a', + 'n', 'd', 'o', 'm', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', + 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', + 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', + 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', + 'r', 'c', 'e', 'n', 't', 'R', '\016', 'r', 'a', 'n', 'd', 'o', + 'm', 'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022', 'K', '\n', + '\020', 'o', 'v', 'e', 'r', 'a', 'l', 'l', '_', 's', 'a', 'm', + 'p', 'l', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', + ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', + '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', + 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'o', + 'v', 'e', 'r', 'a', 'l', 'l', 'S', 'a', 'm', 'p', 'l', 'i', + 'n', 'g', '\022', 'A', '\n', '\013', 'c', 'u', 's', 't', 'o', 'm', + '_', 't', 'a', 'g', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', + ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', + '.', 't', 'r', 'a', 'c', 'i', 'n', 'g', '.', 'v', '3', '.', + 'C', 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', 'R', '\n', 'c', + 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', 's', '\022', '\034', '\n', + '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\005', + ' ', '\001', '(', '\t', 'R', '\t', 'o', 'p', 'e', 'r', 'a', 't', + 'i', 'o', 'n', '\022', '-', '\n', '\022', 'u', 'p', 's', 't', 'r', + 'e', 'a', 'm', '_', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', + 'n', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\021', 'u', 'p', 's', + 't', 'r', 'e', 'a', 'm', 'O', 'p', 'e', 'r', 'a', 't', 'i', + 'o', 'n', ':', '!', '\232', '\305', '\210', '\036', '\034', '\n', '\032', 'e', + 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', + 'r', 'o', 'u', 't', 'e', '.', 'T', 'r', 'a', 'c', 'i', 'n', + 'g', '\"', '\264', '\001', '\n', '\016', 'V', 'i', 'r', 't', 'u', 'a', + 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', '>', '\n', '\007', + 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', '\003', '(', + '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', + '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', + 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', + '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', + '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', + '\004', 'n', 'a', 'm', 'e', ':', '(', '\232', '\305', '\210', '\036', '#', + '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'V', 'i', 'r', + 't', 'u', 'a', 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', 'J', + '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\003', '\020', '\004', 'R', + '\007', 'p', 'a', 't', 't', 'e', 'r', 'n', 'R', '\006', 'm', 'e', + 't', 'h', 'o', 'd', '\"', '\314', ' ', '\n', '\t', 'R', 'a', 't', + 'e', 'L', 'i', 'm', 'i', 't', '\022', ';', '\n', '\005', 's', 't', + 'a', 'g', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', + 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '\030', '\n', + 'R', '\005', 's', 't', 'a', 'g', 'e', '\022', '\037', '\n', '\013', 'd', + 'i', 's', 'a', 'b', 'l', 'e', '_', 'k', 'e', 'y', '\030', '\002', + ' ', '\001', '(', '\t', 'R', '\n', 'd', 'i', 's', 'a', 'b', 'l', + 'e', 'K', 'e', 'y', '\022', 'K', '\n', '\007', 'a', 'c', 't', 'i', + 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\'', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', + 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', + 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', + 'R', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\022', '?', '\n', + '\005', 'l', 'i', 'm', 'i', 't', '\030', '\004', ' ', '\001', '(', '\013', + '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', + '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'O', + 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'R', '\005', 'l', 'i', 'm', + 'i', 't', '\022', 'L', '\n', '\013', 'h', 'i', 't', 's', '_', 'a', + 'd', 'd', 'e', 'n', 'd', '\030', '\005', ' ', '\001', '(', '\013', '2', + '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'H', 'i', + 't', 's', 'A', 'd', 'd', 'e', 'n', 'd', 'R', '\n', 'h', 'i', + 't', 's', 'A', 'd', 'd', 'e', 'n', 'd', '\022', '/', '\n', '\024', + 'a', 'p', 'p', 'l', 'y', '_', 'o', 'n', '_', 's', 't', 'r', + 'e', 'a', 'm', '_', 'd', 'o', 'n', 'e', '\030', '\006', ' ', '\001', + '(', '\010', 'R', '\021', 'a', 'p', 'p', 'l', 'y', 'O', 'n', 'S', + 't', 'r', 'e', 'a', 'm', 'D', 'o', 'n', 'e', '\032', '\300', '\032', + '\n', '\006', 'A', 'c', 't', 'i', 'o', 'n', '\022', '^', '\n', '\016', + 's', 'o', 'u', 'r', 'c', 'e', '_', 'c', 'l', 'u', 's', 't', + 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '5', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', + 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', + 'n', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', + 't', 'e', 'r', 'H', '\000', 'R', '\r', 's', 'o', 'u', 'r', 'c', + 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', 'm', '\n', '\023', + 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', + 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', '(', + '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', + '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', + 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'e', 's', 't', 'i', + 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', + 'r', 'H', '\000', 'R', '\022', 'd', 'e', 's', 't', 'i', 'n', 'a', + 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', + 'a', '\n', '\017', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', + 'e', 'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\001', '(', '\013', + '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', + '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', + 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', + 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'H', '\000', 'R', '\016', + 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', + 'r', 's', '\022', 'd', '\n', '\020', 'q', 'u', 'e', 'r', 'y', '_', + 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\014', + ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', + 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'Q', 'u', + 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', + 's', 'H', '\000', 'R', '\017', 'q', 'u', 'e', 'r', 'y', 'P', 'a', + 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', '^', '\n', '\016', + 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', + 's', 's', '\030', '\004', ' ', '\001', '(', '\013', '2', '5', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', + 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', + 'n', '.', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', + 'e', 's', 's', 'H', '\000', 'R', '\r', 'r', 'e', 'm', 'o', 't', + 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', 'U', '\n', '\013', + 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'k', 'e', 'y', '\030', + '\005', ' ', '\001', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'R', 'e', 'd', 'i', 'r', 'e', - 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'd', - 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', - 'e', 'C', 'o', 'd', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', - '\002', '\020', '\001', 'R', '\014', 'r', 'e', 's', 'p', 'o', 'n', 's', - 'e', 'C', 'o', 'd', 'e', '\022', '\037', '\n', '\013', 's', 't', 'r', - 'i', 'p', '_', 'q', 'u', 'e', 'r', 'y', '\030', '\006', ' ', '\001', - '(', '\010', 'R', '\n', 's', 't', 'r', 'i', 'p', 'Q', 'u', 'e', - 'r', 'y', '\"', 'w', '\n', '\024', 'R', 'e', 'd', 'i', 'r', 'e', - 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', - 'd', 'e', '\022', '\025', '\n', '\021', 'M', 'O', 'V', 'E', 'D', '_', - 'P', 'E', 'R', 'M', 'A', 'N', 'E', 'N', 'T', 'L', 'Y', '\020', - '\000', '\022', '\t', '\n', '\005', 'F', 'O', 'U', 'N', 'D', '\020', '\001', - '\022', '\r', '\n', '\t', 'S', 'E', 'E', '_', 'O', 'T', 'H', 'E', - 'R', '\020', '\002', '\022', '\026', '\n', '\022', 'T', 'E', 'M', 'P', 'O', - 'R', 'A', 'R', 'Y', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', - 'T', '\020', '\003', '\022', '\026', '\n', '\022', 'P', 'E', 'R', 'M', 'A', - 'N', 'E', 'N', 'T', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', - 'T', '\020', '\004', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 'd', 'i', 'r', - 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\032', '\n', - '\030', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'w', 'r', - 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', - 'r', 'B', '\030', '\n', '\026', 'p', 'a', 't', 'h', '_', 'r', 'e', - 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', - 'i', 'e', 'r', '\"', '\241', '\001', '\n', '\024', 'D', 'i', 'r', 'e', - 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'A', 'c', - 't', 'i', 'o', 'n', '\022', '#', '\n', '\006', 's', 't', 'a', 't', - 'u', 's', '\030', '\001', ' ', '\001', '(', '\r', 'B', '\013', '\372', 'B', - '\010', '*', '\006', '\020', '\330', '\004', '(', '\310', '\001', 'R', '\006', 's', - 't', 'a', 't', 'u', 's', '\022', '4', '\n', '\004', 'b', 'o', 'd', - 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', - 'o', 'u', 'r', 'c', 'e', 'R', '\004', 'b', 'o', 'd', 'y', ':', - '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', - 't', 'e', '.', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', - 'p', 'o', 'n', 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\"', - '\025', '\n', '\023', 'N', 'o', 'n', 'F', 'o', 'r', 'w', 'a', 'r', - 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\"', '\221', - '\001', '\n', '\t', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', - '\022', '%', '\n', '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', - 'n', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', - 'r', '\002', '\020', '\001', 'R', '\t', 'o', 'p', 'e', 'r', 'a', 't', - 'i', 'o', 'n', '\022', '8', '\n', '\t', 'p', 'r', 'o', 'p', 'a', - 'g', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', - 'u', 'e', 'R', '\t', 'p', 'r', 'o', 'p', 'a', 'g', 'a', 't', - 'e', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', - 'o', 'u', 't', 'e', '.', 'D', 'e', 'c', 'o', 'r', 'a', 't', - 'o', 'r', '\"', '\322', '\002', '\n', '\007', 'T', 'r', 'a', 'c', 'i', - 'n', 'g', '\022', 'I', '\n', '\017', 'c', 'l', 'i', 'e', 'n', 't', - '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\001', ' ', - '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', - 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', - 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', - 't', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'S', 'a', 'm', - 'p', 'l', 'i', 'n', 'g', '\022', 'I', '\n', '\017', 'r', 'a', 'n', - 'd', 'o', 'm', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', - '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', - 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', - 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', - 'c', 'e', 'n', 't', 'R', '\016', 'r', 'a', 'n', 'd', 'o', 'm', - 'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022', 'K', '\n', '\020', - 'o', 'v', 'e', 'r', 'a', 'l', 'l', '_', 's', 'a', 'm', 'p', - 'l', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', ' ', - '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', - 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', - 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'o', 'v', - 'e', 'r', 'a', 'l', 'l', 'S', 'a', 'm', 'p', 'l', 'i', 'n', - 'g', '\022', 'A', '\n', '\013', 'c', 'u', 's', 't', 'o', 'm', '_', - 't', 'a', 'g', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', ' ', - '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', - 't', 'r', 'a', 'c', 'i', 'n', 'g', '.', 'v', '3', '.', 'C', - 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', 'R', '\n', 'c', 'u', - 's', 't', 'o', 'm', 'T', 'a', 'g', 's', ':', '!', '\232', '\305', - '\210', '\036', '\034', '\n', '\032', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', - 'T', 'r', 'a', 'c', 'i', 'n', 'g', '\"', '\264', '\001', '\n', '\016', - 'V', 'i', 'r', 't', 'u', 'a', 'l', 'C', 'l', 'u', 's', 't', - 'e', 'r', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', - 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', - 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', - 'e', 'a', 'd', 'e', 'r', 's', '\022', '\033', '\n', '\004', 'n', 'a', - 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', - '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', ':', - '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', - 't', 'e', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'C', 'l', - 'u', 's', 't', 'e', 'r', 'J', '\004', '\010', '\001', '\020', '\002', 'J', - '\004', '\010', '\003', '\020', '\004', 'R', '\007', 'p', 'a', 't', 't', 'e', - 'r', 'n', 'R', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\"', '\314', - ' ', '\n', '\t', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', - '\022', ';', '\n', '\005', 's', 't', 'a', 'g', 'e', '\030', '\001', ' ', - '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', - 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', - 'B', '\004', '*', '\002', '\030', '\n', 'R', '\005', 's', 't', 'a', 'g', - 'e', '\022', '\037', '\n', '\013', 'd', 'i', 's', 'a', 'b', 'l', 'e', - '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', - 'd', 'i', 's', 'a', 'b', 'l', 'e', 'K', 'e', 'y', '\022', 'K', - '\n', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', - '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', + 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'G', + 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', 'H', '\000', 'R', + '\n', 'g', 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', '\022', + 'h', '\n', '\022', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'v', 'a', + 'l', 'u', 'e', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', + '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', - 't', '.', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', - '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\007', 'a', 'c', 't', 'i', - 'o', 'n', 's', '\022', '?', '\n', '\005', 'l', 'i', 'm', 'i', 't', - '\030', '\004', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', - 'i', 'm', 'i', 't', '.', 'O', 'v', 'e', 'r', 'r', 'i', 'd', - 'e', 'R', '\005', 'l', 'i', 'm', 'i', 't', '\022', 'L', '\n', '\013', - 'h', 'i', 't', 's', '_', 'a', 'd', 'd', 'e', 'n', 'd', '\030', - '\005', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', + 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', + 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', + 'h', 'H', '\000', 'R', '\020', 'h', 'e', 'a', 'd', 'e', 'r', 'V', + 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022', 'w', '\n', + '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'm', 'e', 't', + 'a', 'd', 'a', 't', 'a', '\030', '\007', ' ', '\001', '(', '\013', '2', + '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', + 't', 'i', 'o', 'n', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', + 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', 'B', '\021', '\030', '\001', + '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', '\270', '\356', '\362', + '\322', '\005', '\001', 'H', '\000', 'R', '\017', 'd', 'y', 'n', 'a', 'm', + 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'N', + '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\010', + ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', + 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M', 'e', + 't', 'a', 'D', 'a', 't', 'a', 'H', '\000', 'R', '\010', 'm', 'e', + 't', 'a', 'd', 'a', 't', 'a', '\022', 'J', '\n', '\t', 'e', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', + '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', 'q', + '\n', '\025', 'm', 'a', 's', 'k', 'e', 'd', '_', 'r', 'e', 'm', + 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', + '\n', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', - 'm', 'i', 't', '.', 'H', 'i', 't', 's', 'A', 'd', 'd', 'e', - 'n', 'd', 'R', '\n', 'h', 'i', 't', 's', 'A', 'd', 'd', 'e', - 'n', 'd', '\022', '/', '\n', '\024', 'a', 'p', 'p', 'l', 'y', '_', - 'o', 'n', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'd', 'o', - 'n', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\021', 'a', 'p', - 'p', 'l', 'y', 'O', 'n', 'S', 't', 'r', 'e', 'a', 'm', 'D', - 'o', 'n', 'e', '\032', '\300', '\032', '\n', '\006', 'A', 'c', 't', 'i', - 'o', 'n', '\022', '^', '\n', '\016', 's', 'o', 'u', 'r', 'c', 'e', - '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', - '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', - 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', - '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'S', 'o', 'u', 'r', - 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R', - '\r', 's', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', - 'e', 'r', '\022', 'm', '\n', '\023', 'd', 'e', 's', 't', 'i', 'n', - 'a', 't', 'i', 'o', 'n', '_', 'c', 'l', 'u', 's', 't', 'e', - 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', + 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M', + 'a', 's', 'k', 'e', 'd', 'R', 'e', 'm', 'o', 't', 'e', 'A', + 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\023', 'm', 'a', + 's', 'k', 'e', 'd', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', + 'd', 'r', 'e', 's', 's', '\022', '\201', '\001', '\n', '\033', 'q', 'u', + 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', + 'r', '_', 'v', 'a', 'l', 'u', 'e', '_', 'm', 'a', 't', 'c', + 'h', '\030', '\013', ' ', '\001', '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', - '.', 'D', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R', '\022', 'd', - 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', - 'u', 's', 't', 'e', 'r', '\022', 'a', '\n', '\017', 'r', 'e', 'q', - 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', - '\030', '\003', ' ', '\001', '(', '\013', '2', '6', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', - 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', - 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', - 'r', 's', 'H', '\000', 'R', '\016', 'r', 'e', 'q', 'u', 'e', 's', - 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', 'd', '\n', '\020', - 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', - 't', 'e', 'r', 's', '\030', '\014', ' ', '\001', '(', '\013', '2', '7', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', - 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', - 'i', 'o', 'n', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', - 'a', 'm', 'e', 't', 'e', 'r', 's', 'H', '\000', 'R', '\017', 'q', - 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', - 'r', 's', '\022', '^', '\n', '\016', 'r', 'e', 'm', 'o', 't', 'e', - '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\004', ' ', '\001', - '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', - 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', - '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'm', 'o', - 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', - '\r', 'r', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', - 's', 's', '\022', 'U', '\n', '\013', 'g', 'e', 'n', 'e', 'r', 'i', - 'c', '_', 'k', 'e', 'y', '\030', '\005', ' ', '\001', '(', '\013', '2', - '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', - 't', 'i', 'o', 'n', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', - 'K', 'e', 'y', 'H', '\000', 'R', '\n', 'g', 'e', 'n', 'e', 'r', - 'i', 'c', 'K', 'e', 'y', '\022', 'h', '\n', '\022', 'h', 'e', 'a', - 'd', 'e', 'r', '_', 'v', 'a', 'l', 'u', 'e', '_', 'm', 'a', - 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '8', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', + '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', + 't', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', + 'h', 'H', '\000', 'R', '\030', 'q', 'u', 'e', 'r', 'y', 'P', 'a', + 'r', 'a', 'm', 'e', 't', 'e', 'r', 'V', 'a', 'l', 'u', 'e', + 'M', 'a', 't', 'c', 'h', '\032', 'I', '\n', '\r', 'S', 'o', 'u', + 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '8', + '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', + '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', + 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', + 'A', 'c', 't', 'i', 'o', 'n', '.', 'S', 'o', 'u', 'r', 'c', + 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', '\032', 'S', '\n', '\022', + 'D', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', + 'l', 'u', 's', 't', 'e', 'r', ':', '=', '\232', '\305', '\210', '\036', + '8', '\n', '6', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', - 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', - 'u', 'e', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\020', 'h', - 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', - 't', 'c', 'h', '\022', 'w', '\n', '\020', 'd', 'y', 'n', 'a', 'm', - 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', - '\007', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', - 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', - 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'D', 'a', - 't', 'a', 'B', '\021', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', '\270', '\356', '\362', '\322', '\005', '\001', 'H', '\000', 'R', - '\017', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', - 'd', 'a', 't', 'a', '\022', 'N', '\n', '\010', 'm', 'e', 't', 'a', - 'd', 'a', 't', 'a', '\030', '\010', ' ', '\001', '(', '\013', '2', '0', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', + 'o', 'n', '.', 'D', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', + 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', '\032', '\321', '\001', + '\n', '\016', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', + 'd', 'e', 'r', 's', '\022', '.', '\n', '\013', 'h', 'e', 'a', 'd', + 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', + '\001', '\310', '\001', '\000', 'R', '\n', 'h', 'e', 'a', 'd', 'e', 'r', + 'N', 'a', 'm', 'e', '\022', '.', '\n', '\016', 'd', 'e', 's', 'c', + 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\002', + ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', + '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', + 'r', 'K', 'e', 'y', '\022', '$', '\n', '\016', 's', 'k', 'i', 'p', + '_', 'i', 'f', '_', 'a', 'b', 's', 'e', 'n', 't', '\030', '\003', + ' ', '\001', '(', '\010', 'R', '\014', 's', 'k', 'i', 'p', 'I', 'f', + 'A', 'b', 's', 'e', 'n', 't', ':', '9', '\232', '\305', '\210', '\036', + '4', '\n', '2', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', + 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', + 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', + 'a', 'd', 'e', 'r', 's', '\032', '\242', '\001', '\n', '\017', 'Q', 'u', + 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', + 's', '\022', '9', '\n', '\024', 'q', 'u', 'e', 'r', 'y', '_', 'p', + 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '_', 'n', 'a', 'm', + 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', + 'r', '\002', '\020', '\001', 'R', '\022', 'q', 'u', 'e', 'r', 'y', 'P', + 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'N', 'a', 'm', 'e', + '\022', '.', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', + 'o', 'r', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', + 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'd', + 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', + '\022', '$', '\n', '\016', 's', 'k', 'i', 'p', '_', 'i', 'f', '_', + 'a', 'b', 's', 'e', 'n', 't', '\030', '\003', ' ', '\001', '(', '\010', + 'R', '\014', 's', 'k', 'i', 'p', 'I', 'f', 'A', 'b', 's', 'e', + 'n', 't', '\032', 'I', '\n', '\r', 'R', 'e', 'm', 'o', 't', 'e', + 'A', 'd', 'd', 'r', 'e', 's', 's', ':', '8', '\232', '\305', '\210', + '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', - 'i', 'o', 'n', '.', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', - 'H', '\000', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', - '\022', 'J', '\n', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', '\030', '\t', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', - 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', - 'f', 'i', 'g', 'H', '\000', 'R', '\t', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', '\022', 'q', '\n', '\025', 'm', 'a', 's', 'k', - 'e', 'd', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', - 'd', 'r', 'e', 's', 's', '\030', '\n', ' ', '\001', '(', '\013', '2', - ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', - 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', - 't', 'i', 'o', 'n', '.', 'M', 'a', 's', 'k', 'e', 'd', 'R', - 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', - 'H', '\000', 'R', '\023', 'm', 'a', 's', 'k', 'e', 'd', 'R', 'e', - 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', - '\201', '\001', '\n', '\033', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', - 'r', 'a', 'm', 'e', 't', 'e', 'r', '_', 'v', 'a', 'l', 'u', - 'e', '_', 'm', 'a', 't', 'c', 'h', '\030', '\013', ' ', '\001', '(', - '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', - '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', - 'A', 'c', 't', 'i', 'o', 'n', '.', 'Q', 'u', 'e', 'r', 'y', - 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'V', 'a', 'l', - 'u', 'e', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\030', 'q', - 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', - 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\032', - 'I', '\n', '\r', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', - 's', 't', 'e', 'r', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', - '1', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', + 'i', 'o', 'n', '.', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', + 'd', 'r', 'e', 's', 's', '\032', '\276', '\001', '\n', '\023', 'M', 'a', + 's', 'k', 'e', 'd', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', + 'd', 'r', 'e', 's', 's', '\022', 'R', '\n', '\022', 'v', '4', '_', + 'p', 'r', 'e', 'f', 'i', 'x', '_', 'm', 'a', 's', 'k', '_', + 'l', 'e', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', + 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '\030', ' ', + 'R', '\017', 'v', '4', 'P', 'r', 'e', 'f', 'i', 'x', 'M', 'a', + 's', 'k', 'L', 'e', 'n', '\022', 'S', '\n', '\022', 'v', '6', '_', + 'p', 'r', 'e', 'f', 'i', 'x', '_', 'm', 'a', 's', 'k', '_', + 'l', 'e', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', + 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '*', '\003', '\030', '\200', + '\001', 'R', '\017', 'v', '6', 'P', 'r', 'e', 'f', 'i', 'x', 'M', + 'a', 's', 'k', 'L', 'e', 'n', '\032', '\236', '\001', '\n', '\n', 'G', + 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', '\022', '2', '\n', + '\020', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', + 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\017', 'd', 'e', + 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'V', 'a', 'l', 'u', + 'e', '\022', '%', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', + 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', + '\t', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', + 'r', 'K', 'e', 'y', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', - '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', - 'e', 'r', '\032', 'S', '\n', '\022', 'D', 'e', 's', 't', 'i', 'n', - 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', - ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', - 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', - 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'e', 's', - 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', - 't', 'e', 'r', '\032', '\321', '\001', '\n', '\016', 'R', 'e', 'q', 'u', - 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '.', - '\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', - 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', - 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\n', - 'h', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', '\022', '.', - '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', - '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', - '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'd', 'e', 's', - 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', '$', - '\n', '\016', 's', 'k', 'i', 'p', '_', 'i', 'f', '_', 'a', 'b', - 's', 'e', 'n', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', - 's', 'k', 'i', 'p', 'I', 'f', 'A', 'b', 's', 'e', 'n', 't', - ':', '9', '\232', '\305', '\210', '\036', '4', '\n', '2', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', - 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', - 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', - 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\032', - '\242', '\001', '\n', '\017', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', - 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', '9', '\n', '\024', 'q', - 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', - 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', - '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\022', - 'q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', - 'e', 'r', 'N', 'a', 'm', 'e', '\022', '.', '\n', '\016', 'd', 'e', - 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', - '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', - '\002', '\020', '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', - 't', 'o', 'r', 'K', 'e', 'y', '\022', '$', '\n', '\016', 's', 'k', - 'i', 'p', '_', 'i', 'f', '_', 'a', 'b', 's', 'e', 'n', 't', - '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', 's', 'k', 'i', 'p', - 'I', 'f', 'A', 'b', 's', 'e', 'n', 't', '\032', 'I', '\n', '\r', - 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', - 's', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', - 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', - 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', - 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\032', - '\276', '\001', '\n', '\023', 'M', 'a', 's', 'k', 'e', 'd', 'R', 'e', - 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', - 'R', '\n', '\022', 'v', '4', '_', 'p', 'r', 'e', 'f', 'i', 'x', - '_', 'm', 'a', 's', 'k', '_', 'l', 'e', 'n', '\030', '\001', ' ', - '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', - 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', - 'B', '\004', '*', '\002', '\030', ' ', 'R', '\017', 'v', '4', 'P', 'r', - 'e', 'f', 'i', 'x', 'M', 'a', 's', 'k', 'L', 'e', 'n', '\022', - 'S', '\n', '\022', 'v', '6', '_', 'p', 'r', 'e', 'f', 'i', 'x', - '_', 'm', 'a', 's', 'k', '_', 'l', 'e', 'n', '\030', '\002', ' ', - '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', - 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', - 'B', '\005', '*', '\003', '\030', '\200', '\001', 'R', '\017', 'v', '6', 'P', - 'r', 'e', 'f', 'i', 'x', 'M', 'a', 's', 'k', 'L', 'e', 'n', - '\032', '\236', '\001', '\n', '\n', 'G', 'e', 'n', 'e', 'r', 'i', 'c', - 'K', 'e', 'y', '\022', '2', '\n', '\020', 'd', 'e', 's', 'c', 'r', - 'i', 'p', 't', 'o', 'r', '_', 'v', 'a', 'l', 'u', 'e', '\030', + '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', '\032', + '\263', '\002', '\n', '\020', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', + 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022', '%', '\n', '\016', + 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', + 'e', 'y', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\r', 'd', 'e', + 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', + '2', '\n', '\020', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', + 'r', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', + '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\017', + 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'V', 'a', + 'l', 'u', 'e', '\022', '=', '\n', '\014', 'e', 'x', 'p', 'e', 'c', + 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', + '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', + 'V', 'a', 'l', 'u', 'e', 'R', '\013', 'e', 'x', 'p', 'e', 'c', + 't', 'M', 'a', 't', 'c', 'h', '\022', 'H', '\n', '\007', 'h', 'e', + 'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', + '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', + 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', + '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', ':', ';', '\232', '\305', + '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'a', + 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', + 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', + 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', + 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\032', '\270', '\001', + '\n', '\017', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', + 'a', 'D', 'a', 't', 'a', '\022', '.', '\n', '\016', 'd', 'e', 's', + 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', - '\020', '\001', 'R', '\017', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', - 'o', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '%', '\n', '\016', 'd', - 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', - 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\r', 'd', 'e', 's', - 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', ':', '5', - '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', - 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', - 'A', 'c', 't', 'i', 'o', 'n', '.', 'G', 'e', 'n', 'e', 'r', - 'i', 'c', 'K', 'e', 'y', '\032', '\263', '\002', '\n', '\020', 'H', 'e', - 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', - 'c', 'h', '\022', '%', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', - 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\004', ' ', '\001', - '(', '\t', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', - 'o', 'r', 'K', 'e', 'y', '\022', '2', '\n', '\020', 'd', 'e', 's', - 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'v', 'a', 'l', 'u', - 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', - 'r', '\002', '\020', '\001', 'R', '\017', 'd', 'e', 's', 'c', 'r', 'i', - 'p', 't', 'o', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '=', '\n', - '\014', 'e', 'x', 'p', 'e', 'c', 't', '_', 'm', 'a', 't', 'c', - 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', + '\020', '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', + 'o', 'r', 'K', 'e', 'y', '\022', 'P', '\n', '\014', 'm', 'e', 't', + 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\002', ' ', + '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', + 'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', + '\020', '\001', 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', + 'K', 'e', 'y', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', + 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', + '(', '\t', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', + 'a', 'l', 'u', 'e', '\032', '\332', '\002', '\n', '\010', 'M', 'e', 't', + 'a', 'D', 'a', 't', 'a', '\022', '.', '\n', '\016', 'd', 'e', 's', + 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', + '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', + '\020', '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', + 'o', 'r', 'K', 'e', 'y', '\022', 'P', '\n', '\014', 'm', 'e', 't', + 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\002', ' ', + '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', + 'a', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', + 'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', + '\020', '\001', 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', + 'K', 'e', 'y', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', + 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', + '(', '\t', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', + 'a', 'l', 'u', 'e', '\022', 'Y', '\n', '\006', 's', 'o', 'u', 'r', + 'c', 'e', '\030', '\004', ' ', '\001', '(', '\016', '2', '7', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', + 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', + 'n', '.', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', '.', 'S', + 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', + '\002', '\020', '\001', 'R', '\006', 's', 'o', 'u', 'r', 'c', 'e', '\022', + '$', '\n', '\016', 's', 'k', 'i', 'p', '_', 'i', 'f', '_', 'a', + 'b', 's', 'e', 'n', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', + '\014', 's', 'k', 'i', 'p', 'I', 'f', 'A', 'b', 's', 'e', 'n', + 't', '\"', '&', '\n', '\006', 'S', 'o', 'u', 'r', 'c', 'e', '\022', + '\013', '\n', '\007', 'D', 'Y', 'N', 'A', 'M', 'I', 'C', '\020', '\000', + '\022', '\017', '\n', '\013', 'R', 'O', 'U', 'T', 'E', '_', 'E', 'N', + 'T', 'R', 'Y', '\020', '\001', '\032', '\227', '\002', '\n', '\030', 'Q', 'u', + 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', + 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022', '%', + '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', + '_', 'k', 'e', 'y', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\r', + 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', + 'y', '\022', '2', '\n', '\020', 'd', 'e', 's', 'c', 'r', 'i', 'p', + 't', 'o', 'r', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', + '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', + 'R', '\017', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', + 'V', 'a', 'l', 'u', 'e', '\022', '=', '\n', '\014', 'e', 'x', 'p', + 'e', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', + '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', + 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\013', 'e', 'x', 'p', + 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', '\022', 'a', '\n', '\020', + 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', + 't', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', ',', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'Q', + 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', + 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', + '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\017', 'q', 'u', 'e', 'r', + 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', ':', + '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', + 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', + '.', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\027', '\n', '\020', 'a', + 'c', 't', 'i', 'o', 'n', '_', 's', 'p', 'e', 'c', 'i', 'f', + 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', '\362', '\001', '\n', + '\010', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\022', 'f', '\n', + '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'm', 'e', 't', + 'a', 'd', 'a', 't', 'a', '\030', '\001', ' ', '\001', '(', '\013', '2', + '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', + 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'O', 'v', + 'e', 'r', 'r', 'i', 'd', 'e', '.', 'D', 'y', 'n', 'a', 'm', + 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'H', '\000', + 'R', '\017', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', + 'a', 'd', 'a', 't', 'a', '\032', 'c', '\n', '\017', 'D', 'y', 'n', + 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', + '\022', 'P', '\n', '\014', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', + '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\013', '2', '#', + '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', + 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', + 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', + 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\031', + '\n', '\022', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_', 's', + 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', + '\001', '\032', 'w', '\n', '\n', 'H', 'i', 't', 's', 'A', 'd', 'd', + 'e', 'n', 'd', '\022', 'A', '\n', '\006', 'n', 'u', 'm', 'b', 'e', + 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', - '\013', 'e', 'x', 'p', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', - '\022', 'H', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', - '\003', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', - 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', - '\222', '\001', '\002', '\010', '\001', 'R', '\007', 'h', 'e', 'a', 'd', 'e', - 'r', 's', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', + 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', + 'e', 'B', '\013', '\372', 'B', '\010', '2', '\006', '\030', '\200', '\224', '\353', + '\334', '\003', 'R', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\022', '&', + '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', '\001', + '(', '\t', 'B', '\016', '\372', 'B', '\013', 'r', '\t', ':', '\001', '%', + 'B', '\001', '%', '\320', '\001', '\001', 'R', '\006', 'f', 'o', 'r', 'm', + 'a', 't', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', - 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', - 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', - 't', 'c', 'h', '\032', '\270', '\001', '\n', '\017', 'D', 'y', 'n', 'a', - 'm', 'i', 'c', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', '\022', - '.', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', - 'r', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', - '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'd', 'e', - 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', - 'P', '\n', '\014', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', - 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', - 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', - 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', 'M', - 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\010', - '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', 'e', - 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', '\022', '#', '\n', - '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', - 'u', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'd', 'e', - 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\032', '\332', - '\002', '\n', '\010', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', '\022', - '.', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', - 'r', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', - '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'd', 'e', - 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', - 'P', '\n', '\014', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', - 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', - 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', - 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', 'M', - 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\010', - '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', 'e', - 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', '\022', '#', '\n', - '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', - 'u', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'd', 'e', - 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', 'Y', - '\n', '\006', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\004', ' ', '\001', - '(', '\016', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', - 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', - '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M', 'e', 't', 'a', - 'D', 'a', 't', 'a', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'B', - '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 's', - 'o', 'u', 'r', 'c', 'e', '\022', '$', '\n', '\016', 's', 'k', 'i', - 'p', '_', 'i', 'f', '_', 'a', 'b', 's', 'e', 'n', 't', '\030', - '\005', ' ', '\001', '(', '\010', 'R', '\014', 's', 'k', 'i', 'p', 'I', - 'f', 'A', 'b', 's', 'e', 'n', 't', '\"', '&', '\n', '\006', 'S', - 'o', 'u', 'r', 'c', 'e', '\022', '\013', '\n', '\007', 'D', 'Y', 'N', - 'A', 'M', 'I', 'C', '\020', '\000', '\022', '\017', '\n', '\013', 'R', 'O', - 'U', 'T', 'E', '_', 'E', 'N', 'T', 'R', 'Y', '\020', '\001', '\032', - '\227', '\002', '\n', '\030', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', - 'a', 'm', 'e', 't', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', - 'a', 't', 'c', 'h', '\022', '%', '\n', '\016', 'd', 'e', 's', 'c', - 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\004', - ' ', '\001', '(', '\t', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', - 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', '2', '\n', '\020', 'd', - 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'v', 'a', - 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', - 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\017', 'd', 'e', 's', 'c', - 'r', 'i', 'p', 't', 'o', 'r', 'V', 'a', 'l', 'u', 'e', '\022', - '=', '\n', '\014', 'e', 'x', 'p', 'e', 'c', 't', '_', 'm', 'a', - 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', - 'e', 'R', '\013', 'e', 'x', 'p', 'e', 'c', 't', 'M', 'a', 't', - 'c', 'h', '\022', 'a', '\n', '\020', 'q', 'u', 'e', 'r', 'y', '_', - 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\003', - ' ', '\003', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', - 'e', '.', 'v', '3', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', - 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', - 'R', '\017', 'q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', - 'e', 't', 'e', 'r', 's', ':', '*', '\232', '\305', '\210', '\036', '%', - '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', - 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', - 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', - 'n', 'B', '\027', '\n', '\020', 'a', 'c', 't', 'i', 'o', 'n', '_', - 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', - 'B', '\001', '\032', '\362', '\001', '\n', '\010', 'O', 'v', 'e', 'r', 'r', - 'i', 'd', 'e', '\022', 'f', '\n', '\020', 'd', 'y', 'n', 'a', 'm', - 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', - '\001', ' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', - 'm', 'i', 't', '.', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', - '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', - 'd', 'a', 't', 'a', 'H', '\000', 'R', '\017', 'd', 'y', 'n', 'a', - 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\032', - 'c', '\n', '\017', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', - 't', 'a', 'd', 'a', 't', 'a', '\022', 'P', '\n', '\014', 'm', 'e', - 't', 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\001', - ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', - '.', 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', - 't', 'a', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', - 't', 'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', - '\002', '\020', '\001', 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', 'K', 'e', 'y', 'B', '\031', '\n', '\022', 'o', 'v', 'e', 'r', - 'r', 'i', 'd', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', - 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', 'w', '\n', '\n', 'H', - 'i', 't', 's', 'A', 'd', 'd', 'e', 'n', 'd', '\022', 'A', '\n', - '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\001', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\372', 'B', '\010', - '2', '\006', '\030', '\200', '\224', '\353', '\334', '\003', 'R', '\006', 'n', 'u', - 'm', 'b', 'e', 'r', '\022', '&', '\n', '\006', 'f', 'o', 'r', 'm', - 'a', 't', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\016', '\372', 'B', - '\013', 'r', '\t', ':', '\001', '%', 'B', '\001', '%', '\320', '\001', '\001', - 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', ':', '#', '\232', '\305', - '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', - 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '\"', '\346', '\005', - '\n', '\r', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', - 'h', 'e', 'r', '\022', '!', '\n', '\004', 'n', 'a', 'm', 'e', '\030', - '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', - '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\004', 'n', 'a', - 'm', 'e', '\022', '.', '\n', '\013', 'e', 'x', 'a', 'c', 't', '_', - 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\t', 'B', + 'm', 'i', 't', '\"', '\346', '\005', '\n', '\r', 'H', 'e', 'a', 'd', + 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', '!', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', + '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\013', + 'e', 'x', 'a', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', + '\004', ' ', '\001', '(', '\t', 'B', '\013', '\030', '\001', '\222', '\307', '\206', + '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\n', 'e', 'x', + 'a', 'c', 't', 'M', 'a', 't', 'c', 'h', '\022', '\\', '\n', '\020', + 's', 'a', 'f', 'e', '_', 'r', 'e', 'g', 'e', 'x', '_', 'm', + 'a', 't', 'c', 'h', '\030', '\013', ' ', '\001', '(', '\013', '2', '#', + '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', + 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'H', '\000', 'R', '\n', 'e', 'x', 'a', 'c', 't', 'M', 'a', 't', - 'c', 'h', '\022', '\\', '\n', '\020', 's', 'a', 'f', 'e', '_', 'r', - 'e', 'g', 'e', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\013', - ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', + 'H', '\000', 'R', '\016', 's', 'a', 'f', 'e', 'R', 'e', 'g', 'e', + 'x', 'M', 'a', 't', 'c', 'h', '\022', '<', '\n', '\013', 'r', 'a', + 'n', 'g', 'e', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', + '\001', '(', '\013', '2', '\031', '.', 'e', 'n', 'v', 'o', 'y', '.', + 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't', '6', + '4', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', '\n', 'r', 'a', + 'n', 'g', 'e', 'M', 'a', 't', 'c', 'h', '\022', '%', '\n', '\r', + 'p', 'r', 'e', 's', 'e', 'n', 't', '_', 'm', 'a', 't', 'c', + 'h', '\030', '\007', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\014', 'p', + 'r', 'e', 's', 'e', 'n', 't', 'M', 'a', 't', 'c', 'h', '\022', + '7', '\n', '\014', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'm', 'a', + 't', 'c', 'h', '\030', '\t', ' ', '\001', '(', '\t', 'B', '\022', '\030', + '\001', '\372', 'B', '\004', 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330', + '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\013', 'p', 'r', 'e', + 'f', 'i', 'x', 'M', 'a', 't', 'c', 'h', '\022', '7', '\n', '\014', + 's', 'u', 'f', 'f', 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', + '\030', '\n', ' ', '\001', '(', '\t', 'B', '\022', '\030', '\001', '\372', 'B', + '\004', 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', + '.', '0', 'H', '\000', 'R', '\013', 's', 'u', 'f', 'f', 'i', 'x', + 'M', 'a', 't', 'c', 'h', '\022', ';', '\n', '\016', 'c', 'o', 'n', + 't', 'a', 'i', 'n', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', + '\014', ' ', '\001', '(', '\t', 'B', '\022', '\030', '\001', '\372', 'B', '\004', + 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', + '0', 'H', '\000', 'R', '\r', 'c', 'o', 'n', 't', 'a', 'i', 'n', + 's', 'M', 'a', 't', 'c', 'h', '\022', 'I', '\n', '\014', 's', 't', + 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\r', + ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', - 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', - '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\016', 's', 'a', - 'f', 'e', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', - '\022', '<', '\n', '\013', 'r', 'a', 'n', 'g', 'e', '_', 'm', 'a', - 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', - 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', - '3', '.', 'I', 'n', 't', '6', '4', 'R', 'a', 'n', 'g', 'e', - 'H', '\000', 'R', '\n', 'r', 'a', 'n', 'g', 'e', 'M', 'a', 't', - 'c', 'h', '\022', '%', '\n', '\r', 'p', 'r', 'e', 's', 'e', 'n', - 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\007', ' ', '\001', '(', - '\010', 'H', '\000', 'R', '\014', 'p', 'r', 'e', 's', 'e', 'n', 't', - 'M', 'a', 't', 'c', 'h', '\022', '7', '\n', '\014', 'p', 'r', 'e', - 'f', 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\t', ' ', - '\001', '(', '\t', 'B', '\022', '\030', '\001', '\372', 'B', '\004', 'r', '\002', - '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', - '\000', 'R', '\013', 'p', 'r', 'e', 'f', 'i', 'x', 'M', 'a', 't', - 'c', 'h', '\022', '7', '\n', '\014', 's', 'u', 'f', 'f', 'i', 'x', - '_', 'm', 'a', 't', 'c', 'h', '\030', '\n', ' ', '\001', '(', '\t', - 'B', '\022', '\030', '\001', '\372', 'B', '\004', 'r', '\002', '\020', '\001', '\222', - '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\013', - 's', 'u', 'f', 'f', 'i', 'x', 'M', 'a', 't', 'c', 'h', '\022', - ';', '\n', '\016', 'c', 'o', 'n', 't', 'a', 'i', 'n', 's', '_', - 'm', 'a', 't', 'c', 'h', '\030', '\014', ' ', '\001', '(', '\t', 'B', - '\022', '\030', '\001', '\372', 'B', '\004', 'r', '\002', '\020', '\001', '\222', '\307', - '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\r', 'c', - 'o', 'n', 't', 'a', 'i', 'n', 's', 'M', 'a', 't', 'c', 'h', - '\022', 'I', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', - 'a', 't', 'c', 'h', '\030', '\r', ' ', '\001', '(', '\013', '2', '$', - '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', - 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', + 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\013', 's', 't', + 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '!', '\n', + '\014', 'i', 'n', 'v', 'e', 'r', 't', '_', 'm', 'a', 't', 'c', + 'h', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\013', 'i', 'n', 'v', + 'e', 'r', 't', 'M', 'a', 't', 'c', 'h', '\022', '@', '\n', '\035', + 't', 'r', 'e', 'a', 't', '_', 'm', 'i', 's', 's', 'i', 'n', + 'g', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'a', 's', '_', + 'e', 'm', 'p', 't', 'y', '\030', '\016', ' ', '\001', '(', '\010', 'R', + '\031', 't', 'r', 'e', 'a', 't', 'M', 'i', 's', 's', 'i', 'n', + 'g', 'H', 'e', 'a', 'd', 'e', 'r', 'A', 's', 'E', 'm', 'p', + 't', 'y', ':', '\'', '\232', '\305', '\210', '\036', '\"', '\n', ' ', 'e', + 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', + 'r', 'o', 'u', 't', 'e', '.', 'H', 'e', 'a', 'd', 'e', 'r', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\030', '\n', '\026', 'h', + 'e', 'a', 'd', 'e', 'r', '_', 'm', 'a', 't', 'c', 'h', '_', + 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', + '\002', '\020', '\003', 'J', '\004', '\010', '\003', '\020', '\004', 'J', '\004', '\010', + '\005', '\020', '\006', 'R', '\013', 'r', 'e', 'g', 'e', 'x', '_', 'm', + 'a', 't', 'c', 'h', '\"', '\241', '\002', '\n', '\025', 'Q', 'u', 'e', + 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', + 'a', 't', 'c', 'h', 'e', 'r', '\022', '\036', '\n', '\004', 'n', 'a', + 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\n', '\372', 'B', + '\007', 'r', '\005', '\020', '\001', '(', '\200', '\010', 'R', '\004', 'n', 'a', + 'm', 'e', '\022', 'S', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', + '_', 'm', 'a', 't', 'c', 'h', '\030', '\005', ' ', '\001', '(', '\013', + '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', + 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', + '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', + 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', - 't', 'c', 'h', '\022', '!', '\n', '\014', 'i', 'n', 'v', 'e', 'r', - 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\010', ' ', '\001', '(', - '\010', 'R', '\013', 'i', 'n', 'v', 'e', 'r', 't', 'M', 'a', 't', - 'c', 'h', '\022', '@', '\n', '\035', 't', 'r', 'e', 'a', 't', '_', - 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'h', 'e', 'a', 'd', - 'e', 'r', '_', 'a', 's', '_', 'e', 'm', 'p', 't', 'y', '\030', - '\016', ' ', '\001', '(', '\010', 'R', '\031', 't', 'r', 'e', 'a', 't', - 'M', 'i', 's', 's', 'i', 'n', 'g', 'H', 'e', 'a', 'd', 'e', - 'r', 'A', 's', 'E', 'm', 'p', 't', 'y', ':', '\'', '\232', '\305', - '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', - 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', - 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'B', '\030', '\n', '\026', 'h', 'e', 'a', 'd', 'e', 'r', '_', - 'm', 'a', 't', 'c', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f', - 'i', 'e', 'r', 'J', '\004', '\010', '\002', '\020', '\003', 'J', '\004', '\010', - '\003', '\020', '\004', 'J', '\004', '\010', '\005', '\020', '\006', 'R', '\013', 'r', - 'e', 'g', 'e', 'x', '_', 'm', 'a', 't', 'c', 'h', '\"', '\241', - '\002', '\n', '\025', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', - 'm', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', - '\022', '\036', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', - '(', '\t', 'B', '\n', '\372', 'B', '\007', 'r', '\005', '\020', '\001', '(', - '\200', '\010', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'S', '\n', '\014', - 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', - '\030', '\005', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', - 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', - 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', - '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 's', 't', - 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '%', '\n', - '\r', 'p', 'r', 'e', 's', 'e', 'n', 't', '_', 'm', 'a', 't', - 'c', 'h', '\030', '\006', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\014', - 'p', 'r', 'e', 's', 'e', 'n', 't', 'M', 'a', 't', 'c', 'h', - ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', - 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', - 'u', 't', 'e', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', - 'a', 'm', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'B', '!', '\n', '\037', 'q', 'u', 'e', 'r', 'y', '_', 'p', - 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '_', 'm', 'a', 't', - 'c', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', - 'J', '\004', '\010', '\003', '\020', '\004', 'J', '\004', '\010', '\004', '\020', '\005', - 'R', '\005', 'v', 'a', 'l', 'u', 'e', 'R', '\005', 'r', 'e', 'g', - 'e', 'x', '\"', '\206', '\003', '\n', '\026', 'I', 'n', 't', 'e', 'r', - 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'P', - 'o', 'l', 'i', 'c', 'y', '\022', 'R', '\n', '\026', 'm', 'a', 'x', - '_', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', - 'd', 'i', 'r', 'e', 'c', 't', 's', '\030', '\001', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\024', 'm', 'a', 'x', - 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', - 'r', 'e', 'c', 't', 's', '\022', '@', '\n', '\027', 'r', 'e', 'd', - 'i', 'r', 'e', 'c', 't', '_', 'r', 'e', 's', 'p', 'o', 'n', - 's', 'e', '_', 'c', 'o', 'd', 'e', 's', '\030', '\002', ' ', '\003', - '(', '\r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\020', '\005', - 'R', '\025', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', - 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', 's', '\022', - 'J', '\n', '\n', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', - 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', - 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', - 'f', 'i', 'g', 'R', '\n', 'p', 'r', 'e', 'd', 'i', 'c', 'a', - 't', 'e', 's', '\022', '=', '\n', '\033', 'a', 'l', 'l', 'o', 'w', - '_', 'c', 'r', 'o', 's', 's', '_', 's', 'c', 'h', 'e', 'm', - 'e', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\004', - ' ', '\001', '(', '\010', 'R', '\030', 'a', 'l', 'l', 'o', 'w', 'C', - 'r', 'o', 's', 's', 'S', 'c', 'h', 'e', 'm', 'e', 'R', 'e', - 'd', 'i', 'r', 'e', 'c', 't', '\022', 'K', '\n', '\030', 'r', 'e', - 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', - 'r', 's', '_', 't', 'o', '_', 'c', 'o', 'p', 'y', '\030', '\005', - ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', - '\030', '\001', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', - 'R', '\025', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', - 'a', 'd', 'e', 'r', 's', 'T', 'o', 'C', 'o', 'p', 'y', '\"', - 'y', '\n', '\014', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', ',', '\n', '\006', 'c', 'o', 'n', 'f', 'i', - 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', + 't', 'c', 'h', '\022', '%', '\n', '\r', 'p', 'r', 'e', 's', 'e', + 'n', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', + '(', '\010', 'H', '\000', 'R', '\014', 'p', 'r', 'e', 's', 'e', 'n', + 't', 'M', 'a', 't', 'c', 'h', ':', '/', '\232', '\305', '\210', '\036', + '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', + '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'Q', 'u', + 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '!', '\n', '\037', 'q', + 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', + 'e', 'r', '_', 'm', 'a', 't', 'c', 'h', '_', 's', 'p', 'e', + 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\003', '\020', '\004', + 'J', '\004', '\010', '\004', '\020', '\005', 'R', '\005', 'v', 'a', 'l', 'u', + 'e', 'R', '\005', 'r', 'e', 'g', 'e', 'x', '\"', '\206', '\003', '\n', + '\026', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', + 'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', + 'R', '\n', '\026', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', + 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', + 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'A', 'n', 'y', 'R', '\006', 'c', 'o', 'n', 'f', 'i', - 'g', '\022', '\037', '\n', '\013', 'i', 's', '_', 'o', 'p', 't', 'i', - 'o', 'n', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', - 'i', 's', 'O', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\022', '\032', - '\n', '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', '\030', '\003', - ' ', '\001', '(', '\010', 'R', '\010', 'd', 'i', 's', 'a', 'b', 'l', - 'e', 'd', 'B', '\213', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', - 'u', 't', 'e', '.', 'v', '3', 'B', '\024', 'R', 'o', 'u', 't', - 'e', 'C', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', 'P', - 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', - 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', - 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', - 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', - 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', - 'r', 'o', 'u', 't', 'e', '/', 'v', '3', ';', 'r', 'o', 'u', - 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', - 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', + 'e', 'R', '\024', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'n', + 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\022', + '@', '\n', '\027', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '_', + 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'c', 'o', 'd', + 'e', 's', '\030', '\002', ' ', '\003', '(', '\r', 'B', '\010', '\372', 'B', + '\005', '\222', '\001', '\002', '\020', '\005', 'R', '\025', 'r', 'e', 'd', 'i', + 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', + 'C', 'o', 'd', 'e', 's', '\022', 'J', '\n', '\n', 'p', 'r', 'e', + 'd', 'i', 'c', 'a', 't', 'e', 's', '\030', '\003', ' ', '\003', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\n', 'p', + 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\022', '=', '\n', + '\033', 'a', 'l', 'l', 'o', 'w', '_', 'c', 'r', 'o', 's', 's', + '_', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'd', 'i', + 'r', 'e', 'c', 't', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\030', + 'a', 'l', 'l', 'o', 'w', 'C', 'r', 'o', 's', 's', 'S', 'c', + 'h', 'e', 'm', 'e', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', + '\022', 'K', '\n', '\030', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', + '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', + 'c', 'o', 'p', 'y', '\030', '\005', ' ', '\003', '(', '\t', 'B', '\022', + '\372', 'B', '\017', '\222', '\001', '\014', '\030', '\001', '\"', '\010', 'r', '\006', + '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\025', 'r', 'e', 's', 'p', + 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', + 'o', 'C', 'o', 'p', 'y', '\"', 'y', '\n', '\014', 'F', 'i', 'l', + 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', ',', '\n', + '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', + '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', + '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\022', '\037', '\n', '\013', 'i', + 's', '_', 'o', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\030', '\002', + ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', 'O', 'p', 't', 'i', + 'o', 'n', 'a', 'l', '\022', '\032', '\n', '\010', 'd', 'i', 's', 'a', + 'b', 'l', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\010', + 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', 'B', '\213', '\001', '\n', + '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', + 'B', '\024', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'm', 'p', 'o', + 'n', 'e', 'n', 't', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', + 'Z', 'D', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', + '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', + 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', + 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', + 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', + 'v', '3', ';', 'r', 'o', 'u', 't', 'e', 'v', '3', '\272', '\200', + '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', + 'o', '3', }; -static _upb_DefPool_Init *deps[20] = { +static _upb_DefPool_Init *deps[23] = { + &envoy_config_common_mutation_rules_v3_mutation_rules_proto_upbdefinit, &envoy_config_core_v3_base_proto_upbdefinit, &envoy_config_core_v3_extension_proto_upbdefinit, &envoy_config_core_v3_proxy_protocol_proto_upbdefinit, + &envoy_config_core_v3_substitution_format_string_proto_upbdefinit, + &envoy_type_matcher_v3_filter_state_proto_upbdefinit, &envoy_type_matcher_v3_metadata_proto_upbdefinit, &envoy_type_matcher_v3_regex_proto_upbdefinit, &envoy_type_matcher_v3_string_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c index 7088251b048..c28abb1a302 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c @@ -23,7 +23,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[3990] = { +static const char descriptor[4075] = { '\n', ' ', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'a', 'p', '/', 'v', '3', '/', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\022', '\023', @@ -221,7 +221,7 @@ static const char descriptor[3990] = { 'c', 'h', '\030', '\002', ' ', '\001', '(', '\014', 'B', '\007', '\372', 'B', '\004', 'z', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 'b', 'i', 'n', 'a', 'r', 'y', 'M', 'a', 't', 'c', 'h', 'B', '\013', '\n', '\004', - 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\300', '\002', + 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\225', '\003', '\n', '\014', 'O', 'u', 't', 'p', 'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'A', '\n', '\005', 's', 'i', 'n', 'k', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', @@ -244,119 +244,126 @@ static const char descriptor[3990] = { 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'T', 'x', 'B', 'y', 't', 'e', 's', '\022', '\034', '\n', '\t', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\t', - 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', ':', '-', '\232', - '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', - 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', - 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'u', 't', 'p', - 'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\252', '\005', '\n', - '\n', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', '\022', - 'H', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', - '\001', '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', + 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '\022', 'S', '\n', + '\027', 'm', 'i', 'n', '_', 's', 't', 'r', 'e', 'a', 'm', 'e', + 'd', '_', 's', 'e', 'n', 't', '_', 'b', 'y', 't', 'e', 's', + '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', + 'R', '\024', 'm', 'i', 'n', 'S', 't', 'r', 'e', 'a', 'm', 'e', + 'd', 'S', 'e', 'n', 't', 'B', 'y', 't', 'e', 's', ':', '-', + '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', + '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', + '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'u', 't', + 'p', 'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\252', '\005', + '\n', '\n', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', + '\022', 'H', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', + ' ', '\001', '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', + 'v', '3', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', + 'k', '.', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\010', '\372', 'B', + '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'f', 'o', 'r', 'm', + 'a', 't', '\022', 'R', '\n', '\017', 's', 't', 'r', 'e', 'a', 'm', + 'i', 'n', 'g', '_', 'a', 'd', 'm', 'i', 'n', '\030', '\002', ' ', + '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', - '3', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', - '.', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\010', '\372', 'B', '\005', - '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'f', 'o', 'r', 'm', 'a', - 't', '\022', 'R', '\n', '\017', 's', 't', 'r', 'e', 'a', 'm', 'i', - 'n', 'g', '_', 'a', 'd', 'm', 'i', 'n', '\030', '\002', ' ', '\001', - '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', - '.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', - 'm', 'i', 'n', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\016', 's', - 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', 'm', 'i', - 'n', '\022', 'G', '\n', '\014', 'f', 'i', 'l', 'e', '_', 'p', 'e', - 'r', '_', 't', 'a', 'p', '\030', '\003', ' ', '\001', '(', '\013', '2', - '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'F', 'i', - 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', - 'H', '\000', 'R', '\n', 'f', 'i', 'l', 'e', 'P', 'e', 'r', 'T', - 'a', 'p', '\022', 'O', '\n', '\016', 's', 't', 'r', 'e', 'a', 'm', - 'i', 'n', 'g', '_', 'g', 'r', 'p', 'c', '\030', '\004', ' ', '\001', - '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', - '.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', - 'p', 'c', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\r', 's', 't', - 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', 'p', 'c', '\022', - 'O', '\n', '\016', 'b', 'u', 'f', 'f', 'e', 'r', 'e', 'd', '_', - 'a', 'd', 'm', 'i', 'n', '\030', '\005', ' ', '\001', '(', '\013', '2', - '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'B', 'u', - 'f', 'f', 'e', 'r', 'e', 'd', 'A', 'd', 'm', 'i', 'n', 'S', - 'i', 'n', 'k', 'H', '\000', 'R', '\r', 'b', 'u', 'f', 'f', 'e', - 'r', 'e', 'd', 'A', 'd', 'm', 'i', 'n', '\022', 'M', '\n', '\013', - 'c', 'u', 's', 't', 'o', 'm', '_', 's', 'i', 'n', 'k', '\030', - '\006', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', - 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', - 'g', 'H', '\000', 'R', '\n', 'c', 'u', 's', 't', 'o', 'm', 'S', - 'i', 'n', 'k', '\"', '~', '\n', '\006', 'F', 'o', 'r', 'm', 'a', - 't', '\022', '\026', '\n', '\022', 'J', 'S', 'O', 'N', '_', 'B', 'O', - 'D', 'Y', '_', 'A', 'S', '_', 'B', 'Y', 'T', 'E', 'S', '\020', - '\000', '\022', '\027', '\n', '\023', 'J', 'S', 'O', 'N', '_', 'B', 'O', - 'D', 'Y', '_', 'A', 'S', '_', 'S', 'T', 'R', 'I', 'N', 'G', - '\020', '\001', '\022', '\020', '\n', '\014', 'P', 'R', 'O', 'T', 'O', '_', - 'B', 'I', 'N', 'A', 'R', 'Y', '\020', '\002', '\022', '!', '\n', '\035', - 'P', 'R', 'O', 'T', 'O', '_', 'B', 'I', 'N', 'A', 'R', 'Y', - '_', 'L', 'E', 'N', 'G', 'T', 'H', '_', 'D', 'E', 'L', 'I', - 'M', 'I', 'T', 'E', 'D', '\020', '\003', '\022', '\016', '\n', '\n', 'P', - 'R', 'O', 'T', 'O', '_', 'T', 'E', 'X', 'T', '\020', '\004', ':', - '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', - 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', - 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'u', - 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', 'B', '\027', '\n', '\020', - 'o', 'u', 't', 'p', 'u', 't', '_', 's', 'i', 'n', 'k', '_', - 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\"', 'I', '\n', - '\022', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', - 'm', 'i', 'n', 'S', 'i', 'n', 'k', ':', '3', '\232', '\305', '\210', - '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', + '3', '.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', + 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\016', + 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', 'm', + 'i', 'n', '\022', 'G', '\n', '\014', 'f', 'i', 'l', 'e', '_', 'p', + 'e', 'r', '_', 't', 'a', 'p', '\030', '\003', ' ', '\001', '(', '\013', + '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'F', + 'i', 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', + 'k', 'H', '\000', 'R', '\n', 'f', 'i', 'l', 'e', 'P', 'e', 'r', + 'T', 'a', 'p', '\022', 'O', '\n', '\016', 's', 't', 'r', 'e', 'a', + 'm', 'i', 'n', 'g', '_', 'g', 'r', 'p', 'c', '\030', '\004', ' ', + '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', + '3', '.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', + 'r', 'p', 'c', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\r', 's', + 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', 'p', 'c', + '\022', 'O', '\n', '\016', 'b', 'u', 'f', 'f', 'e', 'r', 'e', 'd', + '_', 'a', 'd', 'm', 'i', 'n', '\030', '\005', ' ', '\001', '(', '\013', + '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'B', + 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'A', 'd', 'm', 'i', 'n', + 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\r', 'b', 'u', 'f', 'f', + 'e', 'r', 'e', 'd', 'A', 'd', 'm', 'i', 'n', '\022', 'M', '\n', + '\013', 'c', 'u', 's', 't', 'o', 'm', '_', 's', 'i', 'n', 'k', + '\030', '\006', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', + 'i', 'g', 'H', '\000', 'R', '\n', 'c', 'u', 's', 't', 'o', 'm', + 'S', 'i', 'n', 'k', '\"', '~', '\n', '\006', 'F', 'o', 'r', 'm', + 'a', 't', '\022', '\026', '\n', '\022', 'J', 'S', 'O', 'N', '_', 'B', + 'O', 'D', 'Y', '_', 'A', 'S', '_', 'B', 'Y', 'T', 'E', 'S', + '\020', '\000', '\022', '\027', '\n', '\023', 'J', 'S', 'O', 'N', '_', 'B', + 'O', 'D', 'Y', '_', 'A', 'S', '_', 'S', 'T', 'R', 'I', 'N', + 'G', '\020', '\001', '\022', '\020', '\n', '\014', 'P', 'R', 'O', 'T', 'O', + '_', 'B', 'I', 'N', 'A', 'R', 'Y', '\020', '\002', '\022', '!', '\n', + '\035', 'P', 'R', 'O', 'T', 'O', '_', 'B', 'I', 'N', 'A', 'R', + 'Y', '_', 'L', 'E', 'N', 'G', 'T', 'H', '_', 'D', 'E', 'L', + 'I', 'M', 'I', 'T', 'E', 'D', '\020', '\003', '\022', '\016', '\n', '\n', + 'P', 'R', 'O', 'T', 'O', '_', 'T', 'E', 'X', 'T', '\020', '\004', + ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', + 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', + 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', + 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', 'B', '\027', '\n', + '\020', 'o', 'u', 't', 'p', 'u', 't', '_', 's', 'i', 'n', 'k', + '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\"', 'I', + '\n', '\022', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', + 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', ':', '3', '\232', '\305', + '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 's', + 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', + '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 't', 'r', 'e', 'a', + 'm', 'i', 'n', 'g', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', + 'k', '\"', 'p', '\n', '\021', 'B', 'u', 'f', 'f', 'e', 'r', 'e', + 'd', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', '\022', '&', + '\n', '\n', 'm', 'a', 'x', '_', 't', 'r', 'a', 'c', 'e', 's', + '\030', '\001', ' ', '\001', '(', '\004', 'B', '\007', '\372', 'B', '\004', '2', + '\002', ' ', '\000', 'R', '\t', 'm', 'a', 'x', 'T', 'r', 'a', 'c', + 'e', 's', '\022', '3', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', + 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\007', + 't', 'i', 'm', 'e', 'o', 'u', 't', '\"', 'k', '\n', '\016', 'F', + 'i', 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', + 'k', '\022', '(', '\n', '\013', 'p', 'a', 't', 'h', '_', 'p', 'r', + 'e', 'f', 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', + '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'p', 'a', 't', + 'h', 'P', 'r', 'e', 'f', 'i', 'x', ':', '/', '\232', '\305', '\210', + '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', - 'a', 'l', 'p', 'h', 'a', '.', 'S', 't', 'r', 'e', 'a', 'm', - 'i', 'n', 'g', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', - '\"', 'p', '\n', '\021', 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', - 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', '\022', '&', '\n', - '\n', 'm', 'a', 'x', '_', 't', 'r', 'a', 'c', 'e', 's', '\030', - '\001', ' ', '\001', '(', '\004', 'B', '\007', '\372', 'B', '\004', '2', '\002', - ' ', '\000', 'R', '\t', 'm', 'a', 'x', 'T', 'r', 'a', 'c', 'e', - 's', '\022', '3', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', - '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\007', 't', - 'i', 'm', 'e', 'o', 'u', 't', '\"', 'k', '\n', '\016', 'F', 'i', - 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', - '\022', '(', '\n', '\013', 'p', 'a', 't', 'h', '_', 'p', 'r', 'e', - 'f', 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', - 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'p', 'a', 't', 'h', - 'P', 'r', 'e', 'f', 'i', 'x', ':', '/', '\232', '\305', '\210', '\036', - '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', - 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', - 'l', 'p', 'h', 'a', '.', 'F', 'i', 'l', 'e', 'P', 'e', 'r', - 'T', 'a', 'p', 'S', 'i', 'n', 'k', '\"', '\256', '\001', '\n', '\021', + 'a', 'l', 'p', 'h', 'a', '.', 'F', 'i', 'l', 'e', 'P', 'e', + 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', '\"', '\256', '\001', '\n', + '\021', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', + 'p', 'c', 'S', 'i', 'n', 'k', '\022', '\025', '\n', '\006', 't', 'a', + 'p', '_', 'i', 'd', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\005', + 't', 'a', 'p', 'I', 'd', '\022', 'N', '\n', '\014', 'g', 'r', 'p', + 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\002', ' ', + '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', + 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', + 'R', '\013', 'g', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', + 'e', ':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', + 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', + 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', 'p', - 'c', 'S', 'i', 'n', 'k', '\022', '\025', '\n', '\006', 't', 'a', 'p', - '_', 'i', 'd', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\005', 't', - 'a', 'p', 'I', 'd', '\022', 'N', '\n', '\014', 'g', 'r', 'p', 'c', - '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\002', ' ', '\001', - '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', - 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', - '\013', 'g', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', - ':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', 'v', - 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', - 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', - 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', 'p', 'c', - 'S', 'i', 'n', 'k', 'B', '|', '\n', '!', 'i', 'o', '.', 'e', - 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', - 'a', 'p', '.', 'v', '3', 'B', '\013', 'C', 'o', 'm', 'm', 'o', - 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '@', 'g', 'i', - 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', - 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', - 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', - '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', - 'g', '/', 't', 'a', 'p', '/', 'v', '3', ';', 't', 'a', 'p', - 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', - 'p', 'r', 'o', 't', 'o', '3', + 'c', 'S', 'i', 'n', 'k', 'B', '|', '\n', '!', 'i', 'o', '.', + 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 't', 'a', 'p', '.', 'v', '3', 'B', '\013', 'C', 'o', 'm', 'm', + 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '@', 'g', + 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', + 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', + 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', + 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', + 'i', 'g', '/', 't', 'a', 'p', '/', 'v', '3', ';', 't', 'a', + 'p', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', + '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[12] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c index e4574eb61c9..a79bfcf42af 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c @@ -14,10 +14,11 @@ extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_grpc_service_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_http_service_proto_upbdefinit; +extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; -static const char descriptor[803] = { +static const char descriptor[903] = { '\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 'o', 'p', 'e', 'n', 't', 'e', 'l', 'e', 'm', 'e', 't', 'r', @@ -33,64 +34,74 @@ static const char descriptor[803] = { 'o', '\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'h', 't', 't', 'p', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', - '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', - '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', - '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', - 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', - 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', - 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\"', '\223', '\003', - '\n', '\023', 'O', 'p', 'e', 'n', 'T', 'e', 'l', 'e', 'm', 'e', - 't', 'r', 'y', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '[', '\n', - '\014', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', - 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', - 'e', 'r', 'v', 'i', 'c', 'e', 'B', '\025', '\362', '\230', '\376', '\217', - '\005', '\017', '\022', '\r', 'o', 't', 'l', 'p', '_', 'e', 'x', 'p', - 'o', 'r', 't', 'e', 'r', 'R', '\013', 'g', 'r', 'p', 'c', 'S', - 'e', 'r', 'v', 'i', 'c', 'e', '\022', '[', '\n', '\014', 'h', 't', - 't', 'p', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\003', - ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'H', 't', 't', 'p', 'S', 'e', 'r', 'v', - 'i', 'c', 'e', 'B', '\025', '\362', '\230', '\376', '\217', '\005', '\017', '\022', - '\r', 'o', 't', 'l', 'p', '_', 'e', 'x', 'p', 'o', 'r', 't', - 'e', 'r', 'R', '\013', 'h', 't', 't', 'p', 'S', 'e', 'r', 'v', - 'i', 'c', 'e', '\022', '!', '\n', '\014', 's', 'e', 'r', 'v', 'i', - 'c', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', - '\t', 'R', '\013', 's', 'e', 'r', 'v', 'i', 'c', 'e', 'N', 'a', - 'm', 'e', '\022', 'Y', '\n', '\022', 'r', 'e', 's', 'o', 'u', 'r', - 'c', 'e', '_', 'd', 'e', 't', 'e', 'c', 't', 'o', 'r', 's', - '\030', '\004', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', - 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', - 'i', 'g', 'R', '\021', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', - 'D', 'e', 't', 'e', 'c', 't', 'o', 'r', 's', '\022', 'D', '\n', - '\007', 's', 'a', 'm', 'p', 'l', 'e', 'r', '\030', '\005', ' ', '\001', + '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', + 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', + 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', + 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', + 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', + 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', + 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', + 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', + 'p', 'r', 'o', 't', 'o', '\"', '\327', '\003', '\n', '\023', 'O', 'p', + 'e', 'n', 'T', 'e', 'l', 'e', 'm', 'e', 't', 'r', 'y', 'C', + 'o', 'n', 'f', 'i', 'g', '\022', '[', '\n', '\014', 'g', 'r', 'p', + 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\001', ' ', + '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', + 'c', 'e', 'B', '\025', '\362', '\230', '\376', '\217', '\005', '\017', '\022', '\r', + 'o', 't', 'l', 'p', '_', 'e', 'x', 'p', 'o', 'r', 't', 'e', + 'r', 'R', '\013', 'g', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', + 'c', 'e', '\022', '[', '\n', '\014', 'h', 't', 't', 'p', '_', 's', + 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\003', ' ', '\001', '(', '\013', + '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'H', 't', 't', 'p', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'B', + '\025', '\362', '\230', '\376', '\217', '\005', '\017', '\022', '\r', 'o', 't', 'l', + 'p', '_', 'e', 'x', 'p', 'o', 'r', 't', 'e', 'r', 'R', '\013', + 'h', 't', 't', 'p', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\022', + '!', '\n', '\014', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'n', + 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 's', + 'e', 'r', 'v', 'i', 'c', 'e', 'N', 'a', 'm', 'e', '\022', 'Y', + '\n', '\022', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'd', + 'e', 't', 'e', 'c', 't', 'o', 'r', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\007', - 's', 'a', 'm', 'p', 'l', 'e', 'r', 'B', '\211', '\001', '\n', '#', - 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', - 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '3', 'B', - '\022', 'O', 'p', 'e', 'n', 't', 'e', 'l', 'e', 'm', 'e', 't', - 'r', 'y', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', - 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', - 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', - 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', - 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', ';', - 't', 'r', 'a', 'c', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', - '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\021', + 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'D', 'e', 't', 'e', + 'c', 't', 'o', 'r', 's', '\022', 'D', '\n', '\007', 's', 'a', 'm', + 'p', 'l', 'e', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '*', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', + 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\007', 's', 'a', 'm', 'p', + 'l', 'e', 'r', '\022', 'B', '\n', '\016', 'm', 'a', 'x', '_', 'c', + 'a', 'c', 'h', 'e', '_', 's', 'i', 'z', 'e', '\030', '\006', ' ', + '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', + 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\014', 'm', + 'a', 'x', 'C', 'a', 'c', 'h', 'e', 'S', 'i', 'z', 'e', 'B', + '\211', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', + 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', + '.', 'v', '3', 'B', '\022', 'O', 'p', 'e', 'n', 't', 'e', 'l', + 'e', 'm', 'e', 't', 'r', 'y', 'P', 'r', 'o', 't', 'o', 'P', + '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', + 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', + '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', + 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', + 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', + '/', 'v', '3', ';', 't', 'r', 'a', 'c', 'e', 'v', '3', '\272', + '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', + 't', 'o', '3', }; -static _upb_DefPool_Init *deps[6] = { +static _upb_DefPool_Init *deps[7] = { &envoy_config_core_v3_extension_proto_upbdefinit, &envoy_config_core_v3_grpc_service_proto_upbdefinit, &envoy_config_core_v3_http_service_proto_upbdefinit, + &google_protobuf_wrappers_proto_upbdefinit, &udpa_annotations_migrate_proto_upbdefinit, &udpa_annotations_status_proto_upbdefinit, NULL, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c index dd57f24152d..f3b7a19920b 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c @@ -11,114 +11,135 @@ #include "envoy/config/trace/v3/zipkin.upbdefs.h" #include "envoy/config/trace/v3/zipkin.upb_minitable.h" +extern _upb_DefPool_Init envoy_config_core_v3_http_service_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; -extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[1086] = { +static const char descriptor[1337] = { '\n', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 'z', 'i', 'p', 'k', 'i', 'n', '.', 'p', 'r', 'o', 't', 'o', '\022', '\025', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '3', '\032', - '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', - 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', - 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', - 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', - 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', - 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', - 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', - 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', - 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', - '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', - 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', - 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', - 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', - 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', - '\204', '\005', '\n', '\014', 'Z', 'i', 'p', 'k', 'i', 'n', 'C', 'o', - 'n', 'f', 'i', 'g', '\022', '4', '\n', '\021', 'c', 'o', 'l', 'l', - 'e', 'c', 't', 'o', 'r', '_', 'c', 'l', 'u', 's', 't', 'e', - 'r', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', - 'r', '\002', '\020', '\001', 'R', '\020', 'c', 'o', 'l', 'l', 'e', 'c', - 't', 'o', 'r', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', '6', - '\n', '\022', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', '_', - 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '\030', '\002', ' ', '\001', - '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', - '\021', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', 'E', 'n', - 'd', 'p', 'o', 'i', 'n', 't', '\022', '&', '\n', '\017', 't', 'r', - 'a', 'c', 'e', '_', 'i', 'd', '_', '1', '2', '8', 'b', 'i', - 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\r', 't', 'r', 'a', - 'c', 'e', 'I', 'd', '1', '2', '8', 'b', 'i', 't', '\022', 'J', - '\n', '\023', 's', 'h', 'a', 'r', 'e', 'd', '_', 's', 'p', 'a', - 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\004', ' ', - '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\021', 's', 'h', 'a', - 'r', 'e', 'd', 'S', 'p', 'a', 'n', 'C', 'o', 'n', 't', 'e', - 'x', 't', '\022', 'z', '\n', '\032', 'c', 'o', 'l', 'l', 'e', 'c', - 't', 'o', 'r', '_', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', - '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\005', ' ', '\001', - '(', '\016', '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', - 'v', '3', '.', 'Z', 'i', 'p', 'k', 'i', 'n', 'C', 'o', 'n', - 'f', 'i', 'g', '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'o', + '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', + 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'h', 't', + 't', 'p', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'p', + 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', + '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', + 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', + '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', + 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', + 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', + 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', + 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', + 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', + 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', + 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', + 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', + 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', + 'o', 't', 'o', '\"', '\357', '\006', '\n', '\014', 'Z', 'i', 'p', 'k', + 'i', 'n', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '+', '\n', '\021', + 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', '_', 'c', 'l', + 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\020', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', 'C', 'l', + 'u', 's', 't', 'e', 'r', '\022', '-', '\n', '\022', 'c', 'o', 'l', + 'l', 'e', 'c', 't', 'o', 'r', '_', 'e', 'n', 'd', 'p', 'o', + 'i', 'n', 't', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\021', 'c', + 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', 'E', 'n', 'd', 'p', + 'o', 'i', 'n', 't', '\022', '&', '\n', '\017', 't', 'r', 'a', 'c', + 'e', '_', 'i', 'd', '_', '1', '2', '8', 'b', 'i', 't', '\030', + '\003', ' ', '\001', '(', '\010', 'R', '\r', 't', 'r', 'a', 'c', 'e', + 'I', 'd', '1', '2', '8', 'b', 'i', 't', '\022', 'J', '\n', '\023', + 's', 'h', 'a', 'r', 'e', 'd', '_', 's', 'p', 'a', 'n', '_', + 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\004', ' ', '\001', '(', + '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', + 'V', 'a', 'l', 'u', 'e', 'R', '\021', 's', 'h', 'a', 'r', 'e', + 'd', 'S', 'p', 'a', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', + '\022', 'z', '\n', '\032', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', + 'r', '_', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'v', + 'e', 'r', 's', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\016', + '2', '<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '3', + '.', 'Z', 'i', 'p', 'k', 'i', 'n', 'C', 'o', 'n', 'f', 'i', + 'g', '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', 'E', + 'n', 'd', 'p', 'o', 'i', 'n', 't', 'V', 'e', 'r', 's', 'i', + 'o', 'n', 'R', '\030', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'V', 'e', 'r', - 's', 'i', 'o', 'n', 'R', '\030', 'c', 'o', 'l', 'l', 'e', 'c', - 't', 'o', 'r', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'V', - 'e', 'r', 's', 'i', 'o', 'n', '\022', '-', '\n', '\022', 'c', 'o', - 'l', 'l', 'e', 'c', 't', 'o', 'r', '_', 'h', 'o', 's', 't', - 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\021', - 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', 'H', 'o', 's', - 't', 'n', 'a', 'm', 'e', '\022', 'B', '\n', '\027', 's', 'p', 'l', - 'i', 't', '_', 's', 'p', 'a', 'n', 's', '_', 'f', 'o', 'r', - '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\030', '\007', ' ', '\001', - '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', - '3', '.', '0', 'R', '\024', 's', 'p', 'l', 'i', 't', 'S', 'p', - 'a', 'n', 's', 'F', 'o', 'r', 'R', 'e', 'q', 'u', 'e', 's', - 't', '\"', 'x', '\n', '\030', 'C', 'o', 'l', 'l', 'e', 'c', 't', - 'o', 'r', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'V', 'e', - 'r', 's', 'i', 'o', 'n', '\022', '3', '\n', '%', 'D', 'E', 'P', - 'R', 'E', 'C', 'A', 'T', 'E', 'D', '_', 'A', 'N', 'D', '_', - 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '_', - 'D', 'O', '_', 'N', 'O', 'T', '_', 'U', 'S', 'E', '\020', '\000', - '\032', '\010', '\010', '\001', '\250', '\367', '\264', '\213', '\002', '\001', '\022', '\r', - '\n', '\t', 'H', 'T', 'T', 'P', '_', 'J', 'S', 'O', 'N', '\020', - '\001', '\022', '\016', '\n', '\n', 'H', 'T', 'T', 'P', '_', 'P', 'R', - 'O', 'T', 'O', '\020', '\002', '\022', '\010', '\n', '\004', 'G', 'R', 'P', - 'C', '\020', '\003', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '2', '.', 'Z', 'i', - 'p', 'k', 'i', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\261', - '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', - 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', - 'v', '3', 'B', '\013', 'Z', 'i', 'p', 'k', 'i', 'n', 'P', 'r', - 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u', - 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', - 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', - 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', - 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', - 'r', 'a', 'c', 'e', '/', 'v', '3', ';', 't', 'r', 'a', 'c', - 'e', 'v', '3', '\362', '\230', '\376', '\217', '\005', ')', '\022', '\'', 'e', - 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 's', '.', 't', 'r', 'a', 'c', 'e', 'r', 's', '.', - 'z', 'i', 'p', 'k', 'i', 'n', '.', 'v', '4', 'a', 'l', 'p', - 'h', 'a', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', - 'p', 'r', 'o', 't', 'o', '3', + 's', 'i', 'o', 'n', '\022', '-', '\n', '\022', 'c', 'o', 'l', 'l', + 'e', 'c', 't', 'o', 'r', '_', 'h', 'o', 's', 't', 'n', 'a', + 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\021', 'c', 'o', + 'l', 'l', 'e', 'c', 't', 'o', 'r', 'H', 'o', 's', 't', 'n', + 'a', 'm', 'e', '\022', 'B', '\n', '\027', 's', 'p', 'l', 'i', 't', + '_', 's', 'p', 'a', 'n', 's', '_', 'f', 'o', 'r', '_', 'r', + 'e', 'q', 'u', 'e', 's', 't', '\030', '\007', ' ', '\001', '(', '\010', + 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', + '0', 'R', '\024', 's', 'p', 'l', 'i', 't', 'S', 'p', 'a', 'n', + 's', 'F', 'o', 'r', 'R', 'e', 'q', 'u', 'e', 's', 't', '\022', + 'h', '\n', '\024', 't', 'r', 'a', 'c', 'e', '_', 'c', 'o', 'n', + 't', 'e', 'x', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', + '\010', ' ', '\001', '(', '\016', '2', '6', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', + 'c', 'e', '.', 'v', '3', '.', 'Z', 'i', 'p', 'k', 'i', 'n', + 'C', 'o', 'n', 'f', 'i', 'g', '.', 'T', 'r', 'a', 'c', 'e', + 'C', 'o', 'n', 't', 'e', 'x', 't', 'O', 'p', 't', 'i', 'o', + 'n', 'R', '\022', 't', 'r', 'a', 'c', 'e', 'C', 'o', 'n', 't', + 'e', 'x', 't', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'N', '\n', + '\021', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', '_', 's', + 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\t', ' ', '\001', '(', '\013', + '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'H', 't', 't', 'p', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'R', + '\020', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', 'S', 'e', + 'r', 'v', 'i', 'c', 'e', '\"', 'A', '\n', '\022', 'T', 'r', 'a', + 'c', 'e', 'C', 'o', 'n', 't', 'e', 'x', 't', 'O', 'p', 't', + 'i', 'o', 'n', '\022', '\n', '\n', '\006', 'U', 'S', 'E', '_', 'B', + '3', '\020', '\000', '\022', '\037', '\n', '\033', 'U', 'S', 'E', '_', 'B', + '3', '_', 'W', 'I', 'T', 'H', '_', 'W', '3', 'C', '_', 'P', + 'R', 'O', 'P', 'A', 'G', 'A', 'T', 'I', 'O', 'N', '\020', '\001', + '\"', 'x', '\n', '\030', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'o', + 'r', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'V', 'e', 'r', + 's', 'i', 'o', 'n', '\022', '3', '\n', '%', 'D', 'E', 'P', 'R', + 'E', 'C', 'A', 'T', 'E', 'D', '_', 'A', 'N', 'D', '_', 'U', + 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '_', 'D', + 'O', '_', 'N', 'O', 'T', '_', 'U', 'S', 'E', '\020', '\000', '\032', + '\010', '\010', '\001', '\250', '\367', '\264', '\213', '\002', '\001', '\022', '\r', '\n', + '\t', 'H', 'T', 'T', 'P', '_', 'J', 'S', 'O', 'N', '\020', '\001', + '\022', '\016', '\n', '\n', 'H', 'T', 'T', 'P', '_', 'P', 'R', 'O', + 'T', 'O', '\020', '\002', '\022', '\010', '\n', '\004', 'G', 'R', 'P', 'C', + '\020', '\003', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 't', 'r', 'a', 'c', 'e', '.', 'v', '2', '.', 'Z', 'i', 'p', + 'k', 'i', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\261', '\001', + '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', + '3', 'B', '\013', 'Z', 'i', 'p', 'k', 'i', 'n', 'P', 'r', 'o', + 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u', 'b', + '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', + 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', + 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', + 'a', 'c', 'e', '/', 'v', '3', ';', 't', 'r', 'a', 'c', 'e', + 'v', '3', '\362', '\230', '\376', '\217', '\005', ')', '\022', '\'', 'e', 'n', + 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 's', '.', 't', 'r', 'a', 'c', 'e', 'r', 's', '.', 'z', + 'i', 'p', 'k', 'i', 'n', '.', 'v', '4', 'a', 'l', 'p', 'h', + 'a', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', + 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[7] = { + &envoy_config_core_v3_http_service_proto_upbdefinit, &google_protobuf_wrappers_proto_upbdefinit, &envoy_annotations_deprecation_proto_upbdefinit, &udpa_annotations_migrate_proto_upbdefinit, &udpa_annotations_status_proto_upbdefinit, &udpa_annotations_versioning_proto_upbdefinit, - &validate_validate_proto_upbdefinit, NULL, }; diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c index 7dd01642bc0..05d40225991 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c @@ -11,11 +11,12 @@ #include "envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h" #include "envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h" +extern _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[481] = { +static const char descriptor[681] = { '\n', '4', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '/', 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't', @@ -23,43 +24,60 @@ static const char descriptor[481] = { '.', 'p', 'r', 'o', 't', 'o', '\022', '&', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '.', 'a', 'g', - 'g', 'r', 'e', 'g', 'a', 't', 'e', '.', 'v', '3', '\032', '\035', - 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', - 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', - 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\"', 'r', '\n', '\r', 'C', 'l', 'u', - 's', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '$', - '\n', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\001', - ' ', '\003', '(', '\t', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', - '\010', '\001', 'R', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', - ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', - 'u', 's', 't', 'e', 'r', '.', 'a', 'g', 'g', 'r', 'e', 'g', - 'a', 't', 'e', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', - 'g', 'B', '\251', '\001', '\n', '4', 'i', 'o', '.', 'e', 'n', 'v', - 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', - '.', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '.', 'a', 'g', - 'g', 'r', 'e', 'g', 'a', 't', 'e', '.', 'v', '3', 'B', '\014', - 'C', 'l', 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', - 'P', '\001', 'Z', 'Y', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', - 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', - 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', - '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', - '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', - 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '/', 'a', 'g', 'g', - 'r', 'e', 'g', 'a', 't', 'e', '/', 'v', '3', ';', 'a', 'g', - 'g', 'r', 'e', 'g', 'a', 't', 'e', 'v', '3', '\272', '\200', '\310', - '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', - '3', + 'g', 'r', 'e', 'g', 'a', 't', 'e', '.', 'v', '3', '\032', '(', + 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', + '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', 'n', + 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '.', 'p', + 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', + 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', + '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', + 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', + 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', + 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', + 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', + 'r', '\n', '\r', 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', + 'n', 'f', 'i', 'g', '\022', '$', '\n', '\010', 'c', 'l', 'u', 's', + 't', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\t', 'B', '\010', + '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'c', 'l', + 'u', 's', 't', 'e', 'r', 's', ':', ';', '\232', '\305', '\210', '\036', + '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', + 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', '.', 'v', '2', + 'a', 'l', 'p', 'h', 'a', '.', 'C', 'l', 'u', 's', 't', 'e', + 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\233', '\001', '\n', '\030', + 'A', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'C', 'l', 'u', + 's', 't', 'e', 'r', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', + '\022', 'Q', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', + 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', + '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', + 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'c', + 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', + ',', '\n', '\r', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', + 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', + '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\014', 'r', 'e', 's', + 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 'B', '\251', '\001', + '\n', '4', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'c', 'l', 'u', + 's', 't', 'e', 'r', 's', '.', 'a', 'g', 'g', 'r', 'e', 'g', + 'a', 't', 'e', '.', 'v', '3', 'B', '\014', 'C', 'l', 'u', 's', + 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'Y', + 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', + 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', + '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', + 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'c', 'l', 'u', 's', + 't', 'e', 'r', 's', '/', 'a', 'g', 'g', 'r', 'e', 'g', 'a', + 't', 'e', '/', 'v', '3', ';', 'a', 'g', 'g', 'r', 'e', 'g', + 'a', 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', + '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[4] = { +static _upb_DefPool_Init *deps[5] = { + &envoy_config_core_v3_config_source_proto_upbdefinit, &udpa_annotations_status_proto_upbdefinit, &udpa_annotations_versioning_proto_upbdefinit, &validate_validate_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h index 7f8a8a6065e..55846b65d67 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h @@ -27,6 +27,11 @@ UPB_INLINE const upb_MessageDef *envoy_extensions_clusters_aggregate_v3_ClusterC return upb_DefPool_FindMessageByName(s, "envoy.extensions.clusters.aggregate.v3.ClusterConfig"); } +UPB_INLINE const upb_MessageDef *envoy_extensions_clusters_aggregate_v3_AggregateClusterResource_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_extensions_clusters_aggregate_v3_cluster_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.extensions.clusters.aggregate.v3.AggregateClusterResource"); +} + #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c index d3a938a5487..ac889ca8e42 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c @@ -12,13 +12,12 @@ #include "envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h" extern _upb_DefPool_Init envoy_config_rbac_v3_rbac_proto_upbdefinit; -extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit; extern _upb_DefPool_Init xds_type_matcher_v3_matcher_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; -static const char descriptor[1165] = { +static const char descriptor[1124] = { '\n', '0', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'h', 't', 't', 'p', '/', 'r', 'b', 'a', 'c', @@ -29,99 +28,94 @@ static const char descriptor[1165] = { 'a', 'c', '.', 'v', '3', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', '/', 'r', 'b', 'a', 'c', '.', 'p', 'r', 'o', - 't', 'o', '\032', '\037', 'x', 'd', 's', '/', 'a', 'n', 'n', 'o', - 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', '/', 's', - 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', - '!', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', 'a', 't', - 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', - 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', - 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', - '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', - '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', - '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', - 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', - 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', - 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', - '\"', '\262', '\004', '\n', '\004', 'R', 'B', 'A', 'C', '\022', 'I', '\n', - '\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', - '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', - 'R', 'B', 'A', 'C', 'B', '\027', '\362', '\230', '\376', '\217', '\005', '\021', - '\022', '\017', 'r', 'u', 'l', 'e', 's', '_', 's', 'p', 'e', 'c', - 'i', 'f', 'i', 'e', 'r', 'R', '\005', 'r', 'u', 'l', 'e', 's', - '\022', '*', '\n', '\021', 'r', 'u', 'l', 'e', 's', '_', 's', 't', - 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\006', ' ', - '\001', '(', '\t', 'R', '\017', 'r', 'u', 'l', 'e', 's', 'S', 't', - 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'O', '\n', '\007', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\004', ' ', '\001', '(', - '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', - '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', - 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\027', '\362', '\230', '\376', - '\217', '\005', '\021', '\022', '\017', 'r', 'u', 'l', 'e', 's', '_', 's', - 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\007', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '\022', ']', '\n', '\014', 's', 'h', 'a', - 'd', 'o', 'w', '_', 'r', 'u', 'l', 'e', 's', '\030', '\002', ' ', + 't', 'o', '\032', '!', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', + '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't', + 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', + 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', + 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', + 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', + 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', + 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', + 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', + 'o', 't', 'o', '\"', '\252', '\004', '\n', '\004', 'R', 'B', 'A', 'C', + '\022', 'I', '\n', '\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', - 'v', '3', '.', 'R', 'B', 'A', 'C', 'B', '\036', '\362', '\230', '\376', - '\217', '\005', '\030', '\022', '\026', 's', 'h', 'a', 'd', 'o', 'w', '_', - 'r', 'u', 'l', 'e', 's', '_', 's', 'p', 'e', 'c', 'i', 'f', - 'i', 'e', 'r', 'R', '\013', 's', 'h', 'a', 'd', 'o', 'w', 'R', - 'u', 'l', 'e', 's', '\022', 'k', '\n', '\016', 's', 'h', 'a', 'd', - 'o', 'w', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\005', + 'v', '3', '.', 'R', 'B', 'A', 'C', 'B', '\027', '\362', '\230', '\376', + '\217', '\005', '\021', '\022', '\017', 'r', 'u', 'l', 'e', 's', '_', 's', + 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\005', 'r', 'u', + 'l', 'e', 's', '\022', '*', '\n', '\021', 'r', 'u', 'l', 'e', 's', + '_', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', + '\030', '\006', ' ', '\001', '(', '\t', 'R', '\017', 'r', 'u', 'l', 'e', + 's', 'S', 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', + 'O', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '&', + 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\027', + '\362', '\230', '\376', '\217', '\005', '\021', '\022', '\017', 'r', 'u', 'l', 'e', + 's', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', + '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', ']', '\n', '\014', + 's', 'h', 'a', 'd', 'o', 'w', '_', 'r', 'u', 'l', 'e', 's', + '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', + 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', 'B', '\036', '\362', '\230', '\376', '\217', '\005', '\030', '\022', '\026', 's', 'h', 'a', 'd', 'o', 'w', '_', 'r', 'u', 'l', 'e', 's', '_', 's', 'p', 'e', - 'c', 'i', 'f', 'i', 'e', 'r', '\322', '\306', '\244', '\341', '\006', '\002', - '\010', '\001', 'R', '\r', 's', 'h', 'a', 'd', 'o', 'w', 'M', 'a', - 't', 'c', 'h', 'e', 'r', '\022', '7', '\n', '\030', 's', 'h', 'a', - 'd', 'o', 'w', '_', 'r', 'u', 'l', 'e', 's', '_', 's', 't', - 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\003', ' ', - '\001', '(', '\t', 'R', '\025', 's', 'h', 'a', 'd', 'o', 'w', 'R', - 'u', 'l', 'e', 's', 'S', 't', 'a', 't', 'P', 'r', 'e', 'f', - 'i', 'x', '\022', '/', '\n', '\024', 't', 'r', 'a', 'c', 'k', '_', - 'p', 'e', 'r', '_', 'r', 'u', 'l', 'e', '_', 's', 't', 'a', - 't', 's', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\021', 't', 'r', - 'a', 'c', 'k', 'P', 'e', 'r', 'R', 'u', 'l', 'e', 'S', 't', - 'a', 't', 's', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'h', 't', 't', 'p', - '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'R', 'B', 'A', - 'C', '\"', '\213', '\001', '\n', '\014', 'R', 'B', 'A', 'C', 'P', 'e', - 'r', 'R', 'o', 'u', 't', 'e', '\022', '?', '\n', '\004', 'r', 'b', - 'a', 'c', '\030', '\002', ' ', '\001', '(', '\013', '2', '+', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', - 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', - '.', 'R', 'B', 'A', 'C', 'R', '\004', 'r', 'b', 'a', 'c', ':', - '4', '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', - 't', 'e', 'r', '.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', - 'c', '.', 'v', '2', '.', 'R', 'B', 'A', 'C', 'P', 'e', 'r', - 'R', 'o', 'u', 't', 'e', 'J', '\004', '\010', '\001', '\020', '\002', 'B', - '\237', '\001', '\n', '3', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', - 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\013', 's', 'h', 'a', 'd', + 'o', 'w', 'R', 'u', 'l', 'e', 's', '\022', 'c', '\n', '\016', 's', + 'h', 'a', 'd', 'o', 'w', '_', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', + 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', + 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', + 'r', 'B', '\036', '\362', '\230', '\376', '\217', '\005', '\030', '\022', '\026', 's', + 'h', 'a', 'd', 'o', 'w', '_', 'r', 'u', 'l', 'e', 's', '_', + 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\r', 's', + 'h', 'a', 'd', 'o', 'w', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '\022', '7', '\n', '\030', 's', 'h', 'a', 'd', 'o', 'w', '_', 'r', + 'u', 'l', 'e', 's', '_', 's', 't', 'a', 't', '_', 'p', 'r', + 'e', 'f', 'i', 'x', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\025', + 's', 'h', 'a', 'd', 'o', 'w', 'R', 'u', 'l', 'e', 's', 'S', + 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', '/', '\n', + '\024', 't', 'r', 'a', 'c', 'k', '_', 'p', 'e', 'r', '_', 'r', + 'u', 'l', 'e', '_', 's', 't', 'a', 't', 's', '\030', '\007', ' ', + '\001', '(', '\010', 'R', '\021', 't', 'r', 'a', 'c', 'k', 'P', 'e', + 'r', 'R', 'u', 'l', 'e', 'S', 't', 'a', 't', 's', ':', ',', + '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', + 'e', 'r', '.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', + '.', 'v', '2', '.', 'R', 'B', 'A', 'C', '\"', '\213', '\001', '\n', + '\014', 'R', 'B', 'A', 'C', 'P', 'e', 'r', 'R', 'o', 'u', 't', + 'e', '\022', '?', '\n', '\004', 'r', 'b', 'a', 'c', '\030', '\002', ' ', + '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'h', 't', 't', 'p', '.', - 'r', 'b', 'a', 'c', '.', 'v', '3', 'B', '\t', 'R', 'b', 'a', - 'c', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'S', 'g', 'i', - 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', - 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', - 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', - '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', - 's', '/', 'h', 't', 't', 'p', '/', 'r', 'b', 'a', 'c', '/', - 'v', '3', ';', 'r', 'b', 'a', 'c', 'v', '3', '\272', '\200', '\310', - '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', - '3', + 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', + 'R', '\004', 'r', 'b', 'a', 'c', ':', '4', '\232', '\305', '\210', '\036', + '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'h', + 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', + 'R', 'B', 'A', 'C', 'P', 'e', 'r', 'R', 'o', 'u', 't', 'e', + 'J', '\004', '\010', '\001', '\020', '\002', 'B', '\237', '\001', '\n', '3', 'i', + 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', + 's', '.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', + 'v', '3', 'B', '\t', 'R', 'b', 'a', 'c', 'P', 'r', 'o', 't', + 'o', 'P', '\001', 'Z', 'S', 'g', 'i', 't', 'h', 'u', 'b', '.', + 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', + 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', + 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'h', 't', 't', + 'p', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', ';', 'r', 'b', + 'a', 'c', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', + 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[7] = { +static _upb_DefPool_Init *deps[6] = { &envoy_config_rbac_v3_rbac_proto_upbdefinit, - &xds_annotations_v3_status_proto_upbdefinit, &xds_type_matcher_v3_matcher_proto_upbdefinit, &udpa_annotations_migrate_proto_upbdefinit, &udpa_annotations_status_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c index eeed0076235..72c61104db6 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c @@ -15,7 +15,7 @@ extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[757] = { +static const char descriptor[791] = { '\n', 'H', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'h', 't', 't', 'p', '/', 's', 't', 'a', 't', @@ -34,52 +34,54 @@ static const char descriptor[757] = { 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', - 'o', 't', 'o', '\"', 'z', '\n', '\017', 'S', 't', 'a', 't', 'e', - 'f', 'u', 'l', 'S', 'e', 's', 's', 'i', 'o', 'n', '\022', 'O', - '\n', '\r', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 's', 't', - 'a', 't', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', - 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', - 'o', 'n', 'f', 'i', 'g', 'R', '\014', 's', 'e', 's', 's', 'i', - 'o', 'n', 'S', 't', 'a', 't', 'e', '\022', '\026', '\n', '\006', 's', - 't', 'r', 'i', 'c', 't', '\030', '\002', ' ', '\001', '(', '\010', 'R', - '\006', 's', 't', 'r', 'i', 'c', 't', '\"', '\302', '\001', '\n', '\027', - 'S', 't', 'a', 't', 'e', 'f', 'u', 'l', 'S', 'e', 's', 's', - 'i', 'o', 'n', 'P', 'e', 'r', 'R', 'o', 'u', 't', 'e', '\022', - '%', '\n', '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', '\030', - '\001', ' ', '\001', '(', '\010', 'B', '\007', '\372', 'B', '\004', 'j', '\002', - '\010', '\001', 'H', '\000', 'R', '\010', 'd', 'i', 's', 'a', 'b', 'l', - 'e', 'd', '\022', 'o', '\n', '\020', 's', 't', 'a', 't', 'e', 'f', - 'u', 'l', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '\030', '\002', - ' ', '\001', '(', '\013', '2', 'B', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'h', 't', 't', 'p', - '.', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', '_', 's', 'e', - 's', 's', 'i', 'o', 'n', '.', 'v', '3', '.', 'S', 't', 'a', - 't', 'e', 'f', 'u', 'l', 'S', 'e', 's', 's', 'i', 'o', 'n', - 'H', '\000', 'R', '\017', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', - 'S', 'e', 's', 's', 'i', 'o', 'n', 'B', '\017', '\n', '\010', 'o', - 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\022', '\003', '\370', 'B', '\001', - 'B', '\316', '\001', '\n', '?', 'i', 'o', '.', 'e', 'n', 'v', 'o', - 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'h', 't', 't', 'p', - '.', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', '_', 's', 'e', - 's', 's', 'i', 'o', 'n', '.', 'v', '3', 'B', '\024', 'S', 't', + 'o', 't', 'o', '\"', '\233', '\001', '\n', '\017', 'S', 't', 'a', 't', + 'e', 'f', 'u', 'l', 'S', 'e', 's', 's', 'i', 'o', 'n', '\022', + 'O', '\n', '\r', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 's', + 't', 'a', 't', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', + 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\014', 's', 'e', 's', 's', + 'i', 'o', 'n', 'S', 't', 'a', 't', 'e', '\022', '\026', '\n', '\006', + 's', 't', 'r', 'i', 'c', 't', '\030', '\002', ' ', '\001', '(', '\010', + 'R', '\006', 's', 't', 'r', 'i', 'c', 't', '\022', '\037', '\n', '\013', + 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', + '\003', ' ', '\001', '(', '\t', 'R', '\n', 's', 't', 'a', 't', 'P', + 'r', 'e', 'f', 'i', 'x', '\"', '\302', '\001', '\n', '\027', 'S', 't', 'a', 't', 'e', 'f', 'u', 'l', 'S', 'e', 's', 's', 'i', 'o', - 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'k', 'g', 'i', - 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', - 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', - 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', - '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', - 's', '/', 'h', 't', 't', 'p', '/', 's', 't', 'a', 't', 'e', - 'f', 'u', 'l', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '/', - 'v', '3', ';', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', '_', - 's', 'e', 's', 's', 'i', 'o', 'n', 'v', '3', '\272', '\200', '\310', - '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', - '3', + 'n', 'P', 'e', 'r', 'R', 'o', 'u', 't', 'e', '\022', '%', '\n', + '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', '\030', '\001', ' ', + '\001', '(', '\010', 'B', '\007', '\372', 'B', '\004', 'j', '\002', '\010', '\001', + 'H', '\000', 'R', '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', + '\022', 'o', '\n', '\020', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', + '_', 's', 'e', 's', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\001', + '(', '\013', '2', 'B', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', + 'l', 't', 'e', 'r', 's', '.', 'h', 't', 't', 'p', '.', 's', + 't', 'a', 't', 'e', 'f', 'u', 'l', '_', 's', 'e', 's', 's', + 'i', 'o', 'n', '.', 'v', '3', '.', 'S', 't', 'a', 't', 'e', + 'f', 'u', 'l', 'S', 'e', 's', 's', 'i', 'o', 'n', 'H', '\000', + 'R', '\017', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', 'S', 'e', + 's', 's', 'i', 'o', 'n', 'B', '\017', '\n', '\010', 'o', 'v', 'e', + 'r', 'r', 'i', 'd', 'e', '\022', '\003', '\370', 'B', '\001', 'B', '\316', + '\001', '\n', '?', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', + 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', + 'l', 't', 'e', 'r', 's', '.', 'h', 't', 't', 'p', '.', 's', + 't', 'a', 't', 'e', 'f', 'u', 'l', '_', 's', 'e', 's', 's', + 'i', 'o', 'n', '.', 'v', '3', 'B', '\024', 'S', 't', 'a', 't', + 'e', 'f', 'u', 'l', 'S', 'e', 's', 's', 'i', 'o', 'n', 'P', + 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'k', 'g', 'i', 't', 'h', + 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', + 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', + 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', + 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', + 'h', 't', 't', 'p', '/', 's', 't', 'a', 't', 'e', 'f', 'u', + 'l', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '/', 'v', '3', + ';', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', '_', 's', 'e', + 's', 's', 'i', 'o', 'n', 'v', '3', '\272', '\200', '\310', '\321', '\006', + '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[4] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c index 61d26708bbd..abef2185395 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c @@ -27,6 +27,7 @@ extern _upb_DefPool_Init envoy_type_v3_percent_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_any_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; +extern _upb_DefPool_Init xds_type_matcher_v3_matcher_proto_upbdefinit; extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_security_proto_upbdefinit; @@ -34,7 +35,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[13566] = { +static const char descriptor[14222] = { '\n', 'Y', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'n', 'e', 't', 'w', 'o', 'r', 'k', '/', 'h', @@ -98,952 +99,983 @@ static const char descriptor[13566] = { 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', - 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', - 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', - 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', - 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 'e', 'c', 'u', - 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', - 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', - 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', - 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', - 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', - 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\"', '\236', 'B', '\n', '\025', 'H', 't', - 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', - 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', '\205', '\001', '\n', '\n', - 'c', 'o', 'd', 'e', 'c', '_', 't', 'y', 'p', 'e', '\030', '\001', - ' ', '\001', '(', '\016', '2', '\\', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', - 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', - 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', - 'a', 'g', 'e', 'r', '.', 'C', 'o', 'd', 'e', 'c', 'T', 'y', - 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', - 'R', '\t', 'c', 'o', 'd', 'e', 'c', 'T', 'y', 'p', 'e', '\022', - '(', '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', - 'i', 'x', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', - '\004', 'r', '\002', '\020', '\001', 'R', '\n', 's', 't', 'a', 't', 'P', - 'r', 'e', 'f', 'i', 'x', '\022', 'T', '\n', '\003', 'r', 'd', 's', - '\030', '\003', ' ', '\001', '(', '\013', '2', '@', '.', 'e', 'n', 'v', + 'r', 'o', 't', 'o', '\032', '!', 'x', 'd', 's', '/', 't', 'y', + 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', + '3', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', + 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', + 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', + 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', + 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', + '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', + 'a', 't', 'i', 'o', 'n', 's', '/', 's', 'e', 'c', 'u', 'r', + 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', + 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', + 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', + 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', + 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', + 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', + 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', + 'r', 'o', 't', 'o', '\"', '\225', 'G', '\n', '\025', 'H', 't', 't', + 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', + 'a', 'n', 'a', 'g', 'e', 'r', '\022', '\205', '\001', '\n', '\n', 'c', + 'o', 'd', 'e', 'c', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', + '\001', '(', '\016', '2', '\\', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', + 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', + 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', + 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', + 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', + 'g', 'e', 'r', '.', 'C', 'o', 'd', 'e', 'c', 'T', 'y', 'p', + 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', + '\t', 'c', 'o', 'd', 'e', 'c', 'T', 'y', 'p', 'e', '\022', '(', + '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', + 'x', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', + 'r', '\002', '\020', '\001', 'R', '\n', 's', 't', 'a', 't', 'P', 'r', + 'e', 'f', 'i', 'x', '\022', 'T', '\n', '\003', 'r', 'd', 's', '\030', + '\003', ' ', '\001', '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', + 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'R', 'd', 's', 'H', + '\000', 'R', '\003', 'r', 'd', 's', '\022', 'N', '\n', '\014', 'r', 'o', + 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', + ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'C', 'o', + 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'H', + '\000', 'R', '\013', 'r', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', 'p', '\n', '\r', 's', 'c', 'o', 'p', 'e', 'd', + '_', 'r', 'o', 'u', 't', 'e', 's', '\030', '\037', ' ', '\001', '(', + '\013', '2', 'I', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', + 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', + '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', + 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', + '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', + 'u', 't', 'e', 's', 'H', '\000', 'R', '\014', 's', 'c', 'o', 'p', + 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '\022', 'j', '\n', '\014', + 'h', 't', 't', 'p', '_', 'f', 'i', 'l', 't', 'e', 'r', 's', + '\030', '\005', ' ', '\003', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', - 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'R', 'd', 's', - 'H', '\000', 'R', '\003', 'r', 'd', 's', '\022', 'N', '\n', '\014', 'r', - 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', - '\004', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', - 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'C', - 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', - 'H', '\000', 'R', '\013', 'r', 'o', 'u', 't', 'e', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'p', '\n', '\r', 's', 'c', 'o', 'p', 'e', - 'd', '_', 'r', 'o', 'u', 't', 'e', 's', '\030', '\037', ' ', '\001', - '(', '\013', '2', 'I', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', - 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', - 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', - 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', - 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', - 'r', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', - 'o', 'u', 't', 'e', 's', 'H', '\000', 'R', '\014', 's', 'c', 'o', - 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '\022', 'j', '\n', - '\014', 'h', 't', 't', 'p', '_', 'f', 'i', 'l', 't', 'e', 'r', - 's', '\030', '\005', ' ', '\003', '(', '\013', '2', 'G', '.', 'e', 'n', + 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', + 'p', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\013', 'h', 't', 't', + 'p', 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', '@', '\n', '\016', + 'a', 'd', 'd', '_', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', + 'n', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', + 'R', '\014', 'a', 'd', 'd', 'U', 's', 'e', 'r', 'A', 'g', 'e', + 'n', 't', '\022', 't', '\n', '\007', 't', 'r', 'a', 'c', 'i', 'n', + 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', 'Z', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', - 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\013', 'h', 't', - 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', '@', '\n', - '\016', 'a', 'd', 'd', '_', 'u', 's', 'e', 'r', '_', 'a', 'g', - 'e', 'n', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', - 'e', 'R', '\014', 'a', 'd', 'd', 'U', 's', 'e', 'r', 'A', 'g', - 'e', 'n', 't', '\022', 't', '\n', '\007', 't', 'r', 'a', 'c', 'i', - 'n', 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', 'Z', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', - 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', - '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', - 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', - 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'T', 'r', 'a', - 'c', 'i', 'n', 'g', 'R', '\007', 't', 'r', 'a', 'c', 'i', 'n', - 'g', '\022', 's', '\n', '\034', 'c', 'o', 'm', 'm', 'o', 'n', '_', - 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', - 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '#', ' ', - '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\007', - '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\031', 'c', 'o', 'm', - 'm', 'o', 'n', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'J', - '\n', '\"', 'h', 't', 't', 'p', '1', '_', 's', 'a', 'f', 'e', - '_', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', - '\030', ':', ' ', '\001', '(', '\010', 'R', '\036', 'h', 't', 't', 'p', - '1', 'S', 'a', 'f', 'e', 'M', 'a', 'x', 'C', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', 'D', 'u', 'r', 'a', 't', 'i', - 'o', 'n', '\022', '^', '\n', '\025', 'h', 't', 't', 'p', '_', 'p', - 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', - 'o', 'n', 's', '\030', '\010', ' ', '\001', '(', '\013', '2', '*', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', - 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', - 't', 'i', 'o', 'n', 's', 'R', '\023', 'h', 't', 't', 'p', 'P', - 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', '\022', 'i', '\n', '\026', 'h', 't', 't', 'p', '2', '_', - 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', - 'i', 'o', 'n', 's', '\030', '\t', ' ', '\001', '(', '\013', '2', '*', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', - 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', - 'p', 't', 'i', 'o', 'n', 's', 'B', '\007', '\212', '\223', '\267', '*', - '\002', '\010', '\001', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', + 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'T', 'r', 'a', 'c', + 'i', 'n', 'g', 'R', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', + '\022', 's', '\n', '\034', 'c', 'o', 'm', 'm', 'o', 'n', '_', 'h', + 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', + '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '#', ' ', '\001', + '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\007', '\212', + '\223', '\267', '*', '\002', '\010', '\001', 'R', '\031', 'c', 'o', 'm', 'm', + 'o', 'n', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'J', '\n', + '\"', 'h', 't', 't', 'p', '1', '_', 's', 'a', 'f', 'e', '_', + 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', + ':', ' ', '\001', '(', '\010', 'R', '\036', 'h', 't', 't', 'p', '1', + 'S', 'a', 'f', 'e', 'M', 'a', 'x', 'C', 'o', 'n', 'n', 'e', + 'c', 't', 'i', 'o', 'n', 'D', 'u', 'r', 'a', 't', 'i', 'o', + 'n', '\022', '^', '\n', '\025', 'h', 't', 't', 'p', '_', 'p', 'r', + 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', + 'n', 's', '\030', '\010', ' ', '\001', '(', '\013', '2', '*', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', + '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', 'R', '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', - 's', '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '3', '_', 'p', + 's', '\022', 'i', '\n', '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', - 'o', 'n', 's', '\030', ',', ' ', '\001', '(', '\013', '2', '*', '.', + 'o', 'n', 's', '\030', '\t', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', - 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', - 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', 't', 'p', '3', - 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', - 'o', 'n', 's', '\022', ',', '\n', '\013', 's', 'e', 'r', 'v', 'e', - 'r', '_', 'n', 'a', 'm', 'e', '\030', '\n', ' ', '\001', '(', '\t', - 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', - '\000', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'N', 'a', 'm', - 'e', '\022', '\271', '\001', '\n', '\034', 's', 'e', 'r', 'v', 'e', 'r', - '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 't', 'r', 'a', 'n', - 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '\"', - ' ', '\001', '(', '\016', '2', 'm', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', - 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', - 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', - 'a', 'g', 'e', 'r', '.', 'S', 'e', 'r', 'v', 'e', 'r', 'H', - 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', - 'r', 'm', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', - '\202', '\001', '\002', '\020', '\001', 'R', '\032', 's', 'e', 'r', 'v', 'e', - 'r', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', - 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'r', '\n', - '\034', 's', 'c', 'h', 'e', 'm', 'e', '_', 'h', 'e', 'a', 'd', - 'e', 'r', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', - 'a', 't', 'i', 'o', 'n', '\030', '0', ' ', '\001', '(', '\013', '2', - '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', - 'c', 'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', - 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', - 'n', 'R', '\032', 's', 'c', 'h', 'e', 'm', 'e', 'H', 'e', 'a', - 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', - 'a', 't', 'i', 'o', 'n', '\022', ']', '\n', '\026', 'm', 'a', 'x', - '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', - 'd', 'e', 'r', 's', '_', 'k', 'b', '\030', '\035', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', - '*', '\005', '\030', '\200', '@', ' ', '\000', 'R', '\023', 'm', 'a', 'x', - 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', - 'r', 's', 'K', 'b', '\022', 'R', '\n', '\023', 's', 't', 'r', 'e', - 'a', 'm', '_', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', - 'o', 'u', 't', '\030', '\030', ' ', '\001', '(', '\013', '2', '\031', '.', - 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', - 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\021', 's', - 't', 'r', 'e', 'a', 'm', 'I', 'd', 'l', 'e', 'T', 'i', 'm', - 'e', 'o', 'u', 't', '\022', 'K', '\n', '\017', 'r', 'e', 'q', 'u', - 'e', 's', 't', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', - '\034', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', - 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', - 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\007', '\212', '\223', - '\267', '*', '\002', '\010', '\001', 'R', '\016', 'r', 'e', 'q', 'u', 'e', - 's', 't', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'b', '\n', - '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', - 'd', 'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', - '\030', ')', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\017', '\372', - 'B', '\005', '\252', '\001', '\002', '2', '\000', '\212', '\223', '\267', '*', '\002', - '\010', '\001', 'R', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', - 'e', 'a', 'd', 'e', 'r', 's', 'T', 'i', 'm', 'e', 'o', 'u', - 't', '\022', '>', '\n', '\r', 'd', 'r', 'a', 'i', 'n', '_', 't', - 'i', 'm', 'e', 'o', 'u', 't', '\030', '\014', ' ', '\001', '(', '\013', - '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'R', '\014', 'd', 'r', 'a', 'i', 'n', 'T', 'i', - 'm', 'e', 'o', 'u', 't', '\022', 'M', '\n', '\025', 'd', 'e', 'l', - 'a', 'y', 'e', 'd', '_', 'c', 'l', 'o', 's', 'e', '_', 't', - 'i', 'm', 'e', 'o', 'u', 't', '\030', '\032', ' ', '\001', '(', '\013', - '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', - 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', - 'i', 'o', 'n', 'R', '\023', 'd', 'e', 'l', 'a', 'y', 'e', 'd', - 'C', 'l', 'o', 's', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', - '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', - 'o', 'g', '\030', '\r', ' ', '\003', '(', '\013', '2', '$', '.', 'e', + 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', 'B', '\007', '\212', '\223', '\267', '*', '\002', + '\010', '\001', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o', + 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', + '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '3', '_', 'p', 'r', + 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', + 'n', 's', '\030', ',', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', - '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'R', '\t', - 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', '\022', 'm', '\n', - '\031', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '_', - 'f', 'l', 'u', 's', 'h', '_', 'i', 'n', 't', 'e', 'r', 'v', - 'a', 'l', '\030', '6', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', - '\027', '\030', '\001', '\372', 'B', '\t', '\252', '\001', '\006', '2', '\004', '\020', - '\300', '\204', '=', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', - 'R', '\026', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', - 'l', 'u', 's', 'h', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', - '\022', 'P', '\n', '\037', 'f', 'l', 'u', 's', 'h', '_', 'a', 'c', - 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '_', 'o', 'n', '_', - 'n', 'e', 'w', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '\030', - '7', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', - '\330', '\004', '\003', '3', '.', '0', 'R', '\032', 'f', 'l', 'u', 's', - 'h', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'O', 'n', - 'N', 'e', 'w', 'R', 'e', 'q', 'u', 'e', 's', 't', '\022', '\224', - '\001', '\n', '\022', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', - 'g', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '8', ' ', - '\001', '(', '\013', '2', 'f', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', + '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', 't', 'p', '3', 'P', + 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', + 'n', 's', '\022', ',', '\n', '\013', 's', 'e', 'r', 'v', 'e', 'r', + '_', 'n', 'a', 'm', 'e', '\030', '\n', ' ', '\001', '(', '\t', 'B', + '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', + 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'N', 'a', 'm', 'e', + '\022', '\271', '\001', '\n', '\034', 's', 'e', 'r', 'v', 'e', 'r', '_', + 'h', 'e', 'a', 'd', 'e', 'r', '_', 't', 'r', 'a', 'n', 's', + 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '\"', ' ', + '\001', '(', '\016', '2', 'm', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'H', 'c', 'm', 'A', 'c', 'c', 'e', 's', - 's', 'L', 'o', 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', - '\020', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'O', 'p', - 't', 'i', 'o', 'n', 's', '\022', 'Q', '\n', '\022', 'u', 's', 'e', - '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', - 'e', 's', 's', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.', + 'g', 'e', 'r', '.', 'S', 'e', 'r', 'v', 'e', 'r', 'H', 'e', + 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', + 'm', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', + '\001', '\002', '\020', '\001', 'R', '\032', 's', 'e', 'r', 'v', 'e', 'r', + 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', + 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'r', '\n', '\034', + 's', 'c', 'h', 'e', 'm', 'e', '_', 'h', 'e', 'a', 'd', 'e', + 'r', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', + 't', 'i', 'o', 'n', '\030', '0', ' ', '\001', '(', '\013', '2', '0', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'c', + 'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', + 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', + 'R', '\032', 's', 'c', 'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', + 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', + 't', 'i', 'o', 'n', '\022', ']', '\n', '\026', 'm', 'a', 'x', '_', + 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', + 'e', 'r', 's', '_', 'k', 'b', '\030', '\035', ' ', '\001', '(', '\013', + '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', + '2', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', '*', + '\005', '\030', '\200', '@', ' ', '\000', 'R', '\023', 'm', 'a', 'x', 'R', + 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', + 's', 'K', 'b', '\022', 'R', '\n', '\023', 's', 't', 'r', 'e', 'a', + 'm', '_', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', + 'u', 't', '\030', '\030', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', + '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\021', 's', 't', + 'r', 'e', 'a', 'm', 'I', 'd', 'l', 'e', 'T', 'i', 'm', 'e', + 'o', 'u', 't', '\022', 'K', '\n', '\024', 's', 't', 'r', 'e', 'a', + 'm', '_', 'f', 'l', 'u', 's', 'h', '_', 't', 'i', 'm', 'e', + 'o', 'u', 't', '\030', ';', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', - 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', - 'e', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\020', - 'u', 's', 'e', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', - 'r', 'e', 's', 's', '\022', '/', '\n', '\024', 'x', 'f', 'f', '_', - 'n', 'u', 'm', '_', 't', 'r', 'u', 's', 't', 'e', 'd', '_', - 'h', 'o', 'p', 's', '\030', '\023', ' ', '\001', '(', '\r', 'R', '\021', - 'x', 'f', 'f', 'N', 'u', 'm', 'T', 'r', 'u', 's', 't', 'e', - 'd', 'H', 'o', 'p', 's', '\022', 's', '\n', ' ', 'o', 'r', 'i', - 'g', 'i', 'n', 'a', 'l', '_', 'i', 'p', '_', 'd', 'e', 't', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '\030', '.', ' ', '\003', '(', '\013', '2', - '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', - 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\035', 'o', 'r', 'i', - 'g', 'i', 'n', 'a', 'l', 'I', 'p', 'D', 'e', 't', 'e', 'c', - 't', 'i', 'o', 'n', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 's', '\022', 's', '\n', ' ', 'e', 'a', 'r', 'l', 'y', '_', - 'h', 'e', 'a', 'd', 'e', 'r', '_', 'm', 'u', 't', 'a', 't', - 'i', 'o', 'n', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 's', '\030', '4', ' ', '\003', '(', '\013', '2', '*', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', - 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', - 'n', 'f', 'i', 'g', 'R', '\035', 'e', 'a', 'r', 'l', 'y', 'H', - 'e', 'a', 'd', 'e', 'r', 'M', 'u', 't', 'a', 't', 'i', 'o', - 'n', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\022', - '\240', '\001', '\n', '\027', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', - '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'c', 'o', 'n', - 'f', 'i', 'g', '\030', '\031', ' ', '\001', '(', '\013', '2', 'h', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', - 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', - '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', - 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', - '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', - 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', - 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'I', 'n', - 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', - 's', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\025', 'i', 'n', 't', - 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', '&', '\n', '\017', 's', 'k', - 'i', 'p', '_', 'x', 'f', 'f', '_', 'a', 'p', 'p', 'e', 'n', - 'd', '\030', '\025', ' ', '\001', '(', '\010', 'R', '\r', 's', 'k', 'i', - 'p', 'X', 'f', 'f', 'A', 'p', 'p', 'e', 'n', 'd', '\022', '\035', - '\n', '\003', 'v', 'i', 'a', '\030', '\026', ' ', '\001', '(', '\t', 'B', - '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', - 'R', '\003', 'v', 'i', 'a', '\022', 'J', '\n', '\023', 'g', 'e', 'n', - 'e', 'r', 'a', 't', 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', - 't', '_', 'i', 'd', '\030', '\017', ' ', '\001', '(', '\013', '2', '\032', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', - 'u', 'e', 'R', '\021', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', - 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'd', '\022', '?', '\n', - '\034', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e', '_', 'e', 'x', - 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'q', 'u', 'e', - 's', 't', '_', 'i', 'd', '\030', ' ', ' ', '\001', '(', '\010', 'R', - '\031', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e', 'E', 'x', 't', - 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', 't', - 'I', 'd', '\022', 'G', '\n', '!', 'a', 'l', 'w', 'a', 'y', 's', - '_', 's', 'e', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', - '_', 'i', 'd', '_', 'i', 'n', '_', 'r', 'e', 's', 'p', 'o', - 'n', 's', 'e', '\030', '%', ' ', '\001', '(', '\010', 'R', '\034', 'a', - 'l', 'w', 'a', 'y', 's', 'S', 'e', 't', 'R', 'e', 'q', 'u', - 'e', 's', 't', 'I', 'd', 'I', 'n', 'R', 'e', 's', 'p', 'o', - 'n', 's', 'e', '\022', '\264', '\001', '\n', '\033', 'f', 'o', 'r', 'w', - 'a', 'r', 'd', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', - 'e', 'r', 't', '_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', - '\020', ' ', '\001', '(', '\016', '2', 'k', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', - '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', - 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', - 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', - 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', - 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', - 'n', 'a', 'g', 'e', 'r', '.', 'F', 'o', 'r', 'w', 'a', 'r', - 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', - 'e', 't', 'a', 'i', 'l', 's', 'B', '\010', '\372', 'B', '\005', '\202', - '\001', '\002', '\020', '\001', 'R', '\030', 'f', 'o', 'r', 'w', 'a', 'r', - 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', - 'e', 't', 'a', 'i', 'l', 's', '\022', '\264', '\001', '\n', '\037', 's', - 'e', 't', '_', 'c', 'u', 'r', 'r', 'e', 'n', 't', '_', 'c', - 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't', '_', 'd', - 'e', 't', 'a', 'i', 'l', 's', '\030', '\021', ' ', '\001', '(', '\013', - '2', 'n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', - 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', - 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', - 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', - 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', - '.', 'S', 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', - 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', - 'a', 'i', 'l', 's', 'R', '\033', 's', 'e', 't', 'C', 'u', 'r', - 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', - 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', ',', '\n', - '\022', 'p', 'r', 'o', 'x', 'y', '_', '1', '0', '0', '_', 'c', - 'o', 'n', 't', 'i', 'n', 'u', 'e', '\030', '\022', ' ', '\001', '(', - '\010', 'R', '\020', 'p', 'r', 'o', 'x', 'y', '1', '0', '0', 'C', - 'o', 'n', 't', 'i', 'n', 'u', 'e', '\022', 'e', '\n', '1', 'r', - 'e', 'p', 'r', 'e', 's', 'e', 'n', 't', '_', 'i', 'p', 'v', - '4', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', - 'r', 'e', 's', 's', '_', 'a', 's', '_', 'i', 'p', 'v', '4', - '_', 'm', 'a', 'p', 'p', 'e', 'd', '_', 'i', 'p', 'v', '6', - '\030', '\024', ' ', '\001', '(', '\010', 'R', '*', 'r', 'e', 'p', 'r', - 'e', 's', 'e', 'n', 't', 'I', 'p', 'v', '4', 'R', 'e', 'm', - 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'A', 's', - 'I', 'p', 'v', '4', 'M', 'a', 'p', 'p', 'e', 'd', 'I', 'p', - 'v', '6', '\022', '\211', '\001', '\n', '\017', 'u', 'p', 'g', 'r', 'a', - 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\027', - ' ', '\003', '(', '\013', '2', '`', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', - 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', - 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', - 'a', 'g', 'e', 'r', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', - 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'u', 'p', 'g', 'r', - 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', 'A', - '\n', '\016', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'e', '_', - 'p', 'a', 't', 'h', '\030', '\036', ' ', '\001', '(', '\013', '2', '\032', + 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', + 'R', '\022', 's', 't', 'r', 'e', 'a', 'm', 'F', 'l', 'u', 's', + 'h', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'K', '\n', '\017', + 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 't', 'i', 'm', 'e', + 'o', 'u', 't', '\030', '\034', ' ', '\001', '(', '\013', '2', '\031', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', + 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\016', 'r', + 'e', 'q', 'u', 'e', 's', 't', 'T', 'i', 'm', 'e', 'o', 'u', + 't', '\022', 'b', '\n', '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', + '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'i', 'm', + 'e', 'o', 'u', 't', '\030', ')', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', - 'u', 'e', 'R', '\r', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', - 'e', 'P', 'a', 't', 'h', '\022', '#', '\n', '\r', 'm', 'e', 'r', - 'g', 'e', '_', 's', 'l', 'a', 's', 'h', 'e', 's', '\030', '!', - ' ', '\001', '(', '\010', 'R', '\014', 'm', 'e', 'r', 'g', 'e', 'S', - 'l', 'a', 's', 'h', 'e', 's', '\022', '\267', '\001', '\n', ' ', 'p', - 'a', 't', 'h', '_', 'w', 'i', 't', 'h', '_', 'e', 's', 'c', - 'a', 'p', 'e', 'd', '_', 's', 'l', 'a', 's', 'h', 'e', 's', - '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '-', ' ', '\001', '(', - '\016', '2', 'o', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', + 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', + 'n', 'B', '\017', '\372', 'B', '\005', '\252', '\001', '\002', '2', '\000', '\212', + '\223', '\267', '*', '\002', '\010', '\001', 'R', '\025', 'r', 'e', 'q', 'u', + 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'i', + 'm', 'e', 'o', 'u', 't', '\022', '>', '\n', '\r', 'd', 'r', 'a', + 'i', 'n', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\014', + ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', + 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\014', 'd', 'r', 'a', + 'i', 'n', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'M', '\n', + '\025', 'd', 'e', 'l', 'a', 'y', 'e', 'd', '_', 'c', 'l', 'o', + 's', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\032', + ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', + 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', + 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\023', 'd', 'e', 'l', + 'a', 'y', 'e', 'd', 'C', 'l', 'o', 's', 'e', 'T', 'i', 'm', + 'e', 'o', 'u', 't', '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', + 's', 's', '_', 'l', 'o', 'g', '\030', '\r', ' ', '\003', '(', '\013', + '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', + 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', + 'o', 'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', + 'g', '\022', 'm', '\n', '\031', 'a', 'c', 'c', 'e', 's', 's', '_', + 'l', 'o', 'g', '_', 'f', 'l', 'u', 's', 'h', '_', 'i', 'n', + 't', 'e', 'r', 'v', 'a', 'l', '\030', '6', ' ', '\001', '(', '\013', + '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', + 'i', 'o', 'n', 'B', '\027', '\030', '\001', '\372', 'B', '\t', '\252', '\001', + '\006', '2', '\004', '\020', '\300', '\204', '=', '\222', '\307', '\206', '\330', '\004', + '\003', '3', '.', '0', 'R', '\026', 'a', 'c', 'c', 'e', 's', 's', + 'L', 'o', 'g', 'F', 'l', 'u', 's', 'h', 'I', 'n', 't', 'e', + 'r', 'v', 'a', 'l', '\022', 'P', '\n', '\037', 'f', 'l', 'u', 's', + 'h', '_', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', + '_', 'o', 'n', '_', 'n', 'e', 'w', '_', 'r', 'e', 'q', 'u', + 'e', 's', 't', '\030', '7', ' ', '\001', '(', '\010', 'B', '\013', '\030', + '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\032', + 'f', 'l', 'u', 's', 'h', 'A', 'c', 'c', 'e', 's', 's', 'L', + 'o', 'g', 'O', 'n', 'N', 'e', 'w', 'R', 'e', 'q', 'u', 'e', + 's', 't', '\022', '\224', '\001', '\n', '\022', 'a', 'c', 'c', 'e', 's', + 's', '_', 'l', 'o', 'g', '_', 'o', 'p', 't', 'i', 'o', 'n', + 's', '\030', '8', ' ', '\001', '(', '\013', '2', 'f', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', + 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', + 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', + 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', + 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'H', 'c', 'm', 'A', + 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'O', 'p', 't', 'i', + 'o', 'n', 's', 'R', '\020', 'a', 'c', 'c', 'e', 's', 's', 'L', + 'o', 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'Q', '\n', + '\022', 'u', 's', 'e', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', + 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\016', ' ', '\001', '(', + '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', + 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\212', '\223', '\267', '*', '\002', + '\010', '\001', 'R', '\020', 'u', 's', 'e', 'R', 'e', 'm', 'o', 't', + 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', '/', '\n', '\024', + 'x', 'f', 'f', '_', 'n', 'u', 'm', '_', 't', 'r', 'u', 's', + 't', 'e', 'd', '_', 'h', 'o', 'p', 's', '\030', '\023', ' ', '\001', + '(', '\r', 'R', '\021', 'x', 'f', 'f', 'N', 'u', 'm', 'T', 'r', + 'u', 's', 't', 'e', 'd', 'H', 'o', 'p', 's', '\022', 's', '\n', + ' ', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', '_', 'i', 'p', + '_', 'd', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '_', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\030', '.', ' ', + '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', + '\035', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'I', 'p', 'D', + 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', 'E', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 's', '\022', 's', '\n', ' ', 'e', 'a', + 'r', 'l', 'y', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'm', + 'u', 't', 'a', 't', 'i', 'o', 'n', '_', 'e', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 's', '\030', '4', ' ', '\003', '(', '\013', + '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\035', 'e', 'a', + 'r', 'l', 'y', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'u', 't', + 'a', 't', 'i', 'o', 'n', 'E', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '\022', '\240', '\001', '\n', '\027', 'i', 'n', 't', 'e', + 'r', 'n', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', + '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\031', ' ', '\001', '(', + '\013', '2', 'h', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', - 'r', '.', 'P', 'a', 't', 'h', 'W', 'i', 't', 'h', 'E', 's', - 'c', 'a', 'p', 'e', 'd', 'S', 'l', 'a', 's', 'h', 'e', 's', - 'A', 'c', 't', 'i', 'o', 'n', 'R', '\034', 'p', 'a', 't', 'h', - 'W', 'i', 't', 'h', 'E', 's', 'c', 'a', 'p', 'e', 'd', 'S', - 'l', 'a', 's', 'h', 'e', 's', 'A', 'c', 't', 'i', 'o', 'n', - '\022', '\201', '\001', '\n', '\024', 'r', 'e', 'q', 'u', 'e', 's', 't', - '_', 'i', 'd', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', '\030', '$', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', - 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', - 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', - 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', - 'q', 'u', 'e', 's', 't', 'I', 'D', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'R', '\022', 'r', 'e', 'q', 'u', 'e', 's', - 't', 'I', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - '\022', '{', '\n', '\022', 'l', 'o', 'c', 'a', 'l', '_', 'r', 'e', - 'p', 'l', 'y', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '&', - ' ', '\001', '(', '\013', '2', 'M', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', - 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'c', 'a', 'l', - 'R', 'e', 'p', 'l', 'y', 'C', 'o', 'n', 'f', 'i', 'g', 'R', - '\020', 'l', 'o', 'c', 'a', 'l', 'R', 'e', 'p', 'l', 'y', 'C', - 'o', 'n', 'f', 'i', 'g', '\022', 'P', '\n', '\030', 's', 't', 'r', - 'i', 'p', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '_', - 'h', 'o', 's', 't', '_', 'p', 'o', 'r', 't', '\030', '\'', ' ', - '\001', '(', '\010', 'B', '\027', '\362', '\230', '\376', '\217', '\005', '\021', '\022', - '\017', 's', 't', 'r', 'i', 'p', '_', 'p', 'o', 'r', 't', '_', - 'm', 'o', 'd', 'e', 'R', '\025', 's', 't', 'r', 'i', 'p', 'M', - 'a', 't', 'c', 'h', 'i', 'n', 'g', 'H', 'o', 's', 't', 'P', - 'o', 'r', 't', '\022', '/', '\n', '\023', 's', 't', 'r', 'i', 'p', - '_', 'a', 'n', 'y', '_', 'h', 'o', 's', 't', '_', 'p', 'o', - 'r', 't', '\030', '*', ' ', '\001', '(', '\010', 'H', '\001', 'R', '\020', - 's', 't', 'r', 'i', 'p', 'A', 'n', 'y', 'H', 'o', 's', 't', - 'P', 'o', 'r', 't', '\022', 'i', '\n', '$', 's', 't', 'r', 'e', - 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', - 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p', - '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '(', ' ', '\001', + 'r', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', + 'd', 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'R', + '\025', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', + 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '&', + '\n', '\017', 's', 'k', 'i', 'p', '_', 'x', 'f', 'f', '_', 'a', + 'p', 'p', 'e', 'n', 'd', '\030', '\025', ' ', '\001', '(', '\010', 'R', + '\r', 's', 'k', 'i', 'p', 'X', 'f', 'f', 'A', 'p', 'p', 'e', + 'n', 'd', '\022', '\035', '\n', '\003', 'v', 'i', 'a', '\030', '\026', ' ', + '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', + '\002', '\310', '\001', '\000', 'R', '\003', 'v', 'i', 'a', '\022', 'J', '\n', + '\023', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', '_', 'r', 'e', + 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '\030', '\017', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', - 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\037', 's', 't', 'r', 'e', - 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', - 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', - 'a', 'g', 'e', '\022', '\251', '\001', '\n', '\032', 'p', 'a', 't', 'h', - '_', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', - 'o', 'n', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '+', - ' ', '\001', '(', '\013', '2', 'k', '.', 'e', 'n', 'v', 'o', 'y', + 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\021', 'g', 'e', 'n', 'e', + 'r', 'a', 't', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', + 'd', '\022', '?', '\n', '\034', 'p', 'r', 'e', 's', 'e', 'r', 'v', + 'e', '_', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', + 'e', 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '\030', ' ', ' ', + '\001', '(', '\010', 'R', '\031', 'p', 'r', 'e', 's', 'e', 'r', 'v', + 'e', 'E', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'q', + 'u', 'e', 's', 't', 'I', 'd', '\022', 'G', '\n', '!', 'a', 'l', + 'w', 'a', 'y', 's', '_', 's', 'e', 't', '_', 'r', 'e', 'q', + 'u', 'e', 's', 't', '_', 'i', 'd', '_', 'i', 'n', '_', 'r', + 'e', 's', 'p', 'o', 'n', 's', 'e', '\030', '%', ' ', '\001', '(', + '\010', 'R', '\034', 'a', 'l', 'w', 'a', 'y', 's', 'S', 'e', 't', + 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'd', 'I', 'n', 'R', + 'e', 's', 'p', 'o', 'n', 's', 'e', '\022', '\264', '\001', '\n', '\033', + 'f', 'o', 'r', 'w', 'a', 'r', 'd', '_', 'c', 'l', 'i', 'e', + 'n', 't', '_', 'c', 'e', 'r', 't', '_', 'd', 'e', 't', 'a', + 'i', 'l', 's', '\030', '\020', ' ', '\001', '(', '\016', '2', 'k', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', + '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', + 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', + 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'F', 'o', + 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', + 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', 'B', '\010', + '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\030', 'f', 'o', + 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', + 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '\264', + '\001', '\n', '\037', 's', 'e', 't', '_', 'c', 'u', 'r', 'r', 'e', + 'n', 't', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', + 'r', 't', '_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\021', + ' ', '\001', '(', '\013', '2', 'n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', - 'a', 'g', 'e', 'r', '.', 'P', 'a', 't', 'h', 'N', 'o', 'r', - 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'O', 'p', - 't', 'i', 'o', 'n', 's', 'R', '\030', 'p', 'a', 't', 'h', 'N', - 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', - 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '5', '\n', '\027', 's', - 't', 'r', 'i', 'p', '_', 't', 'r', 'a', 'i', 'l', 'i', 'n', - 'g', '_', 'h', 'o', 's', 't', '_', 'd', 'o', 't', '\030', '/', - ' ', '\001', '(', '\010', 'R', '\024', 's', 't', 'r', 'i', 'p', 'T', - 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'H', 'o', 's', 't', 'D', - 'o', 't', '\022', '\224', '\001', '\n', '\023', 'p', 'r', 'o', 'x', 'y', - '_', 's', 't', 'a', 't', 'u', 's', '_', 'c', 'o', 'n', 'f', - 'i', 'g', '\030', '1', ' ', '\001', '(', '\013', '2', 'd', '.', 'e', + 'a', 'g', 'e', 'r', '.', 'S', 'e', 't', 'C', 'u', 'r', 'r', + 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', + 't', 'D', 'e', 't', 'a', 'i', 'l', 's', 'R', '\033', 's', 'e', + 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', + 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', + 's', '\022', '[', '\n', '\033', 'f', 'o', 'r', 'w', 'a', 'r', 'd', + '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't', + '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '<', ' ', '\001', + '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', + 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', + '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\030', 'f', 'o', + 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', + 'e', 'r', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', ',', + '\n', '\022', 'p', 'r', 'o', 'x', 'y', '_', '1', '0', '0', '_', + 'c', 'o', 'n', 't', 'i', 'n', 'u', 'e', '\030', '\022', ' ', '\001', + '(', '\010', 'R', '\020', 'p', 'r', 'o', 'x', 'y', '1', '0', '0', + 'C', 'o', 'n', 't', 'i', 'n', 'u', 'e', '\022', 'e', '\n', '1', + 'r', 'e', 'p', 'r', 'e', 's', 'e', 'n', 't', '_', 'i', 'p', + 'v', '4', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', + 'd', 'r', 'e', 's', 's', '_', 'a', 's', '_', 'i', 'p', 'v', + '4', '_', 'm', 'a', 'p', 'p', 'e', 'd', '_', 'i', 'p', 'v', + '6', '\030', '\024', ' ', '\001', '(', '\010', 'R', '*', 'r', 'e', 'p', + 'r', 'e', 's', 'e', 'n', 't', 'I', 'p', 'v', '4', 'R', 'e', + 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'A', + 's', 'I', 'p', 'v', '4', 'M', 'a', 'p', 'p', 'e', 'd', 'I', + 'p', 'v', '6', '\022', '\211', '\001', '\n', '\017', 'u', 'p', 'g', 'r', + 'a', 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', + '\027', ' ', '\003', '(', '\013', '2', '`', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', + 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', + 'n', 'a', 'g', 'e', 'r', '.', 'U', 'p', 'g', 'r', 'a', 'd', + 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'u', 'p', 'g', + 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', + 'A', '\n', '\016', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'e', + '_', 'p', 'a', 't', 'h', '\030', '\036', ' ', '\001', '(', '\013', '2', + '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', + 'l', 'u', 'e', 'R', '\r', 'n', 'o', 'r', 'm', 'a', 'l', 'i', + 'z', 'e', 'P', 'a', 't', 'h', '\022', '#', '\n', '\r', 'm', 'e', + 'r', 'g', 'e', '_', 's', 'l', 'a', 's', 'h', 'e', 's', '\030', + '!', ' ', '\001', '(', '\010', 'R', '\014', 'm', 'e', 'r', 'g', 'e', + 'S', 'l', 'a', 's', 'h', 'e', 's', '\022', '\267', '\001', '\n', ' ', + 'p', 'a', 't', 'h', '_', 'w', 'i', 't', 'h', '_', 'e', 's', + 'c', 'a', 'p', 'e', 'd', '_', 's', 'l', 'a', 's', 'h', 'e', + 's', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '-', ' ', '\001', + '(', '\016', '2', 'o', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', + 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', + 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', + 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', + 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', + 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', + 'e', 'r', '.', 'P', 'a', 't', 'h', 'W', 'i', 't', 'h', 'E', + 's', 'c', 'a', 'p', 'e', 'd', 'S', 'l', 'a', 's', 'h', 'e', + 's', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\034', 'p', 'a', 't', + 'h', 'W', 'i', 't', 'h', 'E', 's', 'c', 'a', 'p', 'e', 'd', + 'S', 'l', 'a', 's', 'h', 'e', 's', 'A', 'c', 't', 'i', 'o', + 'n', '\022', '\201', '\001', '\n', '\024', 'r', 'e', 'q', 'u', 'e', 's', + 't', '_', 'i', 'd', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', '\030', '$', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', - 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', - 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'P', 'r', 'o', - 'x', 'y', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'n', 'f', - 'i', 'g', 'R', '\021', 'p', 'r', 'o', 'x', 'y', 'S', 't', 'a', - 't', 'u', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'o', '\n', - '\036', 't', 'y', 'p', 'e', 'd', '_', 'h', 'e', 'a', 'd', 'e', - 'r', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', - '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '2', ' ', '\001', '(', - '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', - 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\033', 't', - 'y', 'p', 'e', 'd', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', - 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', '5', '\n', '\027', 'a', 'p', 'p', 'e', 'n', 'd', - '_', 'x', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'e', 'd', - '_', 'p', 'o', 'r', 't', '\030', '3', ' ', '\001', '(', '\010', 'R', - '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'X', 'F', 'o', 'r', 'w', - 'a', 'r', 'd', 'e', 'd', 'P', 'o', 'r', 't', '\022', '2', '\n', - '\025', 'a', 'p', 'p', 'e', 'n', 'd', '_', 'l', 'o', 'c', 'a', - 'l', '_', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '\030', '9', - ' ', '\001', '(', '\010', 'R', '\023', 'a', 'p', 'p', 'e', 'n', 'd', - 'L', 'o', 'c', 'a', 'l', 'O', 'v', 'e', 'r', 'l', 'o', 'a', - 'd', '\022', 'h', '\n', '#', 'a', 'd', 'd', '_', 'p', 'r', 'o', - 'x', 'y', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', - 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 's', - 't', 'a', 't', 'e', '\030', '5', ' ', '\001', '(', '\013', '2', '\032', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', - 'u', 'e', 'R', '\037', 'a', 'd', 'd', 'P', 'r', 'o', 'x', 'y', - 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', 'S', 't', 'a', 't', 'e', '\032', - '\302', '\005', '\n', '\007', 'T', 'r', 'a', 'c', 'i', 'n', 'g', '\022', - '?', '\n', '\017', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 'a', - 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\013', + 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'R', + 'e', 'q', 'u', 'e', 's', 't', 'I', 'D', 'E', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 'R', '\022', 'r', 'e', 'q', 'u', 'e', + 's', 't', 'I', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', '\022', '{', '\n', '\022', 'l', 'o', 'c', 'a', 'l', '_', 'r', + 'e', 'p', 'l', 'y', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', + '&', ' ', '\001', '(', '\013', '2', 'M', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', + 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'c', 'a', + 'l', 'R', 'e', 'p', 'l', 'y', 'C', 'o', 'n', 'f', 'i', 'g', + 'R', '\020', 'l', 'o', 'c', 'a', 'l', 'R', 'e', 'p', 'l', 'y', + 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'P', '\n', '\030', 's', 't', + 'r', 'i', 'p', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', + '_', 'h', 'o', 's', 't', '_', 'p', 'o', 'r', 't', '\030', '\'', + ' ', '\001', '(', '\010', 'B', '\027', '\362', '\230', '\376', '\217', '\005', '\021', + '\022', '\017', 's', 't', 'r', 'i', 'p', '_', 'p', 'o', 'r', 't', + '_', 'm', 'o', 'd', 'e', 'R', '\025', 's', 't', 'r', 'i', 'p', + 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', 'H', 'o', 's', 't', + 'P', 'o', 'r', 't', '\022', '/', '\n', '\023', 's', 't', 'r', 'i', + 'p', '_', 'a', 'n', 'y', '_', 'h', 'o', 's', 't', '_', 'p', + 'o', 'r', 't', '\030', '*', ' ', '\001', '(', '\010', 'H', '\001', 'R', + '\020', 's', 't', 'r', 'i', 'p', 'A', 'n', 'y', 'H', 'o', 's', + 't', 'P', 'o', 'r', 't', '\022', 'i', '\n', '$', 's', 't', 'r', + 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', + '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', + 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '(', ' ', + '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', + 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\037', 's', 't', 'r', + 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', + 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', + 's', 'a', 'g', 'e', '\022', '\251', '\001', '\n', '\032', 'p', 'a', 't', + 'h', '_', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', + 'i', 'o', 'n', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', + '+', ' ', '\001', '(', '\013', '2', 'k', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', + 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', + 'n', 'a', 'g', 'e', 'r', '.', 'P', 'a', 't', 'h', 'N', 'o', + 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'O', + 'p', 't', 'i', 'o', 'n', 's', 'R', '\030', 'p', 'a', 't', 'h', + 'N', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', + 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '5', '\n', '\027', + 's', 't', 'r', 'i', 'p', '_', 't', 'r', 'a', 'i', 'l', 'i', + 'n', 'g', '_', 'h', 'o', 's', 't', '_', 'd', 'o', 't', '\030', + '/', ' ', '\001', '(', '\010', 'R', '\024', 's', 't', 'r', 'i', 'p', + 'T', 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'H', 'o', 's', 't', + 'D', 'o', 't', '\022', '\224', '\001', '\n', '\023', 'p', 'r', 'o', 'x', + 'y', '_', 's', 't', 'a', 't', 'u', 's', '_', 'c', 'o', 'n', + 'f', 'i', 'g', '\030', '1', ' ', '\001', '(', '\013', '2', 'd', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', + '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', + 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', + 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'P', 'r', + 'o', 'x', 'y', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'n', + 'f', 'i', 'g', 'R', '\021', 'p', 'r', 'o', 'x', 'y', 'S', 't', + 'a', 't', 'u', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'o', + '\n', '\036', 't', 'y', 'p', 'e', 'd', '_', 'h', 'e', 'a', 'd', + 'e', 'r', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', + 'n', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '2', ' ', '\001', + '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\033', + 't', 'y', 'p', 'e', 'd', 'H', 'e', 'a', 'd', 'e', 'r', 'V', + 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', + 'f', 'i', 'g', '\022', '5', '\n', '\027', 'a', 'p', 'p', 'e', 'n', + 'd', '_', 'x', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'e', + 'd', '_', 'p', 'o', 'r', 't', '\030', '3', ' ', '\001', '(', '\010', + 'R', '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'X', 'F', 'o', 'r', + 'w', 'a', 'r', 'd', 'e', 'd', 'P', 'o', 'r', 't', '\022', '2', + '\n', '\025', 'a', 'p', 'p', 'e', 'n', 'd', '_', 'l', 'o', 'c', + 'a', 'l', '_', 'o', 'v', 'e', 'r', 'l', 'o', 'a', 'd', '\030', + '9', ' ', '\001', '(', '\010', 'R', '\023', 'a', 'p', 'p', 'e', 'n', + 'd', 'L', 'o', 'c', 'a', 'l', 'O', 'v', 'e', 'r', 'l', 'o', + 'a', 'd', '\022', 'h', '\n', '#', 'a', 'd', 'd', '_', 'p', 'r', + 'o', 'x', 'y', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', + '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', + 's', 't', 'a', 't', 'e', '\030', '5', ' ', '\001', '(', '\013', '2', + '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', + 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', + 'l', 'u', 'e', 'R', '\037', 'a', 'd', 'd', 'P', 'r', 'o', 'x', + 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', + 'n', 'e', 'c', 't', 'i', 'o', 'n', 'S', 't', 'a', 't', 'e', + '\032', '\217', '\006', '\n', '\007', 'T', 'r', 'a', 'c', 'i', 'n', 'g', + '\022', '?', '\n', '\017', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', + 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', + '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', + 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', + 't', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'S', 'a', 'm', + 'p', 'l', 'i', 'n', 'g', '\022', '?', '\n', '\017', 'r', 'a', 'n', + 'd', 'o', 'm', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', + '\030', '\004', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', + 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', + 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'r', 'a', 'n', 'd', + 'o', 'm', 'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022', 'A', + '\n', '\020', 'o', 'v', 'e', 'r', 'a', 'l', 'l', '_', 's', 'a', + 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', - 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'S', 'a', 'm', 'p', - 'l', 'i', 'n', 'g', '\022', '?', '\n', '\017', 'r', 'a', 'n', 'd', - 'o', 'm', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', - '\004', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', - 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', - 'r', 'c', 'e', 'n', 't', 'R', '\016', 'r', 'a', 'n', 'd', 'o', - 'm', 'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022', 'A', '\n', - '\020', 'o', 'v', 'e', 'r', 'a', 'l', 'l', '_', 's', 'a', 'm', - 'p', 'l', 'i', 'n', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', - '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', - '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', - '\017', 'o', 'v', 'e', 'r', 'a', 'l', 'l', 'S', 'a', 'm', 'p', - 'l', 'i', 'n', 'g', '\022', '\030', '\n', '\007', 'v', 'e', 'r', 'b', - 'o', 's', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\007', 'v', - 'e', 'r', 'b', 'o', 's', 'e', '\022', 'K', '\n', '\023', 'm', 'a', - 'x', '_', 'p', 'a', 't', 'h', '_', 't', 'a', 'g', '_', 'l', - 'e', 'n', 'g', 't', 'h', '\030', '\007', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', - 'V', 'a', 'l', 'u', 'e', 'R', '\020', 'm', 'a', 'x', 'P', 'a', - 't', 'h', 'T', 'a', 'g', 'L', 'e', 'n', 'g', 't', 'h', '\022', - 'A', '\n', '\013', 'c', 'u', 's', 't', 'o', 'm', '_', 't', 'a', - 'g', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', ' ', '.', 'e', - 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 't', 'r', - 'a', 'c', 'i', 'n', 'g', '.', 'v', '3', '.', 'C', 'u', 's', - 't', 'o', 'm', 'T', 'a', 'g', 'R', '\n', 'c', 'u', 's', 't', - 'o', 'm', 'T', 'a', 'g', 's', '\022', '?', '\n', '\010', 'p', 'r', - 'o', 'v', 'i', 'd', 'e', 'r', '\030', '\t', ' ', '\001', '(', '\013', - '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '3', - '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', '.', 'H', 't', 't', - 'p', 'R', '\010', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', - 'J', '\n', '\023', 's', 'p', 'a', 'w', 'n', '_', 'u', 'p', 's', - 't', 'r', 'e', 'a', 'm', '_', 's', 'p', 'a', 'n', '\030', '\n', - ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', - 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\021', 's', 'p', - 'a', 'w', 'n', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'S', - 'p', 'a', 'n', '\"', '(', '\n', '\r', 'O', 'p', 'e', 'r', 'a', - 't', 'i', 'o', 'n', 'N', 'a', 'm', 'e', '\022', '\013', '\n', '\007', - 'I', 'N', 'G', 'R', 'E', 'S', 'S', '\020', '\000', '\022', '\n', '\n', - '\006', 'E', 'G', 'R', 'E', 'S', 'S', '\020', '\001', ':', '[', '\232', - '\305', '\210', '\036', 'V', '\n', 'T', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', - 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', - 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', - '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'T', - 'r', 'a', 'c', 'i', 'n', 'g', 'J', '\004', '\010', '\001', '\020', '\002', - 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\016', 'o', 'p', 'e', 'r', - 'a', 't', 'i', 'o', 'n', '_', 'n', 'a', 'm', 'e', 'R', '\030', - 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', - 'e', 'r', 's', '_', 'f', 'o', 'r', '_', 't', 'a', 'g', 's', - '\032', '\347', '\001', '\n', '\025', 'I', 'n', 't', 'e', 'r', 'n', 'a', - 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', '!', '\n', '\014', 'u', 'n', 'i', 'x', '_', 's', - 'o', 'c', 'k', 'e', 't', 's', '\030', '\001', ' ', '\001', '(', '\010', - 'R', '\013', 'u', 'n', 'i', 'x', 'S', 'o', 'c', 'k', 'e', 't', - 's', '\022', '@', '\n', '\013', 'c', 'i', 'd', 'r', '_', 'r', 'a', - 'n', 'g', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\037', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'i', - 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\n', 'c', 'i', 'd', - 'r', 'R', 'a', 'n', 'g', 'e', 's', ':', 'i', '\232', '\305', '\210', - '\036', 'd', '\n', 'b', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', - 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', - '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', - 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'H', - 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'I', 'n', 't', - 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', - 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\230', '\002', '\n', '\033', 'S', - 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', - 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', - 'l', 's', '\022', '4', '\n', '\007', 's', 'u', 'b', 'j', 'e', 'c', - 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', - 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', - 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', - '\007', 's', 'u', 'b', 'j', 'e', 'c', 't', '\022', '\022', '\n', '\004', - 'c', 'e', 'r', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\004', - 'c', 'e', 'r', 't', '\022', '\024', '\n', '\005', 'c', 'h', 'a', 'i', - 'n', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\005', 'c', 'h', 'a', - 'i', 'n', '\022', '\020', '\n', '\003', 'd', 'n', 's', '\030', '\004', ' ', - '\001', '(', '\010', 'R', '\003', 'd', 'n', 's', '\022', '\020', '\n', '\003', - 'u', 'r', 'i', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\003', 'u', - 'r', 'i', ':', 'o', '\232', '\305', '\210', '\036', 'j', '\n', 'h', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', - 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', - 'e', 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', - 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'S', 'e', 't', 'C', 'u', 'r', 'r', 'e', - 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', - 'D', 'e', 't', 'a', 'i', 'l', 's', 'J', '\004', '\010', '\002', '\020', - '\003', '\032', '\256', '\002', '\n', '\r', 'U', 'p', 'g', 'r', 'a', 'd', - 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', 'u', - 'p', 'g', 'r', 'a', 'd', 'e', '_', 't', 'y', 'p', 'e', '\030', - '\001', ' ', '\001', '(', '\t', 'R', '\013', 'u', 'p', 'g', 'r', 'a', - 'd', 'e', 'T', 'y', 'p', 'e', '\022', 'a', '\n', '\007', 'f', 'i', - 'l', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', - 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', - 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', - 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', - 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', - '3', '.', 'H', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', - 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\022', '4', '\n', - '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\003', ' ', '\001', - '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', - 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', - 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'e', 'n', 'a', 'b', - 'l', 'e', 'd', ':', 'a', '\232', '\305', '\210', '\036', '\\', '\n', 'Z', + 'R', '\017', 'o', 'v', 'e', 'r', 'a', 'l', 'l', 'S', 'a', 'm', + 'p', 'l', 'i', 'n', 'g', '\022', '\030', '\n', '\007', 'v', 'e', 'r', + 'b', 'o', 's', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\007', + 'v', 'e', 'r', 'b', 'o', 's', 'e', '\022', 'K', '\n', '\023', 'm', + 'a', 'x', '_', 'p', 'a', 't', 'h', '_', 't', 'a', 'g', '_', + 'l', 'e', 'n', 'g', 't', 'h', '\030', '\007', ' ', '\001', '(', '\013', + '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', + '2', 'V', 'a', 'l', 'u', 'e', 'R', '\020', 'm', 'a', 'x', 'P', + 'a', 't', 'h', 'T', 'a', 'g', 'L', 'e', 'n', 'g', 't', 'h', + '\022', 'A', '\n', '\013', 'c', 'u', 's', 't', 'o', 'm', '_', 't', + 'a', 'g', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', ' ', '.', + 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 't', + 'r', 'a', 'c', 'i', 'n', 'g', '.', 'v', '3', '.', 'C', 'u', + 's', 't', 'o', 'm', 'T', 'a', 'g', 'R', '\n', 'c', 'u', 's', + 't', 'o', 'm', 'T', 'a', 'g', 's', '\022', '?', '\n', '\010', 'p', + 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\030', '\t', ' ', '\001', '(', + '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', + '3', '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', '.', 'H', 't', + 't', 'p', 'R', '\010', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', + '\022', 'J', '\n', '\023', 's', 'p', 'a', 'w', 'n', '_', 'u', 'p', + 's', 't', 'r', 'e', 'a', 'm', '_', 's', 'p', 'a', 'n', '\030', + '\n', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', + 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', + 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\021', 's', + 'p', 'a', 'w', 'n', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', + 'S', 'p', 'a', 'n', '\022', '\034', '\n', '\t', 'o', 'p', 'e', 'r', + 'a', 't', 'i', 'o', 'n', '\030', '\013', ' ', '\001', '(', '\t', 'R', + '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\022', '-', + '\n', '\022', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'o', + 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\014', ' ', '\001', + '(', '\t', 'R', '\021', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', + 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\"', '(', '\n', + '\r', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 'N', 'a', + 'm', 'e', '\022', '\013', '\n', '\007', 'I', 'N', 'G', 'R', 'E', 'S', + 'S', '\020', '\000', '\022', '\n', '\n', '\006', 'E', 'G', 'R', 'E', 'S', + 'S', '\020', '\001', ':', '[', '\232', '\305', '\210', '\036', 'V', '\n', 'T', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', - 'a', 'g', 'e', 'r', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', - 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\345', '\001', '\n', '\030', 'P', - 'a', 't', 'h', 'N', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', - 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', - 'c', '\n', '\031', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', - 'g', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', - 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '&', - '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', - 'h', 't', 't', 'p', '.', 'v', '3', '.', 'P', 'a', 't', 'h', - 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', - 'o', 'n', 'R', '\030', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'i', - 'n', 'g', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', - 't', 'i', 'o', 'n', '\022', 'd', '\n', '\032', 'h', 't', 't', 'p', - '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 't', 'r', 'a', 'n', - 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '\002', - ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', - '.', 't', 'y', 'p', 'e', '.', 'h', 't', 't', 'p', '.', 'v', - '3', '.', 'P', 'a', 't', 'h', 'T', 'r', 'a', 'n', 's', 'f', - 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'R', '\030', 'h', 't', - 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'T', 'r', 'a', 'n', - 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\032', '\344', - '\002', '\n', '\021', 'P', 'r', 'o', 'x', 'y', 'S', 't', 'a', 't', - 'u', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '%', '\n', '\016', - 'r', 'e', 'm', 'o', 'v', 'e', '_', 'd', 'e', 't', 'a', 'i', - 'l', 's', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\r', 'r', 'e', - 'm', 'o', 'v', 'e', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', - 'Q', '\n', '%', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'c', 'o', - 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 't', 'e', 'r', - 'm', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', 'd', 'e', 't', - 'a', 'i', 'l', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\"', - 'r', 'e', 'm', 'o', 'v', 'e', 'C', 'o', 'n', 'n', 'e', 'c', - 't', 'i', 'o', 'n', 'T', 'e', 'r', 'm', 'i', 'n', 'a', 't', - 'i', 'o', 'n', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '2', - '\n', '\025', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'r', 'e', 's', - 'p', 'o', 'n', 's', 'e', '_', 'f', 'l', 'a', 'g', 's', '\030', - '\003', ' ', '\001', '(', '\010', 'R', '\023', 'r', 'e', 'm', 'o', 'v', - 'e', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'F', 'l', 'a', - 'g', 's', '\022', 'A', '\n', '\035', 's', 'e', 't', '_', 'r', 'e', - 'c', 'o', 'm', 'm', 'e', 'n', 'd', 'e', 'd', '_', 'r', 'e', - 's', 'p', 'o', 'n', 's', 'e', '_', 'c', 'o', 'd', 'e', '\030', - '\004', ' ', '\001', '(', '\010', 'R', '\032', 's', 'e', 't', 'R', 'e', - 'c', 'o', 'm', 'm', 'e', 'n', 'd', 'e', 'd', 'R', 'e', 's', - 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', ' ', '\n', - '\013', 'u', 's', 'e', '_', 'n', 'o', 'd', 'e', '_', 'i', 'd', - '\030', '\005', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\t', 'u', 's', - 'e', 'N', 'o', 'd', 'e', 'I', 'd', '\022', '.', '\n', '\022', 'l', - 'i', 't', 'e', 'r', 'a', 'l', '_', 'p', 'r', 'o', 'x', 'y', - '_', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'H', - '\000', 'R', '\020', 'l', 'i', 't', 'e', 'r', 'a', 'l', 'P', 'r', - 'o', 'x', 'y', 'N', 'a', 'm', 'e', 'B', '\014', '\n', '\n', 'p', - 'r', 'o', 'x', 'y', '_', 'n', 'a', 'm', 'e', '\032', '\235', '\002', - '\n', '\023', 'H', 'c', 'm', 'A', 'c', 'c', 'e', 's', 's', 'L', - 'o', 'g', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'b', '\n', - '\031', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '_', - 'f', 'l', 'u', 's', 'h', '_', 'i', 'n', 't', 'e', 'r', 'v', - 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', - '\014', '\372', 'B', '\t', '\252', '\001', '\006', '2', '\004', '\020', '\300', '\204', - '=', 'R', '\026', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', - 'F', 'l', 'u', 's', 'h', 'I', 'n', 't', 'e', 'r', 'v', 'a', - 'l', '\022', 'C', '\n', '\037', 'f', 'l', 'u', 's', 'h', '_', 'a', - 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '_', 'o', 'n', - '_', 'n', 'e', 'w', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', - '\030', '\002', ' ', '\001', '(', '\010', 'R', '\032', 'f', 'l', 'u', 's', - 'h', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'O', 'n', - 'N', 'e', 'w', 'R', 'e', 'q', 'u', 'e', 's', 't', '\022', ']', - '\n', ',', 'f', 'l', 'u', 's', 'h', '_', 'l', 'o', 'g', '_', - 'o', 'n', '_', 't', 'u', 'n', 'n', 'e', 'l', '_', 's', 'u', - 'c', 'c', 'e', 's', 's', 'f', 'u', 'l', 'l', 'y', '_', 'e', - 's', 't', 'a', 'b', 'l', 'i', 's', 'h', 'e', 'd', '\030', '\003', - ' ', '\001', '(', '\010', 'R', '\'', 'f', 'l', 'u', 's', 'h', 'L', - 'o', 'g', 'O', 'n', 'T', 'u', 'n', 'n', 'e', 'l', 'S', 'u', - 'c', 'c', 'e', 's', 's', 'f', 'u', 'l', 'l', 'y', 'E', 's', - 't', 'a', 'b', 'l', 'i', 's', 'h', 'e', 'd', '\"', '6', '\n', - '\t', 'C', 'o', 'd', 'e', 'c', 'T', 'y', 'p', 'e', '\022', '\010', - '\n', '\004', 'A', 'U', 'T', 'O', '\020', '\000', '\022', '\t', '\n', '\005', - 'H', 'T', 'T', 'P', '1', '\020', '\001', '\022', '\t', '\n', '\005', 'H', - 'T', 'T', 'P', '2', '\020', '\002', '\022', '\t', '\n', '\005', 'H', 'T', - 'T', 'P', '3', '\020', '\003', '\"', 'S', '\n', '\032', 'S', 'e', 'r', - 'v', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', - 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', - '\r', '\n', '\t', 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T', 'E', - '\020', '\000', '\022', '\024', '\n', '\020', 'A', 'P', 'P', 'E', 'N', 'D', - '_', 'I', 'F', '_', 'A', 'B', 'S', 'E', 'N', 'T', '\020', '\001', - '\022', '\020', '\n', '\014', 'P', 'A', 'S', 'S', '_', 'T', 'H', 'R', - 'O', 'U', 'G', 'H', '\020', '\002', '\"', 'y', '\n', '\030', 'F', 'o', - 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', - 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '\014', - '\n', '\010', 'S', 'A', 'N', 'I', 'T', 'I', 'Z', 'E', '\020', '\000', - '\022', '\020', '\n', '\014', 'F', 'O', 'R', 'W', 'A', 'R', 'D', '_', - 'O', 'N', 'L', 'Y', '\020', '\001', '\022', '\022', '\n', '\016', 'A', 'P', - 'P', 'E', 'N', 'D', '_', 'F', 'O', 'R', 'W', 'A', 'R', 'D', - '\020', '\002', '\022', '\020', '\n', '\014', 'S', 'A', 'N', 'I', 'T', 'I', - 'Z', 'E', '_', 'S', 'E', 'T', '\020', '\003', '\022', '\027', '\n', '\023', - 'A', 'L', 'W', 'A', 'Y', 'S', '_', 'F', 'O', 'R', 'W', 'A', - 'R', 'D', '_', 'O', 'N', 'L', 'Y', '\020', '\004', '\"', '\240', '\001', - '\n', '\034', 'P', 'a', 't', 'h', 'W', 'i', 't', 'h', 'E', 's', - 'c', 'a', 'p', 'e', 'd', 'S', 'l', 'a', 's', 'h', 'e', 's', - 'A', 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\037', 'I', 'M', - 'P', 'L', 'E', 'M', 'E', 'N', 'T', 'A', 'T', 'I', 'O', 'N', - '_', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'C', '_', 'D', 'E', - 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\022', '\n', '\016', 'K', - 'E', 'E', 'P', '_', 'U', 'N', 'C', 'H', 'A', 'N', 'G', 'E', - 'D', '\020', '\001', '\022', '\022', '\n', '\016', 'R', 'E', 'J', 'E', 'C', - 'T', '_', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', '\020', '\002', '\022', - '\031', '\n', '\025', 'U', 'N', 'E', 'S', 'C', 'A', 'P', 'E', '_', - 'A', 'N', 'D', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', 'T', - '\020', '\003', '\022', '\030', '\n', '\024', 'U', 'N', 'E', 'S', 'C', 'A', - 'P', 'E', '_', 'A', 'N', 'D', '_', 'F', 'O', 'R', 'W', 'A', - 'R', 'D', '\020', '\004', ':', 'S', '\232', '\305', '\210', '\036', 'N', '\n', - 'L', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', - 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', - 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', - 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', - 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', - 'n', 'a', 'g', 'e', 'r', 'B', '\026', '\n', '\017', 'r', 'o', 'u', - 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', - '\022', '\003', '\370', 'B', '\001', 'B', '\021', '\n', '\017', 's', 't', 'r', - 'i', 'p', '_', 'p', 'o', 'r', 't', '_', 'm', 'o', 'd', 'e', - 'J', '\004', '\010', '\033', '\020', '\034', 'J', '\004', '\010', '\013', '\020', '\014', - 'R', '\014', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', - 'u', 't', '\"', '\312', '\001', '\n', '\020', 'L', 'o', 'c', 'a', 'l', - 'R', 'e', 'p', 'l', 'y', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - 'e', '\n', '\007', 'm', 'a', 'p', 'p', 'e', 'r', 's', '\030', '\001', - ' ', '\003', '(', '\013', '2', 'K', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', - 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 's', 'p', 'o', - 'n', 's', 'e', 'M', 'a', 'p', 'p', 'e', 'r', 'R', '\007', 'm', - 'a', 'p', 'p', 'e', 'r', 's', '\022', 'O', '\n', '\013', 'b', 'o', - 'd', 'y', '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', - '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', - 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', - 'i', 'n', 'g', 'R', '\n', 'b', 'o', 'd', 'y', 'F', 'o', 'r', - 'm', 'a', 't', '\"', '\234', '\003', '\n', '\016', 'R', 'e', 's', 'p', - 'o', 'n', 's', 'e', 'M', 'a', 'p', 'p', 'e', 'r', '\022', 'L', - '\n', '\006', 'f', 'i', 'l', 't', 'e', 'r', '\030', '\001', ' ', '\001', - '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', - 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', - 's', 'L', 'o', 'g', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', - '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\006', 'f', 'i', - 'l', 't', 'e', 'r', '\022', 'J', '\n', '\013', 's', 't', 'a', 't', - 'u', 's', '_', 'c', 'o', 'd', 'e', '\030', '\002', ' ', '\001', '(', - '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', - '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\372', 'B', '\010', - '*', '\006', '\020', '\330', '\004', '(', '\310', '\001', 'R', '\n', 's', 't', - 'a', 't', 'u', 's', 'C', 'o', 'd', 'e', '\022', '4', '\n', '\004', - 'b', 'o', 'd', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', ' ', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', - 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\004', 'b', 'o', - 'd', 'y', '\022', '`', '\n', '\024', 'b', 'o', 'd', 'y', '_', 'f', - 'o', 'r', 'm', 'a', 't', '_', 'o', 'v', 'e', 'r', 'r', 'i', - 'd', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '.', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'u', 'b', 's', - 't', 'i', 't', 'u', 't', 'i', 'o', 'n', 'F', 'o', 'r', 'm', - 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', 'R', '\022', 'b', 'o', - 'd', 'y', 'F', 'o', 'r', 'm', 'a', 't', 'O', 'v', 'e', 'r', - 'r', 'i', 'd', 'e', '\022', 'X', '\n', '\016', 'h', 'e', 'a', 'd', - 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\005', - ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', + 'a', 'g', 'e', 'r', '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', + 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\002', '\020', '\003', + 'R', '\016', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '_', + 'n', 'a', 'm', 'e', 'R', '\030', 'r', 'e', 'q', 'u', 'e', 's', + 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'f', 'o', + 'r', '_', 't', 'a', 'g', 's', '\032', '\347', '\001', '\n', '\025', 'I', + 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', + 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', + 'u', 'n', 'i', 'x', '_', 's', 'o', 'c', 'k', 'e', 't', 's', + '\030', '\001', ' ', '\001', '(', '\010', 'R', '\013', 'u', 'n', 'i', 'x', + 'S', 'o', 'c', 'k', 'e', 't', 's', '\022', '@', '\n', '\013', 'c', + 'i', 'd', 'r', '_', 'r', 'a', 'n', 'g', 'e', 's', '\030', '\002', + ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', - 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', - 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\014', 'h', 'e', - 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\"', '\307', - '\001', '\n', '\003', 'R', 'd', 's', '\022', 'Q', '\n', '\r', 'c', 'o', - 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', - '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', - 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', - '\002', '\020', '\001', 'R', '\014', 'c', 'o', 'n', 'f', 'i', 'g', 'S', - 'o', 'u', 'r', 'c', 'e', '\022', '*', '\n', '\021', 'r', 'o', 'u', - 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'n', 'a', - 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\017', 'r', 'o', - 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'N', 'a', 'm', - 'e', ':', 'A', '\232', '\305', '\210', '\036', '<', '\n', ':', 'e', 'n', + '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', + 'e', 'R', '\n', 'c', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', + 's', ':', 'i', '\232', '\305', '\210', '\036', 'd', '\n', 'b', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', - 'r', '.', 'v', '2', '.', 'R', 'd', 's', '\"', '\367', '\001', '\n', - '\035', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', - 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', - 'n', 's', 'L', 'i', 's', 't', '\022', 'y', '\n', '\033', 's', 'c', - 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', - 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', - 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '/', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', - 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', - 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', - 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', - '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\031', 's', 'c', 'o', 'p', - 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', - 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 's', ':', '[', '\232', - '\305', '\210', '\036', 'V', '\n', 'T', 'e', 'n', 'v', 'o', 'y', '.', + 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', + 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', + 'e', 'r', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', + 'd', 'd', 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', + '\032', '\230', '\002', '\n', '\033', 'S', 'e', 't', 'C', 'u', 'r', 'r', + 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', + 't', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '4', '\n', '\007', + 's', 'u', 'b', 'j', 'e', 'c', 't', '\030', '\001', ' ', '\001', '(', + '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', + 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', + 'V', 'a', 'l', 'u', 'e', 'R', '\007', 's', 'u', 'b', 'j', 'e', + 'c', 't', '\022', '\022', '\n', '\004', 'c', 'e', 'r', 't', '\030', '\003', + ' ', '\001', '(', '\010', 'R', '\004', 'c', 'e', 'r', 't', '\022', '\024', + '\n', '\005', 'c', 'h', 'a', 'i', 'n', '\030', '\006', ' ', '\001', '(', + '\010', 'R', '\005', 'c', 'h', 'a', 'i', 'n', '\022', '\020', '\n', '\003', + 'd', 'n', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\003', 'd', + 'n', 's', '\022', '\020', '\n', '\003', 'u', 'r', 'i', '\030', '\005', ' ', + '\001', '(', '\010', 'R', '\003', 'u', 'r', 'i', ':', 'o', '\232', '\305', + '\210', '\036', 'j', '\n', 'h', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', + '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', + 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', + 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'S', 'e', + 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', + 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', + 's', 'J', '\004', '\010', '\002', '\020', '\003', '\032', '\375', '\002', '\n', '\027', + 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', + 't', 'C', 'e', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', + '\252', '\001', '\n', '\033', 'f', 'o', 'r', 'w', 'a', 'r', 'd', '_', + 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't', '_', + 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\001', ' ', '\001', '(', + '\016', '2', 'k', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', + 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', + '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', + 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', + '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', + 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', + 'r', '.', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', + 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', + 'l', 's', 'R', '\030', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'C', + 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', + 'a', 'i', 'l', 's', '\022', '\264', '\001', '\n', '\037', 's', 'e', 't', + '_', 'c', 'u', 'r', 'r', 'e', 'n', 't', '_', 'c', 'l', 'i', + 'e', 'n', 't', '_', 'c', 'e', 'r', 't', '_', 'd', 'e', 't', + 'a', 'i', 'l', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', 'n', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', + 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', + 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', + 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', + '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', + 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'S', + 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', + 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', + 'l', 's', 'R', '\033', 's', 'e', 't', 'C', 'u', 'r', 'r', 'e', + 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', + 'D', 'e', 't', 'a', 'i', 'l', 's', '\032', '\256', '\002', '\n', '\r', + 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', '!', '\n', '\014', 'u', 'p', 'g', 'r', 'a', 'd', 'e', + '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\013', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'T', 'y', 'p', 'e', + '\022', 'a', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', + '\002', ' ', '\003', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', + 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', + 'F', 'i', 'l', 't', 'e', 'r', 'R', '\007', 'f', 'i', 'l', 't', + 'e', 'r', 's', '\022', '4', '\n', '\007', 'e', 'n', 'a', 'b', 'l', + 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', + 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', + 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', + 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', ':', 'a', '\232', + '\305', '\210', '\036', '\\', '\n', 'Z', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', - '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', - 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', - 'n', 's', 'L', 'i', 's', 't', '\"', '\345', '\016', '\n', '\014', 'S', - 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '\022', - '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', - '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', - 'n', 'a', 'm', 'e', '\022', '\217', '\001', '\n', '\021', 's', 'c', 'o', - 'p', 'e', '_', 'k', 'e', 'y', '_', 'b', 'u', 'i', 'l', 'd', - 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', 'Y', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', - 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', - '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', - 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'S', - 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '.', - 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', - 'd', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', - '\001', 'R', '\017', 's', 'c', 'o', 'p', 'e', 'K', 'e', 'y', 'B', - 'u', 'i', 'l', 'd', 'e', 'r', '\022', 'N', '\n', '\021', 'r', 'd', - 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', - 'r', 'c', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\"', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', - 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\017', 'r', - 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', - 'c', 'e', '\022', '\245', '\001', '\n', ' ', 's', 'c', 'o', 'p', 'e', - 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', - 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 's', '_', 'l', - 'i', 's', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', 'Z', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', - 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', - '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', - 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', - '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', - 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', - 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', - 's', 'L', 'i', 's', 't', 'H', '\000', 'R', '\035', 's', 'c', 'o', - 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', - 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 's', 'L', 'i', - 's', 't', '\022', 'g', '\n', '\n', 's', 'c', 'o', 'p', 'e', 'd', - '_', 'r', 'd', 's', '\030', '\005', ' ', '\001', '(', '\013', '2', 'F', + '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', + 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'U', + 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', + '\032', '\345', '\001', '\n', '\030', 'P', 'a', 't', 'h', 'N', 'o', 'r', + 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\022', 'c', '\n', '\031', 'f', 'o', 'r', + 'w', 'a', 'r', 'd', 'i', 'n', 'g', '_', 't', 'r', 'a', 'n', + 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '\001', + ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', + '.', 't', 'y', 'p', 'e', '.', 'h', 't', 't', 'p', '.', 'v', + '3', '.', 'P', 'a', 't', 'h', 'T', 'r', 'a', 'n', 's', 'f', + 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'R', '\030', 'f', 'o', + 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'T', 'r', 'a', 'n', + 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'd', + '\n', '\032', 'h', 't', 't', 'p', '_', 'f', 'i', 'l', 't', 'e', + 'r', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', + 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '&', + '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', + 'h', 't', 't', 'p', '.', 'v', '3', '.', 'P', 'a', 't', 'h', + 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', + 'o', 'n', 'R', '\030', 'h', 't', 't', 'p', 'F', 'i', 'l', 't', + 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', + 't', 'i', 'o', 'n', '\032', '\344', '\002', '\n', '\021', 'P', 'r', 'o', + 'x', 'y', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', '%', '\n', '\016', 'r', 'e', 'm', 'o', 'v', 'e', + '_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\001', ' ', '\001', + '(', '\010', 'R', '\r', 'r', 'e', 'm', 'o', 'v', 'e', 'D', 'e', + 't', 'a', 'i', 'l', 's', '\022', 'Q', '\n', '%', 'r', 'e', 'm', + 'o', 'v', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', '_', 't', 'e', 'r', 'm', 'i', 'n', 'a', 't', 'i', + 'o', 'n', '_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\002', + ' ', '\001', '(', '\010', 'R', '\"', 'r', 'e', 'm', 'o', 'v', 'e', + 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'T', 'e', + 'r', 'm', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'D', 'e', 't', + 'a', 'i', 'l', 's', '\022', '2', '\n', '\025', 'r', 'e', 'm', 'o', + 'v', 'e', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', + 'f', 'l', 'a', 'g', 's', '\030', '\003', ' ', '\001', '(', '\010', 'R', + '\023', 'r', 'e', 'm', 'o', 'v', 'e', 'R', 'e', 's', 'p', 'o', + 'n', 's', 'e', 'F', 'l', 'a', 'g', 's', '\022', 'A', '\n', '\035', + 's', 'e', 't', '_', 'r', 'e', 'c', 'o', 'm', 'm', 'e', 'n', + 'd', 'e', 'd', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', + '_', 'c', 'o', 'd', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', + '\032', 's', 'e', 't', 'R', 'e', 'c', 'o', 'm', 'm', 'e', 'n', + 'd', 'e', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', + 'o', 'd', 'e', '\022', ' ', '\n', '\013', 'u', 's', 'e', '_', 'n', + 'o', 'd', 'e', '_', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\010', + 'H', '\000', 'R', '\t', 'u', 's', 'e', 'N', 'o', 'd', 'e', 'I', + 'd', '\022', '.', '\n', '\022', 'l', 'i', 't', 'e', 'r', 'a', 'l', + '_', 'p', 'r', 'o', 'x', 'y', '_', 'n', 'a', 'm', 'e', '\030', + '\006', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\020', 'l', 'i', 't', + 'e', 'r', 'a', 'l', 'P', 'r', 'o', 'x', 'y', 'N', 'a', 'm', + 'e', 'B', '\014', '\n', '\n', 'p', 'r', 'o', 'x', 'y', '_', 'n', + 'a', 'm', 'e', '\032', '\235', '\002', '\n', '\023', 'H', 'c', 'm', 'A', + 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'O', 'p', 't', 'i', + 'o', 'n', 's', '\022', 'b', '\n', '\031', 'a', 'c', 'c', 'e', 's', + 's', '_', 'l', 'o', 'g', '_', 'f', 'l', 'u', 's', 'h', '_', + 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ', '\001', + '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', + '\006', '2', '\004', '\020', '\300', '\204', '=', 'R', '\026', 'a', 'c', 'c', + 'e', 's', 's', 'L', 'o', 'g', 'F', 'l', 'u', 's', 'h', 'I', + 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'C', '\n', '\037', 'f', + 'l', 'u', 's', 'h', '_', 'a', 'c', 'c', 'e', 's', 's', '_', + 'l', 'o', 'g', '_', 'o', 'n', '_', 'n', 'e', 'w', '_', 'r', + 'e', 'q', 'u', 'e', 's', 't', '\030', '\002', ' ', '\001', '(', '\010', + 'R', '\032', 'f', 'l', 'u', 's', 'h', 'A', 'c', 'c', 'e', 's', + 's', 'L', 'o', 'g', 'O', 'n', 'N', 'e', 'w', 'R', 'e', 'q', + 'u', 'e', 's', 't', '\022', ']', '\n', ',', 'f', 'l', 'u', 's', + 'h', '_', 'l', 'o', 'g', '_', 'o', 'n', '_', 't', 'u', 'n', + 'n', 'e', 'l', '_', 's', 'u', 'c', 'c', 'e', 's', 's', 'f', + 'u', 'l', 'l', 'y', '_', 'e', 's', 't', 'a', 'b', 'l', 'i', + 's', 'h', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\'', + 'f', 'l', 'u', 's', 'h', 'L', 'o', 'g', 'O', 'n', 'T', 'u', + 'n', 'n', 'e', 'l', 'S', 'u', 'c', 'c', 'e', 's', 's', 'f', + 'u', 'l', 'l', 'y', 'E', 's', 't', 'a', 'b', 'l', 'i', 's', + 'h', 'e', 'd', '\"', '6', '\n', '\t', 'C', 'o', 'd', 'e', 'c', + 'T', 'y', 'p', 'e', '\022', '\010', '\n', '\004', 'A', 'U', 'T', 'O', + '\020', '\000', '\022', '\t', '\n', '\005', 'H', 'T', 'T', 'P', '1', '\020', + '\001', '\022', '\t', '\n', '\005', 'H', 'T', 'T', 'P', '2', '\020', '\002', + '\022', '\t', '\n', '\005', 'H', 'T', 'T', 'P', '3', '\020', '\003', '\"', + 'S', '\n', '\032', 'S', 'e', 'r', 'v', 'e', 'r', 'H', 'e', 'a', + 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', + 'a', 't', 'i', 'o', 'n', '\022', '\r', '\n', '\t', 'O', 'V', 'E', + 'R', 'W', 'R', 'I', 'T', 'E', '\020', '\000', '\022', '\024', '\n', '\020', + 'A', 'P', 'P', 'E', 'N', 'D', '_', 'I', 'F', '_', 'A', 'B', + 'S', 'E', 'N', 'T', '\020', '\001', '\022', '\020', '\n', '\014', 'P', 'A', + 'S', 'S', '_', 'T', 'H', 'R', 'O', 'U', 'G', 'H', '\020', '\002', + '\"', 'y', '\n', '\030', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'C', + 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', + 'a', 'i', 'l', 's', '\022', '\014', '\n', '\010', 'S', 'A', 'N', 'I', + 'T', 'I', 'Z', 'E', '\020', '\000', '\022', '\020', '\n', '\014', 'F', 'O', + 'R', 'W', 'A', 'R', 'D', '_', 'O', 'N', 'L', 'Y', '\020', '\001', + '\022', '\022', '\n', '\016', 'A', 'P', 'P', 'E', 'N', 'D', '_', 'F', + 'O', 'R', 'W', 'A', 'R', 'D', '\020', '\002', '\022', '\020', '\n', '\014', + 'S', 'A', 'N', 'I', 'T', 'I', 'Z', 'E', '_', 'S', 'E', 'T', + '\020', '\003', '\022', '\027', '\n', '\023', 'A', 'L', 'W', 'A', 'Y', 'S', + '_', 'F', 'O', 'R', 'W', 'A', 'R', 'D', '_', 'O', 'N', 'L', + 'Y', '\020', '\004', '\"', '\240', '\001', '\n', '\034', 'P', 'a', 't', 'h', + 'W', 'i', 't', 'h', 'E', 's', 'c', 'a', 'p', 'e', 'd', 'S', + 'l', 'a', 's', 'h', 'e', 's', 'A', 'c', 't', 'i', 'o', 'n', + '\022', '#', '\n', '\037', 'I', 'M', 'P', 'L', 'E', 'M', 'E', 'N', + 'T', 'A', 'T', 'I', 'O', 'N', '_', 'S', 'P', 'E', 'C', 'I', + 'F', 'I', 'C', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', + '\000', '\022', '\022', '\n', '\016', 'K', 'E', 'E', 'P', '_', 'U', 'N', + 'C', 'H', 'A', 'N', 'G', 'E', 'D', '\020', '\001', '\022', '\022', '\n', + '\016', 'R', 'E', 'J', 'E', 'C', 'T', '_', 'R', 'E', 'Q', 'U', + 'E', 'S', 'T', '\020', '\002', '\022', '\031', '\n', '\025', 'U', 'N', 'E', + 'S', 'C', 'A', 'P', 'E', '_', 'A', 'N', 'D', '_', 'R', 'E', + 'D', 'I', 'R', 'E', 'C', 'T', '\020', '\003', '\022', '\030', '\n', '\024', + 'U', 'N', 'E', 'S', 'C', 'A', 'P', 'E', '_', 'A', 'N', 'D', + '_', 'F', 'O', 'R', 'W', 'A', 'R', 'D', '\020', '\004', ':', 'S', + '\232', '\305', '\210', '\036', 'N', '\n', 'L', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', + 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', + 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', + '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', + 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'B', + '\026', '\n', '\017', 'r', 'o', 'u', 't', 'e', '_', 's', 'p', 'e', + 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'B', + '\021', '\n', '\017', 's', 't', 'r', 'i', 'p', '_', 'p', 'o', 'r', + 't', '_', 'm', 'o', 'd', 'e', 'J', '\004', '\010', '\033', '\020', '\034', + 'J', '\004', '\010', '\013', '\020', '\014', 'R', '\014', 'i', 'd', 'l', 'e', + '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\"', '\312', '\001', '\n', + '\020', 'L', 'o', 'c', 'a', 'l', 'R', 'e', 'p', 'l', 'y', 'C', + 'o', 'n', 'f', 'i', 'g', '\022', 'e', '\n', '\007', 'm', 'a', 'p', + 'p', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', 'K', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', - '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'd', 's', 'H', '\000', - 'R', '\t', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'd', 's', '\032', - '\337', '\t', '\n', '\017', 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', - 'B', 'u', 'i', 'l', 'd', 'e', 'r', '\022', '\221', '\001', '\n', '\t', - 'f', 'r', 'a', 'g', 'm', 'e', 'n', 't', 's', '\030', '\001', ' ', - '\003', '(', '\013', '2', 'i', '.', 'e', 'n', 'v', 'o', 'y', '.', - 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', - 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', - 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', - 'e', 'r', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', - 'R', 'o', 'u', 't', 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', - 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'F', - 'r', 'a', 'g', 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', - 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', - 'R', '\t', 'f', 'r', 'a', 'g', 'm', 'e', 'n', 't', 's', '\032', - '\333', '\007', '\n', '\017', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', - 'B', 'u', 'i', 'l', 'd', 'e', 'r', '\022', '\266', '\001', '\n', '\026', - 'h', 'e', 'a', 'd', 'e', 'r', '_', 'v', 'a', 'l', 'u', 'e', - '_', 'e', 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', '\030', '\001', - ' ', '\001', '(', '\013', '2', '~', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', - 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', - 'd', 'R', 'o', 'u', 't', 'e', 's', '.', 'S', 'c', 'o', 'p', - 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', - 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', - 'd', 'e', 'r', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', - 'l', 'u', 'e', 'E', 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', - 'H', '\000', 'R', '\024', 'h', 'e', 'a', 'd', 'e', 'r', 'V', 'a', - 'l', 'u', 'e', 'E', 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', - '\032', '\225', '\005', '\n', '\024', 'H', 'e', 'a', 'd', 'e', 'r', 'V', - 'a', 'l', 'u', 'e', 'E', 'x', 't', 'r', 'a', 'c', 't', 'o', - 'r', '\022', '!', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', - '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', - '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', - '\022', '+', '\n', '\021', 'e', 'l', 'e', 'm', 'e', 'n', 't', '_', - 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', '\030', '\002', ' ', - '\001', '(', '\t', 'R', '\020', 'e', 'l', 'e', 'm', 'e', 'n', 't', - 'S', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', '\022', '\026', '\n', - '\005', 'i', 'n', 'd', 'e', 'x', '\030', '\003', ' ', '\001', '(', '\r', - 'H', '\000', 'R', '\005', 'i', 'n', 'd', 'e', 'x', '\022', '\245', '\001', - '\n', '\007', 'e', 'l', 'e', 'm', 'e', 'n', 't', '\030', '\004', ' ', - '\001', '(', '\013', '2', '\210', '\001', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'M', 'a', 'p', + 'p', 'e', 'r', 'R', '\007', 'm', 'a', 'p', 'p', 'e', 'r', 's', + '\022', 'O', '\n', '\013', 'b', 'o', 'd', 'y', '_', 'f', 'o', 'r', + 'm', 'a', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '.', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'u', 'b', + 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', 'F', 'o', 'r', + 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', 'R', '\n', 'b', + 'o', 'd', 'y', 'F', 'o', 'r', 'm', 'a', 't', '\"', '\234', '\003', + '\n', '\016', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'M', 'a', + 'p', 'p', 'e', 'r', '\022', 'L', '\n', '\006', 'f', 'i', 'l', 't', + 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', + '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', 'i', + 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', + '\020', '\001', 'R', '\006', 'f', 'i', 'l', 't', 'e', 'r', '\022', 'J', + '\n', '\013', 's', 't', 'a', 't', 'u', 's', '_', 'c', 'o', 'd', + 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', + 'e', 'B', '\013', '\372', 'B', '\010', '*', '\006', '\020', '\330', '\004', '(', + '\310', '\001', 'R', '\n', 's', 't', 'a', 't', 'u', 's', 'C', 'o', + 'd', 'e', '\022', '4', '\n', '\004', 'b', 'o', 'd', 'y', '\030', '\003', + ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', + 'c', 'e', 'R', '\004', 'b', 'o', 'd', 'y', '\022', '`', '\n', '\024', + 'b', 'o', 'd', 'y', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', + 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\030', '\004', ' ', '\001', + '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', + 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', + 'n', 'g', 'R', '\022', 'b', 'o', 'd', 'y', 'F', 'o', 'r', 'm', + 'a', 't', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\022', 'X', + '\n', '\016', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', + '_', 'a', 'd', 'd', '\030', '\005', ' ', '\003', '(', '\013', '2', '\'', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', + 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', + 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', + '\350', '\007', 'R', '\014', 'h', 'e', 'a', 'd', 'e', 'r', 's', 'T', + 'o', 'A', 'd', 'd', '\"', '\275', '\001', '\n', '\003', 'R', 'd', 's', + '\022', 'G', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', + 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', + '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', + 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', + '\014', 'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', + 'e', '\022', '*', '\n', '\021', 'r', 'o', 'u', 't', 'e', '_', 'c', + 'o', 'n', 'f', 'i', 'g', '_', 'n', 'a', 'm', 'e', '\030', '\002', + ' ', '\001', '(', '\t', 'R', '\017', 'r', 'o', 'u', 't', 'e', 'C', + 'o', 'n', 'f', 'i', 'g', 'N', 'a', 'm', 'e', ':', 'A', '\232', + '\305', '\210', '\036', '<', '\n', ':', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', + 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', + 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', + 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', + '.', 'R', 'd', 's', '\"', '\367', '\001', '\n', '\035', 'S', 'c', 'o', + 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', + 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 's', 'L', 'i', + 's', 't', '\022', 'y', '\n', '\033', 's', 'c', 'o', 'p', 'e', 'd', + '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', + 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', + '\003', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', + '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', + 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', + 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', + '\010', '\001', 'R', '\031', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'o', + 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', + 't', 'i', 'o', 'n', 's', ':', '[', '\232', '\305', '\210', '\036', 'V', + '\n', 'T', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', + 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', + 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'S', 'c', 'o', + 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', + 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 's', 'L', 'i', + 's', 't', '\"', '\345', '\016', '\n', '\014', 'S', 'c', 'o', 'p', 'e', + 'd', 'R', 'o', 'u', 't', 'e', 's', '\022', '\033', '\n', '\004', 'n', + 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', + 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', + '\022', '\217', '\001', '\n', '\021', 's', 'c', 'o', 'p', 'e', '_', 'k', + 'e', 'y', '_', 'b', 'u', 'i', 'l', 'd', 'e', 'r', '\030', '\002', + ' ', '\001', '(', '\013', '2', 'Y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '.', 'S', 'c', 'o', 'p', - 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', - 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', - 'd', 'e', 'r', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', - 'l', 'u', 'e', 'E', 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', - '.', 'K', 'v', 'E', 'l', 'e', 'm', 'e', 'n', 't', 'H', '\000', - 'R', '\007', 'e', 'l', 'e', 'm', 'e', 'n', 't', '\032', '\333', '\001', - '\n', '\t', 'K', 'v', 'E', 'l', 'e', 'm', 'e', 'n', 't', '\022', - '%', '\n', '\t', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', - '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', - '\002', '\020', '\001', 'R', '\t', 's', 'e', 'p', 'a', 'r', 'a', 't', - 'o', 'r', '\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', '\002', ' ', - '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', - 'R', '\003', 'k', 'e', 'y', ':', '\213', '\001', '\232', '\305', '\210', '\036', - '\205', '\001', '\n', '\202', '\001', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', - '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', - 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', - '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', - 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', - '.', 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', 'B', 'u', 'i', - 'l', 'd', 'e', 'r', '.', 'F', 'r', 'a', 'g', 'm', 'e', 'n', - 't', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'H', 'e', 'a', - 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 't', 'r', - 'a', 'c', 't', 'o', 'r', '.', 'K', 'v', 'E', 'l', 'e', 'm', - 'e', 'n', 't', ':', '\177', '\232', '\305', '\210', '\036', 'z', '\n', 'x', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', - 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', - 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', - 'g', 'e', 'r', '.', 'v', '2', '.', 'S', 'c', 'o', 'p', 'e', - 'd', 'R', 'o', 'u', 't', 'e', 's', '.', 'S', 'c', 'o', 'p', - 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', + 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\017', 's', + 'c', 'o', 'p', 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', + 'e', 'r', '\022', 'N', '\n', '\021', 'r', 'd', 's', '_', 'c', 'o', + 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', + '\003', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', + 'o', 'u', 'r', 'c', 'e', 'R', '\017', 'r', 'd', 's', 'C', 'o', + 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '\245', + '\001', '\n', ' ', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', + 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 's', '_', 'l', 'i', 's', 't', '\030', + '\004', ' ', '\001', '(', '\013', '2', 'Z', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', + 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', + 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', + 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 's', 'L', 'i', 's', + 't', 'H', '\000', 'R', '\035', 's', 'c', 'o', 'p', 'e', 'd', 'R', + 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 's', 'L', 'i', 's', 't', '\022', 'g', + '\n', '\n', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'd', 's', + '\030', '\005', ' ', '\001', '(', '\013', '2', 'F', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', + 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', + 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'S', 'c', 'o', + 'p', 'e', 'd', 'R', 'd', 's', 'H', '\000', 'R', '\t', 's', 'c', + 'o', 'p', 'e', 'd', 'R', 'd', 's', '\032', '\337', '\t', '\n', '\017', + 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', + 'd', 'e', 'r', '\022', '\221', '\001', '\n', '\t', 'f', 'r', 'a', 'g', + 'm', 'e', 'n', 't', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', + 'i', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', + 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', + 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', + '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', + 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', 'B', + 'u', 'i', 'l', 'd', 'e', 'r', '.', 'F', 'r', 'a', 'g', 'm', + 'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', 'e', 'r', 'B', '\010', + '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\t', 'f', 'r', + 'a', 'g', 'm', 'e', 'n', 't', 's', '\032', '\333', '\007', '\n', '\017', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', - 'd', 'e', 'r', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', - 'l', 'u', 'e', 'E', 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', - 'B', '\016', '\n', '\014', 'e', 'x', 't', 'r', 'a', 'c', 't', '_', - 't', 'y', 'p', 'e', ':', 'j', '\232', '\305', '\210', '\036', 'e', '\n', - 'c', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'd', 'e', 'r', '\022', '\266', '\001', '\n', '\026', 'h', 'e', 'a', 'd', + 'e', 'r', '_', 'v', 'a', 'l', 'u', 'e', '_', 'e', 'x', 't', + 'r', 'a', 'c', 't', 'o', 'r', '\030', '\001', ' ', '\001', '(', '\013', + '2', '~', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', + 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', + 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', + 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', + 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', + 't', 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', + 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'F', 'r', 'a', 'g', + 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', + 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'E', + 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', 'H', '\000', 'R', '\024', + 'h', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'E', + 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', '\032', '\225', '\005', '\n', + '\024', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', + 'E', 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', '\022', '!', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', + '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '+', '\n', '\021', + 'e', 'l', 'e', 'm', 'e', 'n', 't', '_', 's', 'e', 'p', 'a', + 'r', 'a', 't', 'o', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'R', + '\020', 'e', 'l', 'e', 'm', 'e', 'n', 't', 'S', 'e', 'p', 'a', + 'r', 'a', 't', 'o', 'r', '\022', '\026', '\n', '\005', 'i', 'n', 'd', + 'e', 'x', '\030', '\003', ' ', '\001', '(', '\r', 'H', '\000', 'R', '\005', + 'i', 'n', 'd', 'e', 'x', '\022', '\245', '\001', '\n', '\007', 'e', 'l', + 'e', 'm', 'e', 'n', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', + '\210', '\001', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', + 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', + 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', + 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', + 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', + 't', 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', + 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'F', 'r', 'a', 'g', + 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', + 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'E', + 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', '.', 'K', 'v', 'E', + 'l', 'e', 'm', 'e', 'n', 't', 'H', '\000', 'R', '\007', 'e', 'l', + 'e', 'm', 'e', 'n', 't', '\032', '\333', '\001', '\n', '\t', 'K', 'v', + 'E', 'l', 'e', 'm', 'e', 'n', 't', '\022', '%', '\n', '\t', 's', + 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', '\030', '\001', ' ', '\001', + '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', + '\t', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', '\022', '\031', + '\n', '\003', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', + '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\003', 'k', 'e', + 'y', ':', '\213', '\001', '\232', '\305', '\210', '\036', '\205', '\001', '\n', '\202', + '\001', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', @@ -1051,124 +1083,148 @@ static const char descriptor[13566] = { 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'B', 'u', 'i', - 'l', 'd', 'e', 'r', 'B', '\013', '\n', '\004', 't', 'y', 'p', 'e', - '\022', '\003', '\370', 'B', '\001', ':', 'Z', '\232', '\305', '\210', '\036', 'U', - '\n', 'S', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', - 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', - 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', - 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'S', 'c', 'o', - 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '.', 'S', 'c', - 'o', 'p', 'e', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', - 'r', ':', 'J', '\232', '\305', '\210', '\036', 'E', '\n', 'C', 'e', 'n', + 'l', 'd', 'e', 'r', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', + 'a', 'l', 'u', 'e', 'E', 'x', 't', 'r', 'a', 'c', 't', 'o', + 'r', '.', 'K', 'v', 'E', 'l', 'e', 'm', 'e', 'n', 't', ':', + '\177', '\232', '\305', '\210', '\036', 'z', '\n', 'x', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', + 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', + 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', + 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', + 'v', '2', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', + 't', 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', 'K', 'e', 'y', + 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'F', 'r', 'a', 'g', + 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', + 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'E', + 'x', 't', 'r', 'a', 'c', 't', 'o', 'r', 'B', '\016', '\n', '\014', + 'e', 'x', 't', 'r', 'a', 'c', 't', '_', 't', 'y', 'p', 'e', + ':', 'j', '\232', '\305', '\210', '\036', 'e', '\n', 'c', 'e', 'n', 'v', + 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', + 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', + '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', + 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', + '.', 'v', '2', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', + 'u', 't', 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', 'K', 'e', + 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'F', 'r', 'a', + 'g', 'm', 'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', 'e', 'r', + 'B', '\013', '\n', '\004', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', + '\001', ':', 'Z', '\232', '\305', '\210', '\036', 'U', '\n', 'S', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', - 'o', 'u', 't', 'e', 's', 'B', '\027', '\n', '\020', 'c', 'o', 'n', - 'f', 'i', 'g', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', - 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\361', '\001', '\n', '\t', 'S', - 'c', 'o', 'p', 'e', 'd', 'R', 'd', 's', '\022', 'e', '\n', '\030', - 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'd', 's', '_', 'c', - 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', - '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', - 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', - '\001', '\002', '\020', '\001', 'R', '\025', 's', 'c', 'o', 'p', 'e', 'd', - 'R', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', - 'r', 'c', 'e', '\022', '4', '\n', '\026', 's', 'r', 'd', 's', '_', - 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '_', 'l', 'o', - 'c', 'a', 't', 'o', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'R', - '\024', 's', 'r', 'd', 's', 'R', 'e', 's', 'o', 'u', 'r', 'c', - 'e', 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', ':', 'G', '\232', - '\305', '\210', '\036', 'B', '\n', '@', 'e', 'n', 'v', 'o', 'y', '.', - 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', - 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', - 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', - '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'd', 's', '\"', '\350', - '\002', '\n', '\n', 'H', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', - 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', - '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', - 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', - 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', - ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', - 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', - 'o', 'n', 'f', 'i', 'g', '\022', 'X', '\n', '\020', 'c', 'o', 'n', - 'f', 'i', 'g', '_', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', - 'y', '\030', '\005', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', - 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\017', 'c', 'o', 'n', 'f', - 'i', 'g', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '\022', - '\037', '\n', '\013', 'i', 's', '_', 'o', 'p', 't', 'i', 'o', 'n', - 'a', 'l', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', - 'O', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\022', '\032', '\n', '\010', - 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', '\030', '\007', ' ', '\001', - '(', '\010', 'R', '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', - ':', 'H', '\232', '\305', '\210', '\036', 'C', '\n', 'A', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', - 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', - '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', - 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', - '.', 'v', '2', '.', 'H', 't', 't', 'p', 'F', 'i', 'l', 't', - 'e', 'r', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', - '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\003', '\020', '\004', 'J', - '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', - 'g', '\"', '\237', '\001', '\n', '\022', 'R', 'e', 'q', 'u', 'e', 's', - 't', 'I', 'D', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - '\022', '7', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\013', 't', 'y', - 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', 'P', '\232', - '\305', '\210', '\036', 'K', '\n', 'I', 'e', 'n', 'v', 'o', 'y', '.', + 'o', 'u', 't', 'e', 's', '.', 'S', 'c', 'o', 'p', 'e', 'K', + 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', ':', 'J', '\232', + '\305', '\210', '\036', 'E', '\n', 'C', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', - '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'D', 'E', 'x', - 't', 'e', 'n', 's', 'i', 'o', 'n', '\"', '\216', '\001', '\n', ' ', - 'E', 'n', 'v', 'o', 'y', 'M', 'o', 'b', 'i', 'l', 'e', 'H', + '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', + 's', 'B', '\027', '\n', '\020', 'c', 'o', 'n', 'f', 'i', 'g', '_', + 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', + 'B', '\001', '\"', '\361', '\001', '\n', '\t', 'S', 'c', 'o', 'p', 'e', + 'd', 'R', 'd', 's', '\022', 'e', '\n', '\030', 's', 'c', 'o', 'p', + 'e', 'd', '_', 'r', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001', + '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', + 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', + 'R', '\025', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'd', 's', 'C', + 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', + '4', '\n', '\026', 's', 'r', 'd', 's', '_', 'r', 'e', 's', 'o', + 'u', 'r', 'c', 'e', 's', '_', 'l', 'o', 'c', 'a', 't', 'o', + 'r', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\024', 's', 'r', 'd', + 's', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', 'L', 'o', + 'c', 'a', 't', 'o', 'r', ':', 'G', '\232', '\305', '\210', '\036', 'B', + '\n', '@', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', + 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', + 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'S', 'c', 'o', + 'p', 'e', 'd', 'R', 'd', 's', '\"', '\350', '\002', '\n', '\n', 'H', + 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', '\022', '\033', '\n', + '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', + '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', + 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', + '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', + 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', + 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', 'X', '\n', '\020', 'c', 'o', 'n', 'f', 'i', 'g', '_', + 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '\030', '\005', ' ', + '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', + 'H', '\000', 'R', '\017', 'c', 'o', 'n', 'f', 'i', 'g', 'D', 'i', + 's', 'c', 'o', 'v', 'e', 'r', 'y', '\022', '\037', '\n', '\013', 'i', + 's', '_', 'o', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\030', '\006', + ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', 'O', 'p', 't', 'i', + 'o', 'n', 'a', 'l', '\022', '\032', '\n', '\010', 'd', 'i', 's', 'a', + 'b', 'l', 'e', 'd', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\010', + 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', ':', 'H', '\232', '\305', + '\210', '\036', 'C', '\n', 'A', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', + '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', + 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', + 'H', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', + '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', + 'e', 'J', '\004', '\010', '\003', '\020', '\004', 'J', '\004', '\010', '\002', '\020', + '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\237', '\001', + '\n', '\022', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'D', 'E', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', '7', '\n', '\014', + 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', + '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', + 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', + '.', 'A', 'n', 'y', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', + 'o', 'n', 'f', 'i', 'g', ':', 'P', '\232', '\305', '\210', '\036', 'K', + '\n', 'I', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', + 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', + 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'R', 'e', 'q', + 'u', 'e', 's', 't', 'I', 'D', 'E', 'x', 't', 'e', 'n', 's', + 'i', 'o', 'n', '\"', '\216', '\001', '\n', ' ', 'E', 'n', 'v', 'o', + 'y', 'M', 'o', 'b', 'i', 'l', 'e', 'H', 't', 't', 'p', 'C', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', + 'a', 'g', 'e', 'r', '\022', 'j', '\n', '\006', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', 'R', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', + 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', + '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', + 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', 'j', '\n', '\006', - 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', - '2', 'R', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', - 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', - 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', - 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', - 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', - 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', 'B', '\357', '\001', '\n', - 'I', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', - 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', - 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', - 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', - 'v', '3', 'B', '\032', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', - 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', - 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '|', 'g', 'i', - 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', - 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', - 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', - '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', - 's', '/', 'n', 'e', 't', 'w', 'o', 'r', 'k', '/', 'h', 't', - 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', - 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '/', 'v', '3', - ';', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', - 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', - 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', - 'p', 'r', 'o', 't', 'o', '3', + 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'R', '\006', 'c', 'o', + 'n', 'f', 'i', 'g', 'B', '\357', '\001', '\n', 'I', 'i', 'o', '.', + 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', + 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', + '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', + 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', 'B', '\032', + 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', + 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', 'P', 'r', 'o', + 't', 'o', 'P', '\001', 'Z', '|', 'g', 'i', 't', 'h', 'u', 'b', + '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', + 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', + 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'n', 'e', + 't', 'w', 'o', 'r', 'k', '/', 'h', 't', 't', 'p', '_', 'c', + 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', + 'n', 'a', 'g', 'e', 'r', '/', 'v', '3', ';', 'h', 't', 't', + 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', + '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', 'v', '3', '\272', '\200', + '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', + 'o', '3', }; -static _upb_DefPool_Init *deps[23] = { +static _upb_DefPool_Init *deps[24] = { &envoy_config_accesslog_v3_accesslog_proto_upbdefinit, &envoy_config_core_v3_address_proto_upbdefinit, &envoy_config_core_v3_base_proto_upbdefinit, @@ -1185,6 +1241,7 @@ static _upb_DefPool_Init *deps[23] = { &google_protobuf_any_proto_upbdefinit, &google_protobuf_duration_proto_upbdefinit, &google_protobuf_wrappers_proto_upbdefinit, + &xds_type_matcher_v3_matcher_proto_upbdefinit, &envoy_annotations_deprecation_proto_upbdefinit, &udpa_annotations_migrate_proto_upbdefinit, &udpa_annotations_security_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h index f2f0e0b9dc6..0a9ce1d473b 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h @@ -42,6 +42,11 @@ UPB_INLINE const upb_MessageDef *envoy_extensions_filters_network_http_connectio return upb_DefPool_FindMessageByName(s, "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.SetCurrentClientCertDetails"); } +UPB_INLINE const upb_MessageDef *envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ForwardClientCertConfig_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.ForwardClientCertConfig"); +} + UPB_INLINE const upb_MessageDef *envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_getmsgdef(upb_DefPool *s) { _upb_DefPool_LoadDefInit(s, &envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager_proto_upbdefinit); return upb_DefPool_FindMessageByName(s, "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.UpgradeConfig"); diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c index 65e35d3318f..d77857c4f67 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c @@ -23,7 +23,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[4448] = { +static const char descriptor[4620] = { '\n', '6', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', @@ -62,7 +62,7 @@ static const char descriptor[4448] = { 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', - 'o', 't', 'o', '\"', '\245', '\004', '\n', '\r', 'T', 'l', 's', 'P', + 'o', 't', 'o', '\"', '\321', '\005', '\n', '\r', 'T', 'l', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', '\217', '\001', '\n', '\034', 't', 'l', 's', '_', 'm', 'i', 'n', 'i', 'm', 'u', 'm', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'v', @@ -98,303 +98,317 @@ static const char descriptor[4448] = { '_', 'a', 'l', 'g', 'o', 'r', 'i', 't', 'h', 'm', 's', '\030', '\005', ' ', '\003', '(', '\t', 'R', '\023', 's', 'i', 'g', 'n', 'a', 't', 'u', 'r', 'e', 'A', 'l', 'g', 'o', 'r', 'i', 't', 'h', - 'm', 's', '\"', 'O', '\n', '\013', 'T', 'l', 's', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', '\022', '\014', '\n', '\010', 'T', 'L', 'S', - '_', 'A', 'U', 'T', 'O', '\020', '\000', '\022', '\013', '\n', '\007', 'T', - 'L', 'S', 'v', '1', '_', '0', '\020', '\001', '\022', '\013', '\n', '\007', - 'T', 'L', 'S', 'v', '1', '_', '1', '\020', '\002', '\022', '\013', '\n', - '\007', 'T', 'L', 'S', 'v', '1', '_', '2', '\020', '\003', '\022', '\013', - '\n', '\007', 'T', 'L', 'S', 'v', '1', '_', '3', '\020', '\004', ':', - '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', - 'h', '.', 'T', 'l', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', - 'e', 'r', 's', '\"', '\353', '\001', '\n', '\022', 'P', 'r', 'i', 'v', + 'm', 's', '\022', '\204', '\001', '\n', '\023', 'c', 'o', 'm', 'p', 'l', + 'i', 'a', 'n', 'c', 'e', '_', 'p', 'o', 'l', 'i', 'c', 'i', + 'e', 's', '\030', '\006', ' ', '\003', '(', '\016', '2', 'I', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', + 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', + 's', '.', 'v', '3', '.', 'T', 'l', 's', 'P', 'a', 'r', 'a', + 'm', 'e', 't', 'e', 'r', 's', '.', 'C', 'o', 'm', 'p', 'l', + 'i', 'a', 'n', 'c', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'B', + '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\020', '\001', 'R', '\022', 'c', + 'o', 'm', 'p', 'l', 'i', 'a', 'n', 'c', 'e', 'P', 'o', 'l', + 'i', 'c', 'i', 'e', 's', '\"', 'O', '\n', '\013', 'T', 'l', 's', + 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', '\022', '\014', '\n', '\010', + 'T', 'L', 'S', '_', 'A', 'U', 'T', 'O', '\020', '\000', '\022', '\013', + '\n', '\007', 'T', 'L', 'S', 'v', '1', '_', '0', '\020', '\001', '\022', + '\013', '\n', '\007', 'T', 'L', 'S', 'v', '1', '_', '1', '\020', '\002', + '\022', '\013', '\n', '\007', 'T', 'L', 'S', 'v', '1', '_', '2', '\020', + '\003', '\022', '\013', '\n', '\007', 'T', 'L', 'S', 'v', '1', '_', '3', + '\020', '\004', '\"', '#', '\n', '\020', 'C', 'o', 'm', 'p', 'l', 'i', + 'a', 'n', 'c', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\017', + '\n', '\013', 'F', 'I', 'P', 'S', '_', '2', '0', '2', '2', '0', + '5', '\020', '\000', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', + 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', + '.', 'a', 'u', 't', 'h', '.', 'T', 'l', 's', 'P', 'a', 'r', + 'a', 'm', 'e', 't', 'e', 'r', 's', '\"', '\353', '\001', '\n', '\022', + 'P', 'r', 'i', 'v', 'a', 't', 'e', 'K', 'e', 'y', 'P', 'r', + 'o', 'v', 'i', 'd', 'e', 'r', '\022', ',', '\n', '\r', 'p', 'r', + 'o', 'v', 'i', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', + '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', + '\020', '\001', 'R', '\014', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', + 'N', 'a', 'm', 'e', '\022', 'A', '\n', '\014', 't', 'y', 'p', 'e', + 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', + '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', + 'B', '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'H', '\000', 'R', '\013', + 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', + '\032', '\n', '\010', 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', '\030', + '\004', ' ', '\001', '(', '\010', 'R', '\010', 'f', 'a', 'l', 'l', 'b', + 'a', 'c', 'k', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', + 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', + '.', 'a', 'u', 't', 'h', '.', 'P', 'r', 'i', 'v', 'a', 't', + 'e', 'K', 'e', 'y', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', + 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', + 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', + 'o', 'n', 'f', 'i', 'g', '\"', '\310', '\005', '\n', '\016', 'T', 'l', + 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', + '\022', 'M', '\n', '\021', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', + 'a', 't', 'e', '_', 'c', 'h', 'a', 'i', 'n', '\030', '\001', ' ', + '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', + 'e', 'R', '\020', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', + 't', 'e', 'C', 'h', 'a', 'i', 'n', '\022', 'I', '\n', '\013', 'p', + 'r', 'i', 'v', 'a', 't', 'e', '_', 'k', 'e', 'y', '\030', '\002', + ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', + 'c', 'e', 'B', '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\n', + 'p', 'r', 'i', 'v', 'a', 't', 'e', 'K', 'e', 'y', '\022', '@', + '\n', '\006', 'p', 'k', 'c', 's', '1', '2', '\030', '\010', ' ', '\001', + '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', + 'B', '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\006', 'p', 'k', + 'c', 's', '1', '2', '\022', 'S', '\n', '\021', 'w', 'a', 't', 'c', + 'h', 'e', 'd', '_', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', + 'y', '\030', '\007', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', + 'o', 'r', 'e', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', + 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', 'R', + '\020', 'w', 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', + 'c', 't', 'o', 'r', 'y', '\022', 'o', '\n', '\024', 'p', 'r', 'i', + 'v', 'a', 't', 'e', '_', 'k', 'e', 'y', '_', 'p', 'r', 'o', + 'v', 'i', 'd', 'e', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', + '=', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', + 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', + '.', 't', 'l', 's', '.', 'v', '3', '.', 'P', 'r', 'i', 'v', 'a', 't', 'e', 'K', 'e', 'y', 'P', 'r', 'o', 'v', 'i', 'd', - 'e', 'r', '\022', ',', '\n', '\r', 'p', 'r', 'o', 'v', 'i', 'd', - 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', - '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\014', - 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'N', 'a', 'm', 'e', - '\022', 'A', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', - 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', - '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', - 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'B', '\006', '\270', '\267', - '\213', '\244', '\002', '\001', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', - 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\032', '\n', '\010', 'f', - 'a', 'l', 'l', 'b', 'a', 'c', 'k', '\030', '\004', ' ', '\001', '(', - '\010', 'R', '\010', 'f', 'a', 'l', 'l', 'b', 'a', 'c', 'k', ':', - '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', - 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', - 'h', '.', 'P', 'r', 'i', 'v', 'a', 't', 'e', 'K', 'e', 'y', - 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'B', '\r', '\n', '\013', - 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', - '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', - 'g', '\"', '\310', '\005', '\n', '\016', 'T', 'l', 's', 'C', 'e', 'r', - 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\022', 'M', '\n', '\021', - 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', - 'c', 'h', 'a', 'i', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', - ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', - 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', - 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\020', 'c', - 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'C', 'h', - 'a', 'i', 'n', '\022', 'I', '\n', '\013', 'p', 'r', 'i', 'v', 'a', - 't', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', - '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\006', - '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\n', 'p', 'r', 'i', 'v', - 'a', 't', 'e', 'K', 'e', 'y', '\022', '@', '\n', '\006', 'p', 'k', - 'c', 's', '1', '2', '\030', '\010', ' ', '\001', '(', '\013', '2', ' ', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', - 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\006', '\270', '\267', - '\213', '\244', '\002', '\001', 'R', '\006', 'p', 'k', 'c', 's', '1', '2', - '\022', 'S', '\n', '\021', 'w', 'a', 't', 'c', 'h', 'e', 'd', '_', - 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\007', ' ', - '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'e', 'r', 'R', '\022', 'p', 'r', 'i', 'v', 'a', 't', 'e', 'K', + 'e', 'y', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', 'D', + '\n', '\010', 'p', 'a', 's', 's', 'w', 'o', 'r', 'd', '\030', '\003', + ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', + 'c', 'e', 'B', '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\010', + 'p', 'a', 's', 's', 'w', 'o', 'r', 'd', '\022', 'A', '\n', '\013', + 'o', 'c', 's', 'p', '_', 's', 't', 'a', 'p', 'l', 'e', '\030', + '\004', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', + 'r', 'c', 'e', 'R', '\n', 'o', 'c', 's', 'p', 'S', 't', 'a', + 'p', 'l', 'e', '\022', 'b', '\n', '\034', 's', 'i', 'g', 'n', 'e', + 'd', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', + 'e', '_', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '\030', + '\005', ' ', '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', + 'r', 'c', 'e', 'R', '\032', 's', 'i', 'g', 'n', 'e', 'd', 'C', + 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'T', 'i', + 'm', 'e', 's', 't', 'a', 'm', 'p', ':', '\'', '\232', '\305', '\210', + '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', + 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'T', 'l', + 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', + '\"', '\213', '\001', '\n', '\024', 'T', 'l', 's', 'S', 'e', 's', 's', + 'i', 'o', 'n', 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', + 's', '\022', 'D', '\n', '\004', 'k', 'e', 'y', 's', '\030', '\001', ' ', + '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', - 'r', 'e', 'c', 't', 'o', 'r', 'y', 'R', '\020', 'w', 'a', 't', - 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', - 'y', '\022', 'o', '\n', '\024', 'p', 'r', 'i', 'v', 'a', 't', 'e', - '_', 'k', 'e', 'y', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', - 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', '=', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', - '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', - '.', 'v', '3', '.', 'P', 'r', 'i', 'v', 'a', 't', 'e', 'K', - 'e', 'y', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'R', '\022', - 'p', 'r', 'i', 'v', 'a', 't', 'e', 'K', 'e', 'y', 'P', 'r', - 'o', 'v', 'i', 'd', 'e', 'r', '\022', 'D', '\n', '\010', 'p', 'a', - 's', 's', 'w', 'o', 'r', 'd', '\030', '\003', ' ', '\001', '(', '\013', - '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', + 'e', 'B', '\016', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', '\270', + '\267', '\213', '\244', '\002', '\001', 'R', '\004', 'k', 'e', 'y', 's', ':', + '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', + 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', + 'h', '.', 'T', 'l', 's', 'S', 'e', 's', 's', 'i', 'o', 'n', + 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', '\"', '|', + '\n', '!', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', + 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'P', 'l', 'u', + 'g', 'i', 'n', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', '\022', + ',', '\n', '\r', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '_', + 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', + '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\014', 'i', 'n', 's', + 't', 'a', 'n', 'c', 'e', 'N', 'a', 'm', 'e', '\022', ')', '\n', + '\020', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', + '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', + '\017', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', + 'N', 'a', 'm', 'e', '\"', '\306', '\002', '\n', '\025', 'S', 'u', 'b', + 'j', 'e', 'c', 't', 'A', 'l', 't', 'N', 'a', 'm', 'e', 'M', + 'a', 't', 'c', 'h', 'e', 'r', '\022', 'o', '\n', '\010', 's', 'a', + 'n', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', + '2', 'H', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', + 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', + 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'u', 'b', + 'j', 'e', 'c', 't', 'A', 'l', 't', 'N', 'a', 'm', 'e', 'M', + 'a', 't', 'c', 'h', 'e', 'r', '.', 'S', 'a', 'n', 'T', 'y', + 'p', 'e', 'B', '\n', '\372', 'B', '\007', '\202', '\001', '\004', '\020', '\001', + ' ', '\000', 'R', '\007', 's', 'a', 'n', 'T', 'y', 'p', 'e', '\022', + 'H', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\002', + ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', + '\001', '\002', '\020', '\001', 'R', '\007', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '\022', '\020', '\n', '\003', 'o', 'i', 'd', '\030', '\003', ' ', '\001', + '(', '\t', 'R', '\003', 'o', 'i', 'd', '\"', '`', '\n', '\007', 'S', + 'a', 'n', 'T', 'y', 'p', 'e', '\022', '\030', '\n', '\024', 'S', 'A', + 'N', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'S', 'P', 'E', + 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '\t', '\n', '\005', + 'E', 'M', 'A', 'I', 'L', '\020', '\001', '\022', '\007', '\n', '\003', 'D', + 'N', 'S', '\020', '\002', '\022', '\007', '\n', '\003', 'U', 'R', 'I', '\020', + '\003', '\022', '\016', '\n', '\n', 'I', 'P', '_', 'A', 'D', 'D', 'R', + 'E', 'S', 'S', '\020', '\004', '\022', '\016', '\n', '\n', 'O', 'T', 'H', + 'E', 'R', '_', 'N', 'A', 'M', 'E', '\020', '\005', '\"', '\251', '\r', + '\n', '\034', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', + 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', + 'o', 'n', 't', 'e', 'x', 't', '\022', 'W', '\n', '\n', 't', 'r', + 'u', 's', 't', 'e', 'd', '_', 'c', 'a', '\030', '\001', ' ', '\001', + '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', + 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', + 'B', '\026', '\362', '\230', '\376', '\217', '\005', '\020', '\022', '\016', 'c', 'a', + '_', 'c', 'e', 'r', 't', '_', 's', 'o', 'u', 'r', 'c', 'e', + 'R', '\t', 't', 'r', 'u', 's', 't', 'e', 'd', 'C', 'a', '\022', + '\255', '\001', '\n', ' ', 'c', 'a', '_', 'c', 'e', 'r', 't', 'i', + 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', + 'd', 'e', 'r', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', + '\030', '\r', ' ', '\001', '(', '\013', '2', 'L', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', + 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', + 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', + 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'P', 'l', + 'u', 'g', 'i', 'n', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', + 'B', '\026', '\362', '\230', '\376', '\217', '\005', '\020', '\022', '\016', 'c', 'a', + '_', 'c', 'e', 'r', 't', '_', 's', 'o', 'u', 'r', 'c', 'e', + 'R', '\035', 'c', 'a', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', + 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', + 'n', 's', 't', 'a', 'n', 'c', 'e', '\022', '\203', '\001', '\n', '\021', + 's', 'y', 's', 't', 'e', 'm', '_', 'r', 'o', 'o', 't', '_', + 'c', 'e', 'r', 't', 's', '\030', '\021', ' ', '\001', '(', '\013', '2', + 'W', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', + 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', + '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', + 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', + 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', + '.', 'S', 'y', 's', 't', 'e', 'm', 'R', 'o', 'o', 't', 'C', + 'e', 'r', 't', 's', 'R', '\017', 's', 'y', 's', 't', 'e', 'm', + 'R', 'o', 'o', 't', 'C', 'e', 'r', 't', 's', '\022', 'S', '\n', + '\021', 'w', 'a', 't', 'c', 'h', 'e', 'd', '_', 'd', 'i', 'r', + 'e', 'c', 't', 'o', 'r', 'y', '\030', '\013', ' ', '\001', '(', '\013', + '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\006', - '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\010', 'p', 'a', 's', 's', - 'w', 'o', 'r', 'd', '\022', 'A', '\n', '\013', 'o', 'c', 's', 'p', - '_', 's', 't', 'a', 'p', 'l', 'e', '\030', '\004', ' ', '\001', '(', - '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', - '\n', 'o', 'c', 's', 'p', 'S', 't', 'a', 'p', 'l', 'e', '\022', - 'b', '\n', '\034', 's', 'i', 'g', 'n', 'e', 'd', '_', 'c', 'e', - 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 't', 'i', - 'm', 'e', 's', 't', 'a', 'm', 'p', '\030', '\005', ' ', '\003', '(', - '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', - 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', - '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', - '\032', 's', 'i', 'g', 'n', 'e', 'd', 'C', 'e', 'r', 't', 'i', - 'f', 'i', 'c', 'a', 't', 'e', 'T', 'i', 'm', 'e', 's', 't', - 'a', 'm', 'p', ':', '\'', '\232', '\305', '\210', '\036', '\"', '\n', ' ', - 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', - '.', 'a', 'u', 't', 'h', '.', 'T', 'l', 's', 'C', 'e', 'r', - 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\"', '\213', '\001', '\n', - '\024', 'T', 'l', 's', 'S', 'e', 's', 's', 'i', 'o', 'n', 'T', - 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', '\022', 'D', '\n', - '\004', 'k', 'e', 'y', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', + 'W', 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', + 't', 'o', 'r', 'y', 'R', '\020', 'w', 'a', 't', 'c', 'h', 'e', + 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', 'F', + '\n', '\027', 'v', 'e', 'r', 'i', 'f', 'y', '_', 'c', 'e', 'r', + 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 's', 'p', 'k', + 'i', '\030', '\003', ' ', '\003', '(', '\t', 'B', '\016', '\372', 'B', '\013', + '\222', '\001', '\010', '\"', '\006', 'r', '\004', '\020', ',', '(', ',', 'R', + '\025', 'v', 'e', 'r', 'i', 'f', 'y', 'C', 'e', 'r', 't', 'i', + 'f', 'i', 'c', 'a', 't', 'e', 'S', 'p', 'k', 'i', '\022', 'F', + '\n', '\027', 'v', 'e', 'r', 'i', 'f', 'y', '_', 'c', 'e', 'r', + 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'h', 'a', 's', + 'h', '\030', '\002', ' ', '\003', '(', '\t', 'B', '\016', '\372', 'B', '\013', + '\222', '\001', '\010', '\"', '\006', 'r', '\004', '\020', '@', '(', '_', 'R', + '\025', 'v', 'e', 'r', 'i', 'f', 'y', 'C', 'e', 'r', 't', 'i', + 'f', 'i', 'c', 'a', 't', 'e', 'H', 'a', 's', 'h', '\022', '\202', + '\001', '\n', '\035', 'm', 'a', 't', 'c', 'h', '_', 't', 'y', 'p', + 'e', 'd', '_', 's', 'u', 'b', 'j', 'e', 'c', 't', '_', 'a', + 'l', 't', '_', 'n', 'a', 'm', 'e', 's', '\030', '\017', ' ', '\003', + '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', + 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', + 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', + 'u', 'b', 'j', 'e', 'c', 't', 'A', 'l', 't', 'N', 'a', 'm', + 'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\031', 'm', 'a', + 't', 'c', 'h', 'T', 'y', 'p', 'e', 'd', 'S', 'u', 'b', 'j', + 'e', 'c', 't', 'A', 'l', 't', 'N', 'a', 'm', 'e', 's', '\022', + 'h', '\n', '\027', 'm', 'a', 't', 'c', 'h', '_', 's', 'u', 'b', + 'j', 'e', 'c', 't', '_', 'a', 'l', 't', '_', 'n', 'a', 'm', + 'e', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '$', '.', 'e', + 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', + 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\013', + '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', + '\024', 'm', 'a', 't', 'c', 'h', 'S', 'u', 'b', 'j', 'e', 'c', + 't', 'A', 'l', 't', 'N', 'a', 'm', 'e', 's', '\022', 'k', '\n', + '$', 'r', 'e', 'q', 'u', 'i', 'r', 'e', '_', 's', 'i', 'g', + 'n', 'e', 'd', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', + 'a', 't', 'e', '_', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', + 'p', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', + 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', + 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', + '!', 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'S', 'i', 'g', 'n', + 'e', 'd', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', + 'e', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '\022', '2', + '\n', '\003', 'c', 'r', 'l', '\030', '\007', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', - 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\016', '\372', - 'B', '\005', '\222', '\001', '\002', '\010', '\001', '\270', '\267', '\213', '\244', '\002', - '\001', 'R', '\004', 'k', 'e', 'y', 's', ':', '-', '\232', '\305', '\210', - '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', - 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'T', 'l', - 's', 'S', 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', 'c', 'k', - 'e', 't', 'K', 'e', 'y', 's', '\"', '|', '\n', '!', 'C', 'e', - 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', - 'v', 'i', 'd', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 'I', - 'n', 's', 't', 'a', 'n', 'c', 'e', '\022', ',', '\n', '\r', 'i', - 'n', 's', 't', 'a', 'n', 'c', 'e', '_', 'n', 'a', 'm', 'e', - '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', - '\002', '\020', '\001', 'R', '\014', 'i', 'n', 's', 't', 'a', 'n', 'c', - 'e', 'N', 'a', 'm', 'e', '\022', ')', '\n', '\020', 'c', 'e', 'r', - 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'n', 'a', 'm', - 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\017', 'c', 'e', 'r', - 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'N', 'a', 'm', 'e', - '\"', '\306', '\002', '\n', '\025', 'S', 'u', 'b', 'j', 'e', 'c', 't', - 'A', 'l', 't', 'N', 'a', 'm', 'e', 'M', 'a', 't', 'c', 'h', - 'e', 'r', '\022', 'o', '\n', '\010', 's', 'a', 'n', '_', 't', 'y', - 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', 'H', '.', 'e', - 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', - 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', - 's', '.', 'v', '3', '.', 'S', 'u', 'b', 'j', 'e', 'c', 't', - 'A', 'l', 't', 'N', 'a', 'm', 'e', 'M', 'a', 't', 'c', 'h', - 'e', 'r', '.', 'S', 'a', 'n', 'T', 'y', 'p', 'e', 'B', '\n', - '\372', 'B', '\007', '\202', '\001', '\004', '\020', '\001', ' ', '\000', 'R', '\007', - 's', 'a', 'n', 'T', 'y', 'p', 'e', '\022', 'H', '\n', '\007', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', - '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', - 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', - 'R', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', '\020', '\n', - '\003', 'o', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\003', - 'o', 'i', 'd', '\"', '`', '\n', '\007', 'S', 'a', 'n', 'T', 'y', - 'p', 'e', '\022', '\030', '\n', '\024', 'S', 'A', 'N', '_', 'T', 'Y', - 'P', 'E', '_', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', - 'E', 'D', '\020', '\000', '\022', '\t', '\n', '\005', 'E', 'M', 'A', 'I', - 'L', '\020', '\001', '\022', '\007', '\n', '\003', 'D', 'N', 'S', '\020', '\002', - '\022', '\007', '\n', '\003', 'U', 'R', 'I', '\020', '\003', '\022', '\016', '\n', - '\n', 'I', 'P', '_', 'A', 'D', 'D', 'R', 'E', 'S', 'S', '\020', - '\004', '\022', '\016', '\n', '\n', 'O', 'T', 'H', 'E', 'R', '_', 'N', - 'A', 'M', 'E', '\020', '\005', '\"', '\251', '\r', '\n', '\034', 'C', 'e', + 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\003', 'c', + 'r', 'l', '\022', ':', '\n', '\031', 'a', 'l', 'l', 'o', 'w', '_', + 'e', 'x', 'p', 'i', 'r', 'e', 'd', '_', 'c', 'e', 'r', 't', + 'i', 'f', 'i', 'c', 'a', 't', 'e', '\030', '\010', ' ', '\001', '(', + '\010', 'R', '\027', 'a', 'l', 'l', 'o', 'w', 'E', 'x', 'p', 'i', + 'r', 'e', 'd', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', + 't', 'e', '\022', '\242', '\001', '\n', '\030', 't', 'r', 'u', 's', 't', + '_', 'c', 'h', 'a', 'i', 'n', '_', 'v', 'e', 'r', 'i', 'f', + 'i', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\n', ' ', '\001', '(', + '\016', '2', '^', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', + 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', + 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', - 'x', 't', '\022', 'W', '\n', '\n', 't', 'r', 'u', 's', 't', 'e', - 'd', '_', 'c', 'a', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', - 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', - 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\026', '\362', '\230', - '\376', '\217', '\005', '\020', '\022', '\016', 'c', 'a', '_', 'c', 'e', 'r', - 't', '_', 's', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 't', 'r', - 'u', 's', 't', 'e', 'd', 'C', 'a', '\022', '\255', '\001', '\n', ' ', - 'c', 'a', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', - 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '_', - 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '\030', '\r', ' ', '\001', - '(', '\013', '2', 'L', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', - 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', - 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', - 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', - 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', - 'o', 'v', 'i', 'd', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', - 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 'B', '\026', '\362', '\230', - '\376', '\217', '\005', '\020', '\022', '\016', 'c', 'a', '_', 'c', 'e', 'r', - 't', '_', 's', 'o', 'u', 'r', 'c', 'e', 'R', '\035', 'c', 'a', - 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', - 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', - 'n', 'c', 'e', '\022', '\203', '\001', '\n', '\021', 's', 'y', 's', 't', - 'e', 'm', '_', 'r', 'o', 'o', 't', '_', 'c', 'e', 'r', 't', - 's', '\030', '\021', ' ', '\001', '(', '\013', '2', 'W', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', - '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', - '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', - 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', - 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'S', 'y', 's', - 't', 'e', 'm', 'R', 'o', 'o', 't', 'C', 'e', 'r', 't', 's', - 'R', '\017', 's', 'y', 's', 't', 'e', 'm', 'R', 'o', 'o', 't', - 'C', 'e', 'r', 't', 's', '\022', 'S', '\n', '\021', 'w', 'a', 't', - 'c', 'h', 'e', 'd', '_', 'd', 'i', 'r', 'e', 'c', 't', 'o', - 'r', 'y', '\030', '\013', ' ', '\001', '(', '\013', '2', '&', '.', 'e', + 'x', 't', '.', 'T', 'r', 'u', 's', 't', 'C', 'h', 'a', 'i', + 'n', 'V', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', + 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', + '\026', 't', 'r', 'u', 's', 't', 'C', 'h', 'a', 'i', 'n', 'V', + 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n', '\022', + 'b', '\n', '\027', 'c', 'u', 's', 't', 'o', 'm', '_', 'v', 'a', + 'l', 'i', 'd', 'a', 't', 'o', 'r', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\014', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', - 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'W', 'a', 't', 'c', - 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', - 'R', '\020', 'w', 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', 'r', - 'e', 'c', 't', 'o', 'r', 'y', '\022', 'F', '\n', '\027', 'v', 'e', - 'r', 'i', 'f', 'y', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', - 'c', 'a', 't', 'e', '_', 's', 'p', 'k', 'i', '\030', '\003', ' ', - '\003', '(', '\t', 'B', '\016', '\372', 'B', '\013', '\222', '\001', '\010', '\"', - '\006', 'r', '\004', '\020', ',', '(', ',', 'R', '\025', 'v', 'e', 'r', - 'i', 'f', 'y', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', - 't', 'e', 'S', 'p', 'k', 'i', '\022', 'F', '\n', '\027', 'v', 'e', - 'r', 'i', 'f', 'y', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', - 'c', 'a', 't', 'e', '_', 'h', 'a', 's', 'h', '\030', '\002', ' ', - '\003', '(', '\t', 'B', '\016', '\372', 'B', '\013', '\222', '\001', '\010', '\"', - '\006', 'r', '\004', '\020', '@', '(', '_', 'R', '\025', 'v', 'e', 'r', - 'i', 'f', 'y', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', - 't', 'e', 'H', 'a', 's', 'h', '\022', '\202', '\001', '\n', '\035', 'm', - 'a', 't', 'c', 'h', '_', 't', 'y', 'p', 'e', 'd', '_', 's', - 'u', 'b', 'j', 'e', 'c', 't', '_', 'a', 'l', 't', '_', 'n', - 'a', 'm', 'e', 's', '\030', '\017', ' ', '\003', '(', '\013', '2', '@', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', - 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', - 't', 'l', 's', '.', 'v', '3', '.', 'S', 'u', 'b', 'j', 'e', - 'c', 't', 'A', 'l', 't', 'N', 'a', 'm', 'e', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'R', '\031', 'm', 'a', 't', 'c', 'h', 'T', - 'y', 'p', 'e', 'd', 'S', 'u', 'b', 'j', 'e', 'c', 't', 'A', - 'l', 't', 'N', 'a', 'm', 'e', 's', '\022', 'h', '\n', '\027', 'm', - 'a', 't', 'c', 'h', '_', 's', 'u', 'b', 'j', 'e', 'c', 't', - '_', 'a', 'l', 't', '_', 'n', 'a', 'm', 'e', 's', '\030', '\t', - ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', - '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', - 'a', 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', - '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\024', 'm', 'a', 't', - 'c', 'h', 'S', 'u', 'b', 'j', 'e', 'c', 't', 'A', 'l', 't', - 'N', 'a', 'm', 'e', 's', '\022', 'k', '\n', '$', 'r', 'e', 'q', - 'u', 'i', 'r', 'e', '_', 's', 'i', 'g', 'n', 'e', 'd', '_', - 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', - 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '\030', '\006', ' ', - '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', - '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', - 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '!', 'r', 'e', 'q', - 'u', 'i', 'r', 'e', 'S', 'i', 'g', 'n', 'e', 'd', 'C', 'e', - 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'T', 'i', 'm', - 'e', 's', 't', 'a', 'm', 'p', '\022', '2', '\n', '\003', 'c', 'r', - 'l', '\030', '\007', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', - 'o', 'u', 'r', 'c', 'e', 'R', '\003', 'c', 'r', 'l', '\022', ':', - '\n', '\031', 'a', 'l', 'l', 'o', 'w', '_', 'e', 'x', 'p', 'i', - 'r', 'e', 'd', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', - 'a', 't', 'e', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\027', 'a', - 'l', 'l', 'o', 'w', 'E', 'x', 'p', 'i', 'r', 'e', 'd', 'C', - 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\022', '\242', - '\001', '\n', '\030', 't', 'r', 'u', 's', 't', '_', 'c', 'h', 'a', - 'i', 'n', '_', 'v', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', - 'i', 'o', 'n', '\030', '\n', ' ', '\001', '(', '\016', '2', '^', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', - 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', - 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', - 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', - 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', - 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'T', - 'r', 'u', 's', 't', 'C', 'h', 'a', 'i', 'n', 'V', 'e', 'r', - 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', - 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\026', 't', 'r', 'u', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', + 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', 'R', '\025', 'c', 'u', 's', 't', 'o', 'm', + 'V', 'a', 'l', 'i', 'd', 'a', 't', 'o', 'r', 'C', 'o', 'n', + 'f', 'i', 'g', '\022', '8', '\n', '\031', 'o', 'n', 'l', 'y', '_', + 'v', 'e', 'r', 'i', 'f', 'y', '_', 'l', 'e', 'a', 'f', '_', + 'c', 'e', 'r', 't', '_', 'c', 'r', 'l', '\030', '\016', ' ', '\001', + '(', '\010', 'R', '\025', 'o', 'n', 'l', 'y', 'V', 'e', 'r', 'i', + 'f', 'y', 'L', 'e', 'a', 'f', 'C', 'e', 'r', 't', 'C', 'r', + 'l', '\022', 'O', '\n', '\020', 'm', 'a', 'x', '_', 'v', 'e', 'r', + 'i', 'f', 'y', '_', 'd', 'e', 'p', 't', 'h', '\030', '\020', ' ', + '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', + 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', + 'B', '\004', '*', '\002', '\030', 'd', 'R', '\016', 'm', 'a', 'x', 'V', + 'e', 'r', 'i', 'f', 'y', 'D', 'e', 'p', 't', 'h', '\032', '\021', + '\n', '\017', 'S', 'y', 's', 't', 'e', 'm', 'R', 'o', 'o', 't', + 'C', 'e', 'r', 't', 's', '\"', 'F', '\n', '\026', 'T', 'r', 'u', 's', 't', 'C', 'h', 'a', 'i', 'n', 'V', 'e', 'r', 'i', 'f', - 'i', 'c', 'a', 't', 'i', 'o', 'n', '\022', 'b', '\n', '\027', 'c', - 'u', 's', 't', 'o', 'm', '_', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'o', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\014', - ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', - 'R', '\025', 'c', 'u', 's', 't', 'o', 'm', 'V', 'a', 'l', 'i', - 'd', 'a', 't', 'o', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', - '8', '\n', '\031', 'o', 'n', 'l', 'y', '_', 'v', 'e', 'r', 'i', - 'f', 'y', '_', 'l', 'e', 'a', 'f', '_', 'c', 'e', 'r', 't', - '_', 'c', 'r', 'l', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\025', - 'o', 'n', 'l', 'y', 'V', 'e', 'r', 'i', 'f', 'y', 'L', 'e', - 'a', 'f', 'C', 'e', 'r', 't', 'C', 'r', 'l', '\022', 'O', '\n', - '\020', 'm', 'a', 'x', '_', 'v', 'e', 'r', 'i', 'f', 'y', '_', - 'd', 'e', 'p', 't', 'h', '\030', '\020', ' ', '\001', '(', '\013', '2', - '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', - 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', - 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', - '\030', 'd', 'R', '\016', 'm', 'a', 'x', 'V', 'e', 'r', 'i', 'f', - 'y', 'D', 'e', 'p', 't', 'h', '\032', '\021', '\n', '\017', 'S', 'y', - 's', 't', 'e', 'm', 'R', 'o', 'o', 't', 'C', 'e', 'r', 't', - 's', '\"', 'F', '\n', '\026', 'T', 'r', 'u', 's', 't', 'C', 'h', - 'a', 'i', 'n', 'V', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', - 'i', 'o', 'n', '\022', '\026', '\n', '\022', 'V', 'E', 'R', 'I', 'F', - 'Y', '_', 'T', 'R', 'U', 'S', 'T', '_', 'C', 'H', 'A', 'I', - 'N', '\020', '\000', '\022', '\024', '\n', '\020', 'A', 'C', 'C', 'E', 'P', - 'T', '_', 'U', 'N', 'T', 'R', 'U', 'S', 'T', 'E', 'D', '\020', - '\001', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', - 'u', 't', 'h', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', - 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', - 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'J', '\004', '\010', '\004', - '\020', '\005', 'J', '\004', '\010', '\005', '\020', '\006', 'R', '\027', 'v', 'e', - 'r', 'i', 'f', 'y', '_', 's', 'u', 'b', 'j', 'e', 'c', 't', - '_', 'a', 'l', 't', '_', 'n', 'a', 'm', 'e', 'B', '\250', '\001', - '\n', '7', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', - 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', - 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', - 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', - 't', 's', '.', 't', 'l', 's', '.', 'v', '3', 'B', '\013', 'C', - 'o', 'm', 'm', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', - 'Z', 'V', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', - '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', - 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', - 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', - 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', - 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', - 'e', 't', 's', '/', 't', 'l', 's', '/', 'v', '3', ';', 't', - 'l', 's', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', - 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'i', 'c', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\022', 'V', + 'E', 'R', 'I', 'F', 'Y', '_', 'T', 'R', 'U', 'S', 'T', '_', + 'C', 'H', 'A', 'I', 'N', '\020', '\000', '\022', '\024', '\n', '\020', 'A', + 'C', 'C', 'E', 'P', 'T', '_', 'U', 'N', 'T', 'R', 'U', 'S', + 'T', 'E', 'D', '\020', '\001', ':', '5', '\232', '\305', '\210', '\036', '0', + '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', + 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'C', 'e', 'r', 't', + 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', + 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', + 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004', '\010', '\005', '\020', '\006', + 'R', '\027', 'v', 'e', 'r', 'i', 'f', 'y', '_', 's', 'u', 'b', + 'j', 'e', 'c', 't', '_', 'a', 'l', 't', '_', 'n', 'a', 'm', + 'e', 'B', '\250', '\001', '\n', '7', 'i', 'o', '.', 'e', 'n', 'v', + 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', + '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', + 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', + '3', 'B', '\013', 'C', 'o', 'm', 'm', 'o', 'n', 'P', 'r', 'o', + 't', 'o', 'P', '\001', 'Z', 'V', 'g', 'i', 't', 'h', 'u', 'b', + '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', + 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', + 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', + 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', + 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', + 'v', '3', ';', 't', 'l', 's', 'v', '3', '\272', '\200', '\310', '\321', + '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[12] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c index a85b6721139..90357cac961 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c @@ -19,7 +19,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[1325] = { +static const char descriptor[1525] = { '\n', '6', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', @@ -49,88 +49,105 @@ static const char descriptor[1325] = { 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', - 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'y', '\n', '\r', 'G', - 'e', 'n', 'e', 'r', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', - '\022', '@', '\n', '\006', 's', 'e', 'c', 'r', 'e', 't', '\030', '\001', - ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', - 'c', 'e', 'B', '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\006', - 's', 'e', 'c', 'r', 'e', 't', ':', '&', '\232', '\305', '\210', '\036', - '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'G', 'e', 'n', - 'e', 'r', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', '\"', '\233', - '\001', '\n', '\017', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\033', '\n', '\004', 'n', 'a', - 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', - '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', - 'A', '\n', '\n', 's', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', - 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', - 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 's', 'd', 's', - 'C', 'o', 'n', 'f', 'i', 'g', ':', '(', '\232', '\305', '\210', '\036', - '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', - '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'S', 'd', 's', - 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', - '\"', '\373', '\003', '\n', '\006', 'S', 'e', 'c', 'r', 'e', 't', '\022', - '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', - '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'd', '\n', '\017', 't', - 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', - 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '9', '.', 'e', + 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\300', '\002', '\n', '\r', + 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'S', 'e', 'c', 'r', 'e', + 't', '\022', '@', '\n', '\006', 's', 'e', 'c', 'r', 'e', 't', '\030', + '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', + 'r', 'c', 'e', 'B', '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'R', + '\006', 's', 'e', 'c', 'r', 'e', 't', '\022', 'g', '\n', '\007', 's', + 'e', 'c', 'r', 'e', 't', 's', '\030', '\002', ' ', '\003', '(', '\013', + '2', 'E', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', + 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', + 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'G', 'e', 'n', + 'e', 'r', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', '.', 'S', + 'e', 'c', 'r', 'e', 't', 's', 'E', 'n', 't', 'r', 'y', 'B', + '\006', '\270', '\267', '\213', '\244', '\002', '\001', 'R', '\007', 's', 'e', 'c', + 'r', 'e', 't', 's', '\032', '\\', '\n', '\014', 'S', 'e', 'c', 'r', + 'e', 't', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', + 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', + 'e', 'y', '\022', '6', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', + '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', + 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', + 'r', 'c', 'e', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', + '8', '\001', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', + 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', + 'a', 'u', 't', 'h', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', + 'S', 'e', 'c', 'r', 'e', 't', '\"', '\233', '\001', '\n', '\017', 'S', + 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', + ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', + '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'A', '\n', '\n', 's', + 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', + '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', + 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', + 'r', 'c', 'e', 'R', '\t', 's', 'd', 's', 'C', 'o', 'n', 'f', + 'i', 'g', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', + 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', + 'a', 'u', 't', 'h', '.', 'S', 'd', 's', 'S', 'e', 'c', 'r', + 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\373', '\003', '\n', + '\006', 'S', 'e', 'c', 'r', 'e', 't', '\022', '\022', '\n', '\004', 'n', + 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', + 'a', 'm', 'e', '\022', 'd', '\n', '\017', 't', 'l', 's', '_', 'c', + 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\030', '\002', + ' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', + 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', + 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', + '.', 'T', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', + 'a', 't', 'e', 'H', '\000', 'R', '\016', 't', 'l', 's', 'C', 'e', + 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\022', 'q', '\n', + '\023', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 't', 'i', 'c', + 'k', 'e', 't', '_', 'k', 'e', 'y', 's', '\030', '\003', ' ', '\001', + '(', '\013', '2', '?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', + 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', + 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'T', + 'l', 's', 'S', 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', 'c', + 'k', 'e', 't', 'K', 'e', 'y', 's', 'H', '\000', 'R', '\021', 's', + 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', 'c', 'k', 'e', 't', + 'K', 'e', 'y', 's', '\022', 'x', '\n', '\022', 'v', 'a', 'l', 'i', + 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', + 'x', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', - 's', '.', 'v', '3', '.', 'T', 'l', 's', 'C', 'e', 'r', 't', - 'i', 'f', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\016', 't', - 'l', 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', - 'e', '\022', 'q', '\n', '\023', 's', 'e', 's', 's', 'i', 'o', 'n', - '_', 't', 'i', 'c', 'k', 'e', 't', '_', 'k', 'e', 'y', 's', - '\030', '\003', ' ', '\001', '(', '\013', '2', '?', '.', 'e', 'n', 'v', + 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', + 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', + 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'H', '\000', 'R', + '\021', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', + 'o', 'n', 't', 'e', 'x', 't', '\022', 'a', '\n', '\016', 'g', 'e', + 'n', 'e', 'r', 'i', 'c', '_', 's', 'e', 'c', 'r', 'e', 't', + '\030', '\005', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', - 'v', '3', '.', 'T', 'l', 's', 'S', 'e', 's', 's', 'i', 'o', - 'n', 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', 'H', - '\000', 'R', '\021', 's', 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', - 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', '\022', 'x', '\n', '\022', - 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', - 'o', 'n', 't', 'e', 'x', 't', '\030', '\004', ' ', '\001', '(', '\013', - '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', - 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', - 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', - 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', - 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', - 't', 'H', '\000', 'R', '\021', 'v', 'a', 'l', 'i', 'd', 'a', 't', - 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'a', - '\n', '\016', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 's', 'e', - 'c', 'r', 'e', 't', '\030', '\005', ' ', '\001', '(', '\013', '2', '8', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', - 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', - 't', 'l', 's', '.', 'v', '3', '.', 'G', 'e', 'n', 'e', 'r', - 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', 'H', '\000', 'R', '\r', - 'g', 'e', 'n', 'e', 'r', 'i', 'c', 'S', 'e', 'c', 'r', 'e', - 't', ':', '\037', '\232', '\305', '\210', '\036', '\032', '\n', '\030', 'e', 'n', - 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', - 'u', 't', 'h', '.', 'S', 'e', 'c', 'r', 'e', 't', 'B', '\006', - '\n', '\004', 't', 'y', 'p', 'e', 'B', '\250', '\001', '\n', '7', 'i', - 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', - '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', - 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', - 't', 'l', 's', '.', 'v', '3', 'B', '\013', 'S', 'e', 'c', 'r', - 'e', 't', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'V', 'g', - 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', - 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', - 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', - 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', - '/', 't', 'l', 's', '/', 'v', '3', ';', 't', 'l', 's', 'v', - '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', - 'r', 'o', 't', 'o', '3', + 'v', '3', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'S', 'e', + 'c', 'r', 'e', 't', 'H', '\000', 'R', '\r', 'g', 'e', 'n', 'e', + 'r', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', ':', '\037', '\232', + '\305', '\210', '\036', '\032', '\n', '\030', 'e', 'n', 'v', 'o', 'y', '.', + 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', + 'S', 'e', 'c', 'r', 'e', 't', 'B', '\006', '\n', '\004', 't', 'y', + 'p', 'e', 'B', '\250', '\001', '\n', '7', 'i', 'o', '.', 'e', 'n', + 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', + 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', + 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', + 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', + 'v', '3', 'B', '\013', 'S', 'e', 'c', 'r', 'e', 't', 'P', 'r', + 'o', 't', 'o', 'P', '\001', 'Z', 'V', 'g', 'i', 't', 'h', 'u', + 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', + 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', + 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', + 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', + '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', + '/', 'v', '3', ';', 't', 'l', 's', 'v', '3', '\272', '\200', '\310', + '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', + '3', }; static _upb_DefPool_Init *deps[8] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h index 08659c3674c..2c044fa8e29 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h @@ -27,6 +27,11 @@ UPB_INLINE const upb_MessageDef *envoy_extensions_transport_sockets_tls_v3_Gener return upb_DefPool_FindMessageByName(s, "envoy.extensions.transport_sockets.tls.v3.GenericSecret"); } +UPB_INLINE const upb_MessageDef *envoy_extensions_transport_sockets_tls_v3_GenericSecret_SecretsEntry_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_extensions_transport_sockets_tls_v3_secret_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.extensions.transport_sockets.tls.v3.GenericSecret.SecretsEntry"); +} + UPB_INLINE const upb_MessageDef *envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_getmsgdef(upb_DefPool *s) { _upb_DefPool_LoadDefInit(s, &envoy_extensions_transport_sockets_tls_v3_secret_proto_upbdefinit); return upb_DefPool_FindMessageByName(s, "envoy.extensions.transport_sockets.tls.v3.SdsSecretConfig"); diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c index 02c14a91482..9ec9aeabaa3 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c @@ -11,13 +11,15 @@ #include "envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h" #include "envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h" +extern _upb_DefPool_Init envoy_config_common_matcher_v3_matcher_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init envoy_config_core_v3_protocol_proto_upbdefinit; +extern _upb_DefPool_Init envoy_config_route_v3_route_components_proto_upbdefinit; extern _upb_DefPool_Init envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[2490] = { +static const char descriptor[3079] = { '\n', '>', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', '/', 'h', 't', 't', 'p', '/', 'v', '3', @@ -26,211 +28,262 @@ static const char descriptor[2490] = { 'r', 'o', 't', 'o', '\022', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', '.', 'h', 't', 't', - 'p', '.', 'v', '3', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', + 'p', '.', 'v', '3', '\032', ',', 'e', 'n', 'v', 'o', 'y', '/', + 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'm', 'm', 'o', + 'n', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', + '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', + 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', + 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', + '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', + 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', - 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', - 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', - 'e', '/', 'v', '3', '/', 'p', 'r', 'o', 't', 'o', 'c', 'o', - 'l', '.', 'p', 'r', 'o', 't', 'o', '\032', 'Y', 'e', 'n', 'v', - 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'n', 'e', - 't', 'w', 'o', 'r', 'k', '/', 'h', 't', 't', 'p', '_', 'c', - 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', - 'n', 'a', 'g', 'e', 'r', '/', 'v', '3', '/', 'h', 't', 't', - 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', - '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'p', 'r', 'o', - 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', - 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', - 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', - 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', - 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\302', - '\017', '\n', '\023', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'j', - '\n', '\034', 'c', 'o', 'm', 'm', 'o', 'n', '_', 'h', 't', 't', - 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', - 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', - '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', - 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\031', 'c', 'o', 'm', - 'm', 'o', 'n', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'v', - '\n', '\036', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'h', - 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', - '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', - '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'H', 't', - 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', - 't', 'i', 'o', 'n', 's', 'R', '\033', 'u', 'p', 's', 't', 'r', - 'e', 'a', 'm', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '~', - '\n', '\024', 'e', 'x', 'p', 'l', 'i', 'c', 'i', 't', '_', 'h', - 't', 't', 'p', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', - ' ', '\001', '(', '\013', '2', 'J', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', - 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', '.', 'h', 't', - 't', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'P', 'r', + 'v', '3', '/', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '.', + 'p', 'r', 'o', 't', 'o', '\032', ',', 'e', 'n', 'v', 'o', 'y', + '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', + 'e', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e', '_', 'c', + 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', + 'o', 't', 'o', '\032', 'Y', 'e', 'n', 'v', 'o', 'y', '/', 'e', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', + 'l', 't', 'e', 'r', 's', '/', 'n', 'e', 't', 'w', 'o', 'r', + 'k', '/', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', + 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', + 'r', '/', 'v', '3', '/', 'h', 't', 't', 'p', '_', 'c', 'o', + 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', + 'a', 'g', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', + 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', + 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', + 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', + 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', + '.', 'p', 'r', 'o', 't', 'o', '\"', '\263', '\023', '\n', '\023', 'H', + 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', + 'p', 't', 'i', 'o', 'n', 's', '\022', 'j', '\n', '\034', 'c', 'o', + 'm', 'm', 'o', 'n', '_', 'h', 't', 't', 'p', '_', 'p', 'r', + 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', + 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', ')', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', + 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', + 'o', 'n', 's', 'R', '\031', 'c', 'o', 'm', 'm', 'o', 'n', 'H', + 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', + 'p', 't', 'i', 'o', 'n', 's', '\022', 'v', '\n', '\036', 'u', 'p', + 's', 't', 'r', 'e', 'a', 'm', '_', 'h', 't', 't', 'p', '_', + 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', + 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '1', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'U', 'p', + 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', - 's', '.', 'E', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'H', 't', - 't', 'p', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\022', - 'e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'H', 't', 't', 'p', - 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\226', '\001', '\n', '\036', 'u', - 's', 'e', '_', 'd', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', - 'm', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'c', - 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', - 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', 's', '.', 'u', 'p', 's', 't', 'r', - 'e', 'a', 'm', 's', '.', 'h', 't', 't', 'p', '.', 'v', '3', - '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', - 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'U', 's', 'e', - 'D', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'H', 't', - 't', 'p', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\033', - 'u', 's', 'e', 'D', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', - 'm', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', - 'f', 'i', 'g', '\022', 'i', '\n', '\013', 'a', 'u', 't', 'o', '_', - 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', - '2', 'F', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', + 's', 'R', '\033', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'H', + 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', + 'p', 't', 'i', 'o', 'n', 's', '\022', '~', '\n', '\024', 'e', 'x', + 'p', 'l', 'i', 'c', 'i', 't', '_', 'h', 't', 't', 'p', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', + '2', 'J', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', '.', 'h', 't', 't', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'A', 'u', - 't', 'o', 'H', 't', 't', 'p', 'C', 'o', 'n', 'f', 'i', 'g', - 'H', '\000', 'R', '\n', 'a', 'u', 't', 'o', 'C', 'o', 'n', 'f', - 'i', 'g', '\022', 'j', '\n', '\014', 'h', 't', 't', 'p', '_', 'f', - 'i', 'l', 't', 'e', 'r', 's', '\030', '\006', ' ', '\003', '(', '\013', - '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', - 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', - 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', - 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', - 'v', '3', '.', 'H', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', - 'r', 'R', '\013', 'h', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', - 'r', 's', '\022', 'd', '\n', '\030', 'h', 'e', 'a', 'd', 'e', 'r', - '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', - 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\007', ' ', '\001', '(', '\013', - '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', - 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 'h', 'e', - 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\326', '\002', '\n', - '\022', 'E', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'H', 't', 't', - 'p', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '`', '\n', '\025', 'h', - 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', - '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\001', - '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', - 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'H', '\000', - 'R', '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'b', '\n', - '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', - 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', - '\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', - 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', - 's', 'H', '\000', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', - 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', - 's', '\022', 'b', '\n', '\026', 'h', 't', 't', 'p', '3', '_', 'p', - 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', - 'o', 'n', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '*', '.', - 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', - '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', - 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', - 't', 'i', 'o', 'n', 's', 'H', '\000', 'R', '\024', 'h', 't', 't', - 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', - 't', 'i', 'o', 'n', 's', 'B', '\026', '\n', '\017', 'p', 'r', 'o', - 't', 'o', 'c', 'o', 'l', '_', 'c', 'o', 'n', 'f', 'i', 'g', - '\022', '\003', '\370', 'B', '\001', '\032', '\275', '\002', '\n', '\027', 'U', 's', - 'e', 'D', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'H', - 't', 't', 'p', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '^', '\n', - '\025', 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', - 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', - ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - 'R', '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '`', '\n', - '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', - 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', - '\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', - 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', - 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', - 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', - 's', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o', 't', - 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', - '`', '\n', '\026', 'h', 't', 't', 'p', '3', '_', 'p', 'r', 'o', - 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', - 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '3', + 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'E', 'x', + 'p', 'l', 'i', 'c', 'i', 't', 'H', 't', 't', 'p', 'C', 'o', + 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\022', 'e', 'x', 'p', 'l', + 'i', 'c', 'i', 't', 'H', 't', 't', 'p', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', '\226', '\001', '\n', '\036', 'u', 's', 'e', '_', 'd', + 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', '_', 'p', 'r', + 'o', 't', 'o', 'c', 'o', 'l', '_', 'c', 'o', 'n', 'f', 'i', + 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 's', '.', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', + '.', 'h', 't', 't', 'p', '.', 'v', '3', '.', 'H', 't', 't', + 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', '.', 'U', 's', 'e', 'D', 'o', 'w', 'n', + 's', 't', 'r', 'e', 'a', 'm', 'H', 't', 't', 'p', 'C', 'o', + 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\033', 'u', 's', 'e', 'D', + 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'P', 'r', 'o', + 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', '\022', + 'i', '\n', '\013', 'a', 'u', 't', 'o', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', 'F', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '.', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', + 's', '.', 'h', 't', 't', 'p', '.', 'v', '3', '.', 'H', 't', + 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', '.', 'A', 'u', 't', 'o', 'H', 't', + 't', 'p', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\n', + 'a', 'u', 't', 'o', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'j', + '\n', '\014', 'h', 't', 't', 'p', '_', 'f', 'i', 'l', 't', 'e', + 'r', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', 'G', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', + 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', + 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', + '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', + 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', + 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\013', 'h', + 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', 'd', + '\n', '\030', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'v', 'a', 'l', + 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 'f', + 'i', 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', '*', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', + 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', 'R', '\026', 'h', 'e', 'a', 'd', 'e', 'r', + 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', + 'n', 'f', 'i', 'g', '\022', 'u', '\n', '\021', 'o', 'u', 't', 'l', + 'i', 'e', 'r', '_', 'd', 'e', 't', 'e', 'c', 't', 'i', 'o', + 'n', '\030', '\010', ' ', '\001', '(', '\013', '2', 'H', '.', 'e', 'n', + 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 's', '.', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', + '.', 'h', 't', 't', 'p', '.', 'v', '3', '.', 'H', 't', 't', + 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', + 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', 'R', '\020', 'o', + 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', + 'i', 'o', 'n', '\022', 'n', '\n', '\027', 'r', 'e', 'q', 'u', 'e', + 's', 't', '_', 'm', 'i', 'r', 'r', 'o', 'r', '_', 'p', 'o', + 'l', 'i', 'c', 'i', 'e', 's', '\030', '\t', ' ', '\003', '(', '\013', + '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', + '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', + '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', + 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\025', 'r', 'e', + 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', + 'o', 'l', 'i', 'c', 'i', 'e', 's', '\022', 'N', '\n', '\013', 'h', + 'a', 's', 'h', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\n', + ' ', '\003', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', + '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', + 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', + 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', + 'i', 'c', 'y', 'R', '\n', 'h', 'a', 's', 'h', 'P', 'o', 'l', + 'i', 'c', 'y', '\022', 'E', '\n', '\014', 'r', 'e', 't', 'r', 'y', + '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\013', ' ', '\001', '(', + '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', + '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', + 'y', 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', + 'c', 'y', '\032', '\326', '\002', '\n', '\022', 'E', 'x', 'p', 'l', 'i', + 'c', 'i', 't', 'H', 't', 't', 'p', 'C', 'o', 'n', 'f', 'i', + 'g', '\022', '`', '\n', '\025', 'h', 't', 't', 'p', '_', 'p', 'r', + 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', + 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', + 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', + 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', + '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', 'H', '\000', 'R', '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', - 'o', 'n', 's', 'R', '\024', 'h', 't', 't', 'p', '3', 'P', 'r', - 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', - 's', '\032', '\265', '\003', '\n', '\016', 'A', 'u', 't', 'o', 'H', 't', - 't', 'p', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '^', '\n', '\025', - 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', - 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', + 'o', 'n', 's', '\022', 'b', '\n', '\026', 'h', 't', 't', 'p', '2', + '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', + 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', + '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', + 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', + 'O', 'p', 't', 'i', 'o', 'n', 's', 'H', '\000', 'R', '\024', 'h', + 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', + 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'b', '\n', '\026', 'h', + 't', 't', 'p', '3', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', + 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', - 'v', '3', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', - 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', - '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', - 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '`', '\n', '\026', - 'h', 't', 't', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', 'c', - 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', - ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', - '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', - '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', - 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '`', - '\n', '\026', 'h', 't', 't', 'p', '3', '_', 'p', 'r', 'o', 't', - 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', - '\030', '\003', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', - 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', - 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '3', 'P', + 'v', '3', '.', 'H', 't', 't', 'p', '3', 'P', 'r', 'o', 't', + 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'H', + '\000', 'R', '\024', 'h', 't', 't', 'p', '3', 'P', 'r', 'o', 't', + 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', + '\026', '\n', '\017', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', + 'c', 'o', 'n', 'f', 'i', 'g', '\022', '\003', '\370', 'B', '\001', '\032', + '\275', '\002', '\n', '\027', 'U', 's', 'e', 'D', 'o', 'w', 'n', 's', + 't', 'r', 'e', 'a', 'm', 'H', 't', 't', 'p', 'C', 'o', 'n', + 'f', 'i', 'g', '\022', '^', '\n', '\025', 'h', 't', 't', 'p', '_', + 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', + 'i', 'o', 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', + 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', + 'p', 't', 'i', 'o', 'n', 's', 'R', '\023', 'h', 't', 't', 'p', + 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', + 'o', 'n', 's', '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '2', + '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', + 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', + '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', + 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', + 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', + 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', 't', + 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', '\022', '`', '\n', '\026', 'h', 't', 't', + 'p', '3', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', + 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\001', '(', + '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'H', 't', 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', + 't', 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', + 'O', 'p', 't', 'i', 'o', 'n', 's', '\032', '\265', '\003', '\n', '\016', + 'A', 'u', 't', 'o', 'H', 't', 't', 'p', 'C', 'o', 'n', 'f', + 'i', 'g', '\022', '^', '\n', '\025', 'h', 't', 't', 'p', '_', 'p', + 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', + 'o', 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', + 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', + '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', + 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', + 't', 'i', 'o', 'n', 's', 'R', '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', - 'n', 's', 'R', '\024', 'h', 't', 't', 'p', '3', 'P', 'r', 'o', - 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', - '\022', '\177', '\n', '!', 'a', 'l', 't', 'e', 'r', 'n', 'a', 't', - 'e', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '_', - 'c', 'a', 'c', 'h', 'e', '_', 'o', 'p', 't', 'i', 'o', 'n', - 's', '\030', '\004', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', - 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', - 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'l', 't', 'e', 'r', - 'n', 'a', 't', 'e', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', - 's', 'C', 'a', 'c', 'h', 'e', 'O', 'p', 't', 'i', 'o', 'n', - 's', 'R', '\036', 'a', 'l', 't', 'e', 'r', 'n', 'a', 't', 'e', - 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', 'C', 'a', 'c', - 'h', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', ' ', '\n', - '\031', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'p', 'r', - 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', - 'n', 's', '\022', '\003', '\370', 'B', '\001', 'B', '\250', '\001', '\n', '0', - 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', - 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', - 'n', 's', 'i', 'o', 'n', 's', '.', 'u', 'p', 's', 't', 'r', - 'e', 'a', 'm', 's', '.', 'h', 't', 't', 'p', '.', 'v', '3', - 'B', '\030', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', - 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'P', 'r', 'o', - 't', 'o', 'P', '\001', 'Z', 'P', 'g', 'i', 't', 'h', 'u', 'b', - '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', - 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', - 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', - 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - 's', '/', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', '/', - 'h', 't', 't', 'p', '/', 'v', '3', ';', 'h', 't', 't', 'p', - 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', - 'p', 'r', 'o', 't', 'o', '3', + 'n', 's', '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '2', '_', + 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', + 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '*', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', + 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', + 'p', 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', 't', 'p', + '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', + 'i', 'o', 'n', 's', '\022', '`', '\n', '\026', 'h', 't', 't', 'p', + '3', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', + 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\001', '(', '\013', + '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', + 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', + 'H', 't', 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', + 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', + 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', + 'p', 't', 'i', 'o', 'n', 's', '\022', '\177', '\n', '!', 'a', 'l', + 't', 'e', 'r', 'n', 'a', 't', 'e', '_', 'p', 'r', 'o', 't', + 'o', 'c', 'o', 'l', 's', '_', 'c', 'a', 'c', 'h', 'e', '_', + 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\001', '(', + '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', + 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', + '.', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'e', 'P', 'r', + 'o', 't', 'o', 'c', 'o', 'l', 's', 'C', 'a', 'c', 'h', 'e', + 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\036', 'a', 'l', 't', + 'e', 'r', 'n', 'a', 't', 'e', 'P', 'r', 'o', 't', 'o', 'c', + 'o', 'l', 's', 'C', 'a', 'c', 'h', 'e', 'O', 'p', 't', 'i', + 'o', 'n', 's', '\032', 'q', '\n', '\020', 'O', 'u', 't', 'l', 'i', + 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\022', + ']', '\n', '\r', 'e', 'r', 'r', 'o', 'r', '_', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '.', + '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', + 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', + 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', + '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'e', 'r', + 'r', 'o', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', ' ', + '\n', '\031', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'p', + 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', + 'o', 'n', 's', '\022', '\003', '\370', 'B', '\001', 'B', '\250', '\001', '\n', + '0', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', + 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'u', 'p', 's', 't', + 'r', 'e', 'a', 'm', 's', '.', 'h', 't', 't', 'p', '.', 'v', + '3', 'B', '\030', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', + 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'P', 'r', + 'o', 't', 'o', 'P', '\001', 'Z', 'P', 'g', 'i', 't', 'h', 'u', + 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', + 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', + 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', + 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', + 'n', 's', '/', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 's', + '/', 'h', 't', 't', 'p', '/', 'v', '3', ';', 'h', 't', 't', + 'p', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', + '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[6] = { +static _upb_DefPool_Init *deps[8] = { + &envoy_config_common_matcher_v3_matcher_proto_upbdefinit, &envoy_config_core_v3_extension_proto_upbdefinit, &envoy_config_core_v3_protocol_proto_upbdefinit, + &envoy_config_route_v3_route_components_proto_upbdefinit, &envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager_proto_upbdefinit, &udpa_annotations_status_proto_upbdefinit, &validate_validate_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h index b38cc131183..cde9e20d56c 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h @@ -42,6 +42,11 @@ UPB_INLINE const upb_MessageDef *envoy_extensions_upstreams_http_v3_HttpProtocol return upb_DefPool_FindMessageByName(s, "envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig"); } +UPB_INLINE const upb_MessageDef *envoy_extensions_upstreams_http_v3_HttpProtocolOptions_OutlierDetection_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_extensions_upstreams_http_v3_http_protocol_options_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.extensions.upstreams.http.v3.HttpProtocolOptions.OutlierDetection"); +} + #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c index b51b64152a1..5860cf0f676 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c @@ -15,7 +15,7 @@ extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[388] = { +static const char descriptor[555] = { '\n', '\037', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'h', 't', 't', 'p', '/', 'v', '3', '/', 'c', 'o', 'o', 'k', 'i', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\022', 'e', @@ -27,28 +27,42 @@ static const char descriptor[388] = { 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', - 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'p', '\n', - '\006', 'C', 'o', 'o', 'k', 'i', 'e', '\022', '\033', '\n', '\004', 'n', - 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', - 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', - '\022', '5', '\n', '\003', 't', 't', 'l', '\030', '\002', ' ', '\001', '(', - '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', - 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', - 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', - '2', '\000', 'R', '\003', 't', 't', 'l', '\022', '\022', '\n', '\004', 'p', - 'a', 't', 'h', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'p', - 'a', 't', 'h', 'B', '{', '\n', ' ', 'i', 'o', '.', 'e', 'n', - 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', - 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'h', 't', 't', 'p', - '.', 'v', '3', 'B', '\013', 'C', 'o', 'o', 'k', 'i', 'e', 'P', - 'r', 'o', 't', 'o', 'P', '\001', 'Z', '@', 'g', 'i', 't', 'h', - 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', - 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', - 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', - 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'h', 't', - 't', 'p', '/', 'v', '3', ';', 'h', 't', 't', 'p', 'v', '3', - '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', - 'o', 't', 'o', '3', + 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\265', '\001', + '\n', '\006', 'C', 'o', 'o', 'k', 'i', 'e', '\022', '\033', '\n', '\004', + 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', + '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', + 'e', '\022', '5', '\n', '\003', 't', 't', 'l', '\030', '\002', ' ', '\001', + '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', + 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', + 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', + '\002', '2', '\000', 'R', '\003', 't', 't', 'l', '\022', '\022', '\n', '\004', + 'p', 'a', 't', 'h', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', + 'p', 'a', 't', 'h', '\022', 'C', '\n', '\n', 'a', 't', 't', 'r', + 'i', 'b', 'u', 't', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', + '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', + 'e', '.', 'h', 't', 't', 'p', '.', 'v', '3', '.', 'C', 'o', + 'o', 'k', 'i', 'e', 'A', 't', 't', 'r', 'i', 'b', 'u', 't', + 'e', 'R', '\n', 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', + 's', '\"', '_', '\n', '\017', 'C', 'o', 'o', 'k', 'i', 'e', 'A', + 't', 't', 'r', 'i', 'b', 'u', 't', 'e', '\022', '%', '\n', '\004', + 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\021', + '\372', 'B', '\016', 'r', '\014', '\020', '\001', '(', '\200', '\200', '\001', '\300', + '\001', '\001', '\310', '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', '\022', + '%', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', + '(', '\t', 'B', '\017', '\372', 'B', '\014', 'r', '\n', '(', '\200', '\200', + '\001', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\005', 'v', 'a', 'l', + 'u', 'e', 'B', '{', '\n', ' ', 'i', 'o', '.', 'e', 'n', 'v', + 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', + 'y', '.', 't', 'y', 'p', 'e', '.', 'h', 't', 't', 'p', '.', + 'v', '3', 'B', '\013', 'C', 'o', 'o', 'k', 'i', 'e', 'P', 'r', + 'o', 't', 'o', 'P', '\001', 'Z', '@', 'g', 'i', 't', 'h', 'u', + 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', + 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', + 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', + 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'h', 't', 't', + 'p', '/', 'v', '3', ';', 'h', 't', 't', 'p', 'v', '3', '\272', + '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', + 't', 'o', '3', }; static _upb_DefPool_Init *deps[4] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h index 4ea22a66c3d..cf0cb17c91c 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h @@ -27,6 +27,11 @@ UPB_INLINE const upb_MessageDef *envoy_type_http_v3_Cookie_getmsgdef(upb_DefPool return upb_DefPool_FindMessageByName(s, "envoy.type.http.v3.Cookie"); } +UPB_INLINE const upb_MessageDef *envoy_type_http_v3_CookieAttribute_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &envoy_type_http_v3_cookie_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "envoy.type.http.v3.CookieAttribute"); +} + #ifdef __cplusplus } /* extern "C" */ diff --git a/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c index 573d8a31244..af3896b8dc5 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c @@ -16,7 +16,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[1322] = { +static const char descriptor[1346] = { '\n', '&', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 't', 'r', 'a', 'c', 'i', 'n', 'g', '/', 'v', '3', '/', 'c', 'u', 's', 't', 'o', 'm', '_', 't', 'a', 'g', '.', 'p', @@ -33,7 +33,7 @@ static const char descriptor[1322] = { 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', - 'o', '\"', '\324', '\007', '\n', '\t', 'C', 'u', 's', 't', 'o', 'm', + 'o', '\"', '\354', '\007', '\n', '\t', 'C', 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', '\022', '\031', '\n', '\003', 't', 'a', 'g', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\003', 't', 'a', 'g', '\022', 'D', '\n', '\007', 'l', 'i', @@ -62,7 +62,9 @@ static const char descriptor[1322] = { 'i', 'n', 'g', '.', 'v', '3', '.', 'C', 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'H', '\000', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', - 'a', '\032', 'X', '\n', '\007', 'L', 'i', 't', 'e', 'r', 'a', 'l', + 'a', '\022', '\026', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\006', + ' ', '\001', '(', '\t', 'H', '\000', 'R', '\005', 'v', 'a', 'l', 'u', + 'e', '\032', 'X', '\n', '\007', 'L', 'i', 't', 'e', 'r', 'a', 'l', '\022', '\035', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '.', '\232', '\305', '\210', diff --git a/deps/grpc/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c index 7c6b45371f3..0a52d121c3e 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c @@ -11,7 +11,7 @@ #include "google/api/http.upbdefs.h" #include "google/api/http.upb_minitable.h" -static const char descriptor[684] = { +static const char descriptor[681] = { '\n', '\025', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'a', 'p', 'i', '/', 'h', 't', 't', 'p', '.', 'p', 'r', 'o', 't', 'o', '\022', '\n', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'a', 'p', 'i', '\"', @@ -59,7 +59,7 @@ static const char descriptor[684] = { '\022', '\022', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '\022', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', - 'p', 'a', 't', 'h', 'B', 'j', '\n', '\016', 'c', 'o', 'm', '.', + 'p', 'a', 't', 'h', 'B', 'g', '\n', '\016', 'c', 'o', 'm', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'a', 'p', 'i', 'B', '\t', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'A', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'g', 'o', 'l', 'a', @@ -67,8 +67,8 @@ static const char descriptor[684] = { 'o', 't', 'o', '/', 'g', 'o', 'o', 'g', 'l', 'e', 'a', 'p', 'i', 's', '/', 'a', 'p', 'i', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', ';', 'a', 'n', 'n', 'o', 't', - 'a', 't', 'i', 'o', 'n', 's', '\370', '\001', '\001', '\242', '\002', '\004', - 'G', 'A', 'P', 'I', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'a', 't', 'i', 'o', 'n', 's', '\242', '\002', '\004', 'G', 'A', 'P', + 'I', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[1] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c index 9e6b94d717a..df171378b08 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c @@ -13,7 +13,7 @@ extern _upb_DefPool_Init google_protobuf_any_proto_upbdefinit; -static const char descriptor[301] = { +static const char descriptor[298] = { '\n', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'a', 'p', 'i', '/', 'h', 't', 't', 'p', 'b', 'o', 'd', 'y', '.', 'p', 'r', 'o', 't', 'o', '\022', '\n', 'g', 'o', 'o', 'g', 'l', 'e', '.', @@ -29,7 +29,7 @@ static const char descriptor[301] = { 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\n', 'e', 'x', 't', - 'e', 'n', 's', 'i', 'o', 'n', 's', 'B', 'h', '\n', '\016', 'c', + 'e', 'n', 's', 'i', 'o', 'n', 's', 'B', 'e', '\n', '\016', 'c', 'o', 'm', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'a', 'p', 'i', 'B', '\r', 'H', 't', 't', 'p', 'B', 'o', 'd', 'y', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', ';', 'g', 'o', 'o', 'g', @@ -37,9 +37,8 @@ static const char descriptor[301] = { 'g', '/', 'g', 'e', 'n', 'p', 'r', 'o', 't', 'o', '/', 'g', 'o', 'o', 'g', 'l', 'e', 'a', 'p', 'i', 's', '/', 'a', 'p', 'i', '/', 'h', 't', 't', 'p', 'b', 'o', 'd', 'y', ';', 'h', - 't', 't', 'p', 'b', 'o', 'd', 'y', '\370', '\001', '\001', '\242', '\002', - '\004', 'G', 'A', 'P', 'I', 'b', '\006', 'p', 'r', 'o', 't', 'o', - '3', + 't', 't', 'p', 'b', 'o', 'd', 'y', '\242', '\002', '\004', 'G', 'A', + 'P', 'I', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[2] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c index 6d592db9fe4..de13c54ef17 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c @@ -13,7 +13,7 @@ extern _upb_DefPool_Init src_proto_grpc_channelz_v2_property_list_proto_upbdefinit; -static const char descriptor[1748] = { +static const char descriptor[2061] = { '\n', '(', 's', 'r', 'c', '/', 'p', 'r', 'o', 't', 'o', '/', 'g', 'r', 'p', 'c', '/', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '/', 'v', '2', '/', 'p', 'r', 'o', 'm', 'i', 's', 'e', @@ -23,7 +23,7 @@ static const char descriptor[1748] = { 'g', 'r', 'p', 'c', '/', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '/', 'v', '2', '/', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'l', 'i', 's', 't', '.', 'p', 'r', 'o', 't', 'o', - '\"', '\335', '\014', '\n', '\007', 'P', 'r', 'o', 'm', 'i', 's', 'e', + '\"', '\226', '\017', '\n', '\007', 'P', 'r', 'o', 'm', 'i', 's', 'e', '\022', 'I', '\n', '\016', 'c', 'u', 's', 't', 'o', 'm', '_', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', @@ -67,99 +67,125 @@ static const char descriptor[1748] = { 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', '.', 'M', 'a', 'p', 'H', '\000', 'R', '\n', 'm', 'a', 'p', 'P', 'r', 'o', - 'm', 'i', 's', 'e', '\032', '\\', '\n', '\006', 'C', 'u', 's', 't', - 'o', 'm', '\022', '\022', '\n', '\004', 't', 'y', 'p', 'e', '\030', '\001', - ' ', '\001', '(', '\t', 'R', '\004', 't', 'y', 'p', 'e', '\022', '>', - '\n', '\n', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', - '\030', '\002', ' ', '\001', '(', '\013', '2', '\036', '.', 'g', 'r', 'p', + 'm', 'i', 's', 'e', '\022', 'M', '\n', '\020', 'f', 'o', 'r', '_', + 'e', 'a', 'c', 'h', '_', 'p', 'r', 'o', 'm', 'i', 's', 'e', + '\030', '\t', ' ', '\001', '(', '\013', '2', '!', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', 'v', - '2', '.', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'y', 'L', 'i', - 's', 't', 'R', '\n', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', - 'e', 's', '\032', '\237', '\001', '\n', '\002', 'I', 'f', '\022', '\034', '\n', - '\t', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\001', - ' ', '\001', '(', '\010', 'R', '\t', 'c', 'o', 'n', 'd', 'i', 't', - 'i', 'o', 'n', '\022', '!', '\n', '\014', 't', 'r', 'u', 'e', '_', - 'f', 'a', 'c', 't', 'o', 'r', 'y', '\030', '\002', ' ', '\001', '(', - '\t', 'R', '\013', 't', 'r', 'u', 'e', 'F', 'a', 'c', 't', 'o', - 'r', 'y', '\022', '#', '\n', '\r', 'f', 'a', 'l', 's', 'e', '_', - 'f', 'a', 'c', 't', 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', - '\t', 'R', '\014', 'f', 'a', 'l', 's', 'e', 'F', 'a', 'c', 't', - 'o', 'r', 'y', '\022', '3', '\n', '\007', 'p', 'r', 'o', 'm', 'i', - 's', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', + '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', '.', 'F', 'o', + 'r', 'E', 'a', 'c', 'h', 'H', '\000', 'R', '\016', 'f', 'o', 'r', + 'E', 'a', 'c', 'h', 'P', 'r', 'o', 'm', 'i', 's', 'e', '\032', + '\\', '\n', '\006', 'C', 'u', 's', 't', 'o', 'm', '\022', '\022', '\n', + '\004', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', + '\004', 't', 'y', 'p', 'e', '\022', '>', '\n', '\n', 'p', 'r', 'o', + 'p', 'e', 'r', 't', 'i', 'e', 's', '\030', '\002', ' ', '\001', '(', + '\013', '2', '\036', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', + 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', + 'p', 'e', 'r', 't', 'y', 'L', 'i', 's', 't', 'R', '\n', 'p', + 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\032', '\237', '\001', + '\n', '\002', 'I', 'f', '\022', '\034', '\n', '\t', 'c', 'o', 'n', 'd', + 'i', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\010', 'R', + '\t', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', '!', + '\n', '\014', 't', 'r', 'u', 'e', '_', 'f', 'a', 'c', 't', 'o', + 'r', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 't', 'r', + 'u', 'e', 'F', 'a', 'c', 't', 'o', 'r', 'y', '\022', '#', '\n', + '\r', 'f', 'a', 'l', 's', 'e', '_', 'f', 'a', 'c', 't', 'o', + 'r', 'y', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'f', 'a', + 'l', 's', 'e', 'F', 'a', 'c', 't', 'o', 'r', 'y', '\022', '3', + '\n', '\007', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\030', '\004', ' ', + '\001', '(', '\013', '2', '\031', '.', 'g', 'r', 'p', 'c', '.', 'c', + 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', + 'r', 'o', 'm', 'i', 's', 'e', 'R', '\007', 'p', 'r', 'o', 'm', + 'i', 's', 'e', '\032', 't', '\n', '\004', 'L', 'o', 'o', 'p', '\022', + '!', '\n', '\014', 'l', 'o', 'o', 'p', '_', 'f', 'a', 'c', 't', + 'o', 'r', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'l', + 'o', 'o', 'p', 'F', 'a', 'c', 't', 'o', 'r', 'y', '\022', '3', + '\n', '\007', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\030', '\002', ' ', + '\001', '(', '\013', '2', '\031', '.', 'g', 'r', 'p', 'c', '.', 'c', + 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', + 'r', 'o', 'm', 'i', 's', 'e', 'R', '\007', 'p', 'r', 'o', 'm', + 'i', 's', 'e', '\022', '\024', '\n', '\005', 'y', 'i', 'e', 'l', 'd', + '\030', '\003', ' ', '\001', '(', '\010', 'R', '\005', 'y', 'i', 'e', 'l', + 'd', '\032', '\333', '\001', '\n', '\007', 'F', 'o', 'r', 'E', 'a', 'c', + 'h', '\022', '%', '\n', '\016', 'r', 'e', 'a', 'd', 'e', 'r', '_', + 'f', 'a', 'c', 't', 'o', 'r', 'y', '\030', '\001', ' ', '\001', '(', + '\t', 'R', '\r', 'r', 'e', 'a', 'd', 'e', 'r', 'F', 'a', 'c', + 't', 'o', 'r', 'y', '\022', '%', '\n', '\016', 'a', 'c', 't', 'i', + 'o', 'n', '_', 'f', 'a', 'c', 't', 'o', 'r', 'y', '\030', '\002', + ' ', '\001', '(', '\t', 'R', '\r', 'a', 'c', 't', 'i', 'o', 'n', + 'F', 'a', 'c', 't', 'o', 'r', 'y', '\022', '@', '\n', '\016', 'r', + 'e', 'a', 'd', 'e', 'r', '_', 'p', 'r', 'o', 'm', 'i', 's', + 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'r', + 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', + 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', 'R', '\r', + 'r', 'e', 'a', 'd', 'e', 'r', 'P', 'r', 'o', 'm', 'i', 's', + 'e', '\022', '@', '\n', '\016', 'a', 'c', 't', 'i', 'o', 'n', '_', + 'p', 'r', 'o', 'm', 'i', 's', 'e', '\030', '\004', ' ', '\001', '(', + '\013', '2', '\031', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', + 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', + 'm', 'i', 's', 'e', 'R', '\r', 'a', 'c', 't', 'i', 'o', 'n', + 'P', 'r', 'o', 'm', 'i', 's', 'e', '\032', '=', '\n', '\004', 'R', + 'a', 'c', 'e', '\022', '5', '\n', '\010', 'c', 'h', 'i', 'l', 'd', + 'r', 'e', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '\031', '.', + 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', + 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', + 'R', '\010', 'c', 'h', 'i', 'l', 'd', 'r', 'e', 'n', '\032', 'g', + '\n', '\007', 'S', 'e', 'q', 'S', 't', 'e', 'p', '\022', '\030', '\n', + '\007', 'f', 'a', 'c', 't', 'o', 'r', 'y', '\030', '\001', ' ', '\001', + '(', '\t', 'R', '\007', 'f', 'a', 'c', 't', 'o', 'r', 'y', '\022', + 'B', '\n', '\017', 'p', 'o', 'l', 'l', 'i', 'n', 'g', '_', 'p', + 'r', 'o', 'm', 'i', 's', 'e', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\031', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', + 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', + 'i', 's', 'e', 'R', '\016', 'p', 'o', 'l', 'l', 'i', 'n', 'g', + 'P', 'r', 'o', 'm', 'i', 's', 'e', '\032', '}', '\n', '\003', 'S', + 'e', 'q', '\022', '=', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', + ' ', '\001', '(', '\016', '2', ')', '.', 'g', 'r', 'p', 'c', '.', + 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', + 'P', 'r', 'o', 'm', 'i', 's', 'e', '.', 'C', 'o', 'm', 'p', + 'o', 's', 'i', 't', 'i', 'o', 'n', 'K', 'i', 'n', 'd', 'R', + '\004', 'k', 'i', 'n', 'd', '\022', '7', '\n', '\005', 's', 't', 'e', + 'p', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '!', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', - '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', 'R', - '\007', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\032', 't', '\n', '\004', - 'L', 'o', 'o', 'p', '\022', '!', '\n', '\014', 'l', 'o', 'o', 'p', - '_', 'f', 'a', 'c', 't', 'o', 'r', 'y', '\030', '\001', ' ', '\001', - '(', '\t', 'R', '\013', 'l', 'o', 'o', 'p', 'F', 'a', 'c', 't', - 'o', 'r', 'y', '\022', '3', '\n', '\007', 'p', 'r', 'o', 'm', 'i', + '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', '.', + 'S', 'e', 'q', 'S', 't', 'e', 'p', 'R', '\005', 's', 't', 'e', + 'p', 's', '\032', '\217', '\001', '\n', '\n', 'J', 'o', 'i', 'n', 'B', + 'r', 'a', 'n', 'c', 'h', '\022', '\030', '\n', '\007', 'f', 'a', 'c', + 't', 'o', 'r', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', + 'f', 'a', 'c', 't', 'o', 'r', 'y', '\022', 'D', '\n', '\017', 'p', + 'o', 'l', 'l', 'i', 'n', 'g', '_', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', - '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', 'R', - '\007', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\022', '\024', '\n', '\005', - 'y', 'i', 'e', 'l', 'd', '\030', '\003', ' ', '\001', '(', '\010', 'R', - '\005', 'y', 'i', 'e', 'l', 'd', '\032', '=', '\n', '\004', 'R', 'a', - 'c', 'e', '\022', '5', '\n', '\010', 'c', 'h', 'i', 'l', 'd', 'r', - 'e', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '\031', '.', 'g', - 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', - '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', 'R', - '\010', 'c', 'h', 'i', 'l', 'd', 'r', 'e', 'n', '\032', 'g', '\n', - '\007', 'S', 'e', 'q', 'S', 't', 'e', 'p', '\022', '\030', '\n', '\007', - 'f', 'a', 'c', 't', 'o', 'r', 'y', '\030', '\001', ' ', '\001', '(', - '\t', 'R', '\007', 'f', 'a', 'c', 't', 'o', 'r', 'y', '\022', 'B', - '\n', '\017', 'p', 'o', 'l', 'l', 'i', 'n', 'g', '_', 'p', 'r', - 'o', 'm', 'i', 's', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', - '\031', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', - 'e', 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', - 's', 'e', 'R', '\016', 'p', 'o', 'l', 'l', 'i', 'n', 'g', 'P', - 'r', 'o', 'm', 'i', 's', 'e', '\032', '}', '\n', '\003', 'S', 'e', - 'q', '\022', '=', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', + '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', 'H', + '\000', 'R', '\016', 'p', 'o', 'l', 'l', 'i', 'n', 'g', 'P', 'r', + 'o', 'm', 'i', 's', 'e', '\022', '\030', '\n', '\006', 'r', 'e', 's', + 'u', 'l', 't', '\030', '\003', ' ', '\001', '(', '\t', 'H', '\000', 'R', + '\006', 'r', 'e', 's', 'u', 'l', 't', 'B', '\007', '\n', '\005', 's', + 't', 'a', 't', 'e', '\032', '\207', '\001', '\n', '\004', 'J', 'o', 'i', + 'n', '\022', '=', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', ')', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', '.', 'C', 'o', 'm', 'p', 'o', 's', 'i', 't', 'i', 'o', 'n', 'K', 'i', 'n', 'd', 'R', '\004', - 'k', 'i', 'n', 'd', '\022', '7', '\n', '\005', 's', 't', 'e', 'p', - 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '!', '.', 'g', 'r', - 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', - 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', '.', 'S', - 'e', 'q', 'S', 't', 'e', 'p', 'R', '\005', 's', 't', 'e', 'p', - 's', '\032', '\217', '\001', '\n', '\n', 'J', 'o', 'i', 'n', 'B', 'r', - 'a', 'n', 'c', 'h', '\022', '\030', '\n', '\007', 'f', 'a', 'c', 't', - 'o', 'r', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'f', - 'a', 'c', 't', 'o', 'r', 'y', '\022', 'D', '\n', '\017', 'p', 'o', - 'l', 'l', 'i', 'n', 'g', '_', 'p', 'r', 'o', 'm', 'i', 's', - 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'r', - 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'z', '.', - 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', 'H', '\000', - 'R', '\016', 'p', 'o', 'l', 'l', 'i', 'n', 'g', 'P', 'r', 'o', - 'm', 'i', 's', 'e', '\022', '\030', '\n', '\006', 'r', 'e', 's', 'u', - 'l', 't', '\030', '\003', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\006', - 'r', 'e', 's', 'u', 'l', 't', 'B', '\007', '\n', '\005', 's', 't', - 'a', 't', 'e', '\032', '\207', '\001', '\n', '\004', 'J', 'o', 'i', 'n', - '\022', '=', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', - '(', '\016', '2', ')', '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', - 'a', 'n', 'n', 'e', 'l', 'z', '.', 'v', '2', '.', 'P', 'r', - 'o', 'm', 'i', 's', 'e', '.', 'C', 'o', 'm', 'p', 'o', 's', - 'i', 't', 'i', 'o', 'n', 'K', 'i', 'n', 'd', 'R', '\004', 'k', - 'i', 'n', 'd', '\022', '@', '\n', '\010', 'b', 'r', 'a', 'n', 'c', - 'h', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '$', '.', - 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', - 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', - '.', 'J', 'o', 'i', 'n', 'B', 'r', 'a', 'n', 'c', 'h', 'R', - '\010', 'b', 'r', 'a', 'n', 'c', 'h', 'e', 's', '\032', 'Q', '\n', - '\003', 'M', 'a', 'p', '\022', '3', '\n', '\007', 'p', 'r', 'o', 'm', - 'i', 's', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', - 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', 'l', - 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', 'e', - 'R', '\007', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\022', '\025', '\n', - '\006', 'm', 'a', 'p', '_', 'f', 'n', '\030', '\002', ' ', '\001', '(', - '\t', 'R', '\005', 'm', 'a', 'p', 'F', 'n', '\"', '3', '\n', '\017', - 'C', 'o', 'm', 'p', 'o', 's', 'i', 't', 'i', 'o', 'n', 'K', - 'i', 'n', 'd', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', - 'W', 'N', '\020', '\000', '\022', '\n', '\n', '\006', 'N', 'O', 'R', 'M', - 'A', 'L', '\020', '\001', '\022', '\007', '\n', '\003', 'T', 'R', 'Y', '\020', - '\002', 'B', '\t', '\n', '\007', 'p', 'r', 'o', 'm', 'i', 's', 'e', - 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'k', 'i', 'n', 'd', '\022', '@', '\n', '\010', 'b', 'r', 'a', 'n', + 'c', 'h', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '$', + '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', + 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', + 'e', '.', 'J', 'o', 'i', 'n', 'B', 'r', 'a', 'n', 'c', 'h', + 'R', '\010', 'b', 'r', 'a', 'n', 'c', 'h', 'e', 's', '\032', 'Q', + '\n', '\003', 'M', 'a', 'p', '\022', '3', '\n', '\007', 'p', 'r', 'o', + 'm', 'i', 's', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', + '.', 'g', 'r', 'p', 'c', '.', 'c', 'h', 'a', 'n', 'n', 'e', + 'l', 'z', '.', 'v', '2', '.', 'P', 'r', 'o', 'm', 'i', 's', + 'e', 'R', '\007', 'p', 'r', 'o', 'm', 'i', 's', 'e', '\022', '\025', + '\n', '\006', 'm', 'a', 'p', '_', 'f', 'n', '\030', '\002', ' ', '\001', + '(', '\t', 'R', '\005', 'm', 'a', 'p', 'F', 'n', '\"', '?', '\n', + '\017', 'C', 'o', 'm', 'p', 'o', 's', 'i', 't', 'i', 'o', 'n', + 'K', 'i', 'n', 'd', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', + 'O', 'W', 'N', '\020', '\000', '\022', '\n', '\n', '\006', 'N', 'O', 'R', + 'M', 'A', 'L', '\020', '\001', '\022', '\007', '\n', '\003', 'T', 'R', 'Y', + '\020', '\002', '\022', '\n', '\n', '\006', 'A', 'L', 'L', '_', 'O', 'K', + '\020', '\003', 'B', '\t', '\n', '\007', 'p', 'r', 'o', 'm', 'i', 's', + 'e', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[2] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h b/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h index 637a3783dd8..7132a3fcec7 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +++ b/deps/grpc/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h @@ -42,6 +42,11 @@ UPB_INLINE const upb_MessageDef *grpc_channelz_v2_Promise_Loop_getmsgdef(upb_Def return upb_DefPool_FindMessageByName(s, "grpc.channelz.v2.Promise.Loop"); } +UPB_INLINE const upb_MessageDef *grpc_channelz_v2_Promise_ForEach_getmsgdef(upb_DefPool *s) { + _upb_DefPool_LoadDefInit(s, &src_proto_grpc_channelz_v2_promise_proto_upbdefinit); + return upb_DefPool_FindMessageByName(s, "grpc.channelz.v2.Promise.ForEach"); +} + UPB_INLINE const upb_MessageDef *grpc_channelz_v2_Promise_Race_getmsgdef(upb_DefPool *s) { _upb_DefPool_LoadDefInit(s, &src_proto_grpc_channelz_v2_promise_proto_upbdefinit); return upb_DefPool_FindMessageByName(s, "grpc.channelz.v2.Promise.Race"); diff --git a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c index 59fe53cefb8..90f19ce7c93 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c @@ -13,7 +13,7 @@ extern _upb_DefPool_Init google_protobuf_descriptor_proto_upbdefinit; -static const char descriptor[893] = { +static const char descriptor[898] = { '\n', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\020', 'u', 'd', @@ -84,11 +84,11 @@ static const char descriptor[893] = { 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '.', 'F', 'i', 'l', 'e', 'M', 'i', 'g', 'r', 'a', 't', 'e', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\013', 'f', 'i', 'l', 'e', - 'M', 'i', 'g', 'r', 'a', 't', 'e', 'B', '$', 'Z', '\"', 'g', + 'M', 'i', 'g', 'r', 'a', 't', 'e', 'B', ')', 'Z', '\'', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', - 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'a', 'n', - 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', 'b', '\006', 'p', - 'r', 'o', 't', 'o', '3', + 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'u', 'd', + 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', + 'n', 's', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[2] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c index 9aea86bf427..22390962c55 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c @@ -14,7 +14,7 @@ extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_descriptor_proto_upbdefinit; -static const char descriptor[453] = { +static const char descriptor[458] = { '\n', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\022', '\020', 'u', @@ -48,11 +48,12 @@ static const char descriptor[453] = { 't', 'i', 'o', 'n', 's', '.', 'F', 'i', 'e', 'l', 'd', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\010', 's', 'e', 'c', 'u', 'r', - 'i', 't', 'y', 'B', ',', 'Z', '\"', 'g', 'i', 't', 'h', 'u', + 'i', 't', 'y', 'B', '1', 'Z', '\'', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', 'f', '/', 'x', - 'd', 's', '/', 'g', 'o', '/', 'a', 'n', 'n', 'o', 't', 'a', - 't', 'i', 'o', 'n', 's', '\272', '\200', '\310', '\321', '\006', '\002', '\010', - '\001', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'd', 's', '/', 'g', 'o', '/', 'u', 'd', 'p', 'a', '/', 'a', + 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '\272', '\200', + '\310', '\321', '\006', '\002', '\010', '\001', 'b', '\006', 'p', 'r', 'o', 't', + 'o', '3', }; static _upb_DefPool_Init *deps[3] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c index 8c6bc924b0c..2a6f0f7d945 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c @@ -13,7 +13,7 @@ extern _upb_DefPool_Init google_protobuf_descriptor_proto_upbdefinit; -static const char descriptor[196] = { +static const char descriptor[201] = { '\n', ' ', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\020', @@ -26,11 +26,11 @@ static const char descriptor[196] = { '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o', 'n', 's', '\030', '\367', '\266', '\301', '$', ' ', '\001', '(', '\010', 'R', '\t', 's', 'e', 'n', - 's', 'i', 't', 'i', 'v', 'e', 'B', '$', 'Z', '\"', 'g', 'i', + 's', 'i', 't', 'i', 'v', 'e', 'B', ')', 'Z', '\'', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', - 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'a', 'n', 'n', - 'o', 't', 'a', 't', 'i', 'o', 'n', 's', 'b', '\006', 'p', 'r', - 'o', 't', 'o', '3', + 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'u', 'd', 'p', + 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', + 's', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[2] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c index f741cc02685..16c7a9a4622 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c @@ -13,7 +13,7 @@ extern _upb_DefPool_Init google_protobuf_descriptor_proto_upbdefinit; -static const char descriptor[483] = { +static const char descriptor[488] = { '\n', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\022', '\020', 'u', 'd', 'p', @@ -50,11 +50,11 @@ static const char descriptor[483] = { '.', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '.', 'S', 't', 'a', 't', 'u', 's', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\n', 'f', 'i', 'l', 'e', 'S', - 't', 'a', 't', 'u', 's', 'B', '$', 'Z', '\"', 'g', 'i', 't', + 't', 'a', 't', 'u', 's', 'B', ')', 'Z', '\'', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', 'f', - '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'a', 'n', 'n', 'o', - 't', 'a', 't', 'i', 'o', 'n', 's', 'b', '\006', 'p', 'r', 'o', - 't', 'o', '3', + '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'u', 'd', 'p', 'a', + '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', + 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[2] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c index fa39166088e..dd3e5838557 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c @@ -13,7 +13,7 @@ extern _upb_DefPool_Init google_protobuf_descriptor_proto_upbdefinit; -static const char descriptor[317] = { +static const char descriptor[322] = { '\n', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\022', @@ -36,11 +36,11 @@ static const char descriptor[317] = { 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '.', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\n', 'v', 'e', 'r', - 's', 'i', 'o', 'n', 'i', 'n', 'g', 'B', '$', 'Z', '\"', 'g', + 's', 'i', 'o', 'n', 'i', 'n', 'g', 'B', ')', 'Z', '\'', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', - 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'a', 'n', - 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', 'b', '\006', 'p', - 'r', 'o', 't', 'o', '3', + 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'u', 'd', + 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', + 'n', 's', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static _upb_DefPool_Init *deps[2] = { diff --git a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c index ad5e00fa640..cb939f8b417 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c @@ -11,45 +11,40 @@ #include "xds/type/matcher/v3/cel.upbdefs.h" #include "xds/type/matcher/v3/cel.upb_minitable.h" -extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit; extern _upb_DefPool_Init xds_type_v3_cel_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[356] = { +static const char descriptor[315] = { '\n', '\035', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'c', 'e', 'l', '.', 'p', 'r', 'o', 't', 'o', '\022', '\023', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'v', '3', '\032', '\037', 'x', 'd', 's', '/', 'a', 'n', - 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', - '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', - 'o', '\032', '\025', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', - 'v', '3', '/', 'c', 'e', 'l', '.', 'p', 'r', 'o', 't', 'o', - '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', - 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', - 'o', '\"', 's', '\n', '\n', 'C', 'e', 'l', 'M', 'a', 't', 'c', - 'h', 'e', 'r', '\022', 'C', '\n', '\n', 'e', 'x', 'p', 'r', '_', - 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', - '\032', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'v', - '3', '.', 'C', 'e', 'l', 'E', 'x', 'p', 'r', 'e', 's', 's', - 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', - '\001', 'R', '\t', 'e', 'x', 'p', 'r', 'M', 'a', 't', 'c', 'h', - '\022', ' ', '\n', '\013', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', - 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 'd', - 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'B', '`', - '\n', '\036', 'c', 'o', 'm', '.', 'g', 'i', 't', 'h', 'u', 'b', - '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'v', '3', 'B', '\010', 'C', 'e', - 'l', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '*', 'g', 'i', - 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', - 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'x', 'd', 's', - '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '/', 'v', '3', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', - 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'r', '.', 'v', '3', '\032', '\025', 'x', 'd', 's', '/', 't', 'y', + 'p', 'e', '/', 'v', '3', '/', 'c', 'e', 'l', '.', 'p', 'r', + 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', + 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', + 'r', 'o', 't', 'o', '\"', 's', '\n', '\n', 'C', 'e', 'l', 'M', + 'a', 't', 'c', 'h', 'e', 'r', '\022', 'C', '\n', '\n', 'e', 'x', + 'p', 'r', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', + '(', '\013', '2', '\032', '.', 'x', 'd', 's', '.', 't', 'y', 'p', + 'e', '.', 'v', '3', '.', 'C', 'e', 'l', 'E', 'x', 'p', 'r', + 'e', 's', 's', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\212', + '\001', '\002', '\020', '\001', 'R', '\t', 'e', 'x', 'p', 'r', 'M', 'a', + 't', 'c', 'h', '\022', ' ', '\n', '\013', 'd', 'e', 's', 'c', 'r', + 'i', 'p', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\t', + 'R', '\013', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', + 'n', 'B', 'X', '\n', '\036', 'c', 'o', 'm', '.', 'g', 'i', 't', + 'h', 'u', 'b', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', 'B', + '\010', 'C', 'e', 'l', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', + '*', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', + 'c', 'n', 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', + 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '/', 'v', '3', 'b', '\006', 'p', 'r', 'o', + 't', 'o', '3', }; -static _upb_DefPool_Init *deps[4] = { - &xds_annotations_v3_status_proto_upbdefinit, +static _upb_DefPool_Init *deps[3] = { &xds_type_v3_cel_proto_upbdefinit, &validate_validate_proto_upbdefinit, NULL, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c index 178f55a9a4f..5ff67b11bac 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c @@ -11,33 +11,27 @@ #include "xds/type/matcher/v3/http_inputs.upbdefs.h" #include "xds/type/matcher/v3/http_inputs.upb_minitable.h" -extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit; - -static const char descriptor[237] = { +static const char descriptor[196] = { '\n', '%', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'h', 't', 't', 'p', '_', 'i', 'n', 'p', 'u', 't', 's', '.', 'p', 'r', 'o', 't', 'o', '\022', '\023', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '\032', '\037', 'x', 'd', 's', '/', 'a', 'n', 'n', 'o', 't', 'a', - 't', 'i', 'o', 'n', 's', '/', 'v', '3', '/', 's', 't', 'a', - 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\"', '\035', '\n', - '\033', 'H', 't', 't', 'p', 'A', 't', 't', 'r', 'i', 'b', 'u', - 't', 'e', 's', 'C', 'e', 'l', 'M', 'a', 't', 'c', 'h', 'I', - 'n', 'p', 'u', 't', 'B', 'g', '\n', '\036', 'c', 'o', 'm', '.', - 'g', 'i', 't', 'h', 'u', 'b', '.', 'x', 'd', 's', '.', 't', - 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'v', '3', 'B', '\017', 'H', 't', 't', 'p', 'I', 'n', 'p', 'u', - 't', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '*', 'g', - 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', - 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'x', 'd', - 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', - 'e', 'r', '/', 'v', '3', '\322', '\306', '\244', '\341', '\006', '\002', '\010', - '\001', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + '\"', '\035', '\n', '\033', 'H', 't', 't', 'p', 'A', 't', 't', 'r', + 'i', 'b', 'u', 't', 'e', 's', 'C', 'e', 'l', 'M', 'a', 't', + 'c', 'h', 'I', 'n', 'p', 'u', 't', 'B', '_', '\n', '\036', 'c', + 'o', 'm', '.', 'g', 'i', 't', 'h', 'u', 'b', '.', 'x', 'd', + 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', + 'e', 'r', '.', 'v', '3', 'B', '\017', 'H', 't', 't', 'p', 'I', + 'n', 'p', 'u', 't', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', + 'Z', '*', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', + '/', 'c', 'n', 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', + '/', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '/', 'v', '3', 'b', '\006', 'p', 'r', + 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[2] = { - &xds_annotations_v3_status_proto_upbdefinit, +static _upb_DefPool_Init *deps[1] = { NULL, }; diff --git a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c index 1a53d758223..faeb6451cd1 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c @@ -11,211 +11,208 @@ #include "xds/type/matcher/v3/matcher.upbdefs.h" #include "xds/type/matcher/v3/matcher.upb_minitable.h" -extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit; extern _upb_DefPool_Init xds_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init xds_type_matcher_v3_string_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[2330] = { +static const char descriptor[2324] = { '\n', '!', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\022', '\023', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '\032', '\037', 'x', 'd', - 's', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', - 's', '/', 'v', '3', '/', 's', 't', 'a', 't', 'u', 's', '.', - 'p', 'r', 'o', 't', 'o', '\032', '\033', 'x', 'd', 's', '/', 'c', - 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', ' ', - 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', - 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 's', 't', 'r', 'i', - 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', - 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', - 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\200', '\020', - '\n', '\007', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'M', '\n', - '\014', 'm', 'a', 't', 'c', 'h', 'e', 'r', '_', 'l', 'i', 's', - 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '(', '.', 'x', 'd', - 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', - 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', - 't', 'H', '\000', 'R', '\013', 'm', 'a', 't', 'c', 'h', 'e', 'r', - 'L', 'i', 's', 't', '\022', 'M', '\n', '\014', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '_', 't', 'r', 'e', 'e', '\030', '\002', ' ', '\001', - '(', '\013', '2', '(', '.', 'x', 'd', 's', '.', 't', 'y', 'p', - 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', 'H', '\000', 'R', '\013', - 'm', 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', '\022', - 'D', '\n', '\013', 'o', 'n', '_', 'n', 'o', '_', 'm', 'a', 't', - 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', '$', '.', 'x', - 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', - 'e', 'r', '.', 'O', 'n', 'M', 'a', 't', 'c', 'h', 'R', '\t', - 'o', 'n', 'N', 'o', 'M', 'a', 't', 'c', 'h', '\032', '\221', '\001', - '\n', '\007', 'O', 'n', 'M', 'a', 't', 'c', 'h', '\022', '8', '\n', - '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', '\001', - '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', - 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\007', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', ';', '\n', '\006', 'a', - 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', - '!', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', - '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', - 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', - 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', 'B', '\017', '\n', '\010', - 'o', 'n', '_', 'm', 'a', 't', 'c', 'h', '\022', '\003', '\370', 'B', - '\001', '\032', '\266', '\010', '\n', '\013', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'L', 'i', 's', 't', '\022', '[', '\n', '\010', 'm', 'a', 't', - 'c', 'h', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', - '5', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'L', 'i', 's', 't', '.', 'F', 'i', 'e', 'l', 'd', 'M', - 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', - '\001', '\002', '\010', '\001', 'R', '\010', 'm', 'a', 't', 'c', 'h', 'e', - 'r', 's', '\032', '\221', '\006', '\n', '\t', 'P', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '\022', 'o', '\n', '\020', 's', 'i', 'n', 'g', - 'l', 'e', '_', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', - '\030', '\001', ' ', '\001', '(', '\013', '2', 'B', '.', 'x', 'd', 's', - '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', - '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', - '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'S', - 'i', 'n', 'g', 'l', 'e', 'P', 'r', 'e', 'd', 'i', 'c', 'a', - 't', 'e', 'H', '\000', 'R', '\017', 's', 'i', 'n', 'g', 'l', 'e', - 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'a', '\n', - '\n', 'o', 'r', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', - '\002', ' ', '\001', '(', '\013', '2', '@', '.', 'x', 'd', 's', '.', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '\032', '\033', 'x', 'd', + 's', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', + 'o', '\032', ' ', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 's', + 't', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', + 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', + '\"', '\233', '\020', '\n', '\007', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '\022', 'M', '\n', '\014', 'm', 'a', 't', 'c', 'h', 'e', 'r', '_', + 'l', 'i', 's', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '(', + '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', + 'L', 'i', 's', 't', 'H', '\000', 'R', '\013', 'm', 'a', 't', 'c', + 'h', 'e', 'r', 'L', 'i', 's', 't', '\022', 'M', '\n', '\014', 'm', + 'a', 't', 'c', 'h', 'e', 'r', '_', 't', 'r', 'e', 'e', '\030', + '\002', ' ', '\001', '(', '\013', '2', '(', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', - 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'P', 'r', - 'e', 'd', 'i', 'c', 'a', 't', 'e', 'L', 'i', 's', 't', 'H', - '\000', 'R', '\t', 'o', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', - '\022', 'c', '\n', '\013', 'a', 'n', 'd', '_', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '@', '.', + 'M', 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', 'H', + '\000', 'R', '\013', 'm', 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', + 'e', 'e', '\022', 'D', '\n', '\013', 'o', 'n', '_', 'n', 'o', '_', + 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', + '$', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', + 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'O', 'n', 'M', 'a', 't', 'c', + 'h', 'R', '\t', 'o', 'n', 'N', 'o', 'M', 'a', 't', 'c', 'h', + '\032', '\266', '\001', '\n', '\007', 'O', 'n', 'M', 'a', 't', 'c', 'h', + '\022', '8', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', + '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', + 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', + '\000', 'R', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', ';', + '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', + '(', '\013', '2', '!', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', + 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', + 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', + 'g', 'H', '\000', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\022', + '#', '\n', '\r', 'k', 'e', 'e', 'p', '_', 'm', 'a', 't', 'c', + 'h', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', + 'k', 'e', 'e', 'p', 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', + 'B', '\017', '\n', '\010', 'o', 'n', '_', 'm', 'a', 't', 'c', 'h', + '\022', '\003', '\370', 'B', '\001', '\032', '\266', '\010', '\n', '\013', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '\022', '[', '\n', + '\010', 'm', 'a', 't', 'c', 'h', 'e', 'r', 's', '\030', '\001', ' ', + '\003', '(', '\013', '2', '5', '.', 'x', 'd', 's', '.', 't', 'y', + 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', + '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'F', 'i', + 'e', 'l', 'd', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', + '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'm', 'a', + 't', 'c', 'h', 'e', 'r', 's', '\032', '\221', '\006', '\n', '\t', 'P', + 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'o', '\n', '\020', + 's', 'i', 'n', 'g', 'l', 'e', '_', 'p', 'r', 'e', 'd', 'i', + 'c', 'a', 't', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', 'B', + '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', + 'L', 'i', 's', 't', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', + 't', 'e', '.', 'S', 'i', 'n', 'g', 'l', 'e', 'P', 'r', 'e', + 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\017', 's', 'i', + 'n', 'g', 'l', 'e', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', + 'e', '\022', 'a', '\n', '\n', 'o', 'r', '_', 'm', 'a', 't', 'c', + 'h', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '@', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'L', - 'i', 's', 't', 'H', '\000', 'R', '\n', 'a', 'n', 'd', 'M', 'a', - 't', 'c', 'h', 'e', 'r', '\022', 'U', '\n', '\013', 'n', 'o', 't', - '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\004', ' ', '\001', - '(', '\013', '2', '2', '.', 'x', 'd', 's', '.', 't', 'y', 'p', - 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', - 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\n', 'n', 'o', - 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\032', '\363', '\001', '\n', - '\017', 'S', 'i', 'n', 'g', 'l', 'e', 'P', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '\022', 'A', '\n', '\005', 'i', 'n', 'p', 'u', - 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'x', 'd', - 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', - 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', - '\001', '\002', '\020', '\001', 'R', '\005', 'i', 'n', 'p', 'u', 't', '\022', - 'E', '\n', '\013', 'v', 'a', 'l', 'u', 'e', '_', 'm', 'a', 't', - 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'x', - 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', - 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\n', - 'v', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022', 'F', - '\n', '\014', 'c', 'u', 's', 't', 'o', 'm', '_', 'm', 'a', 't', - 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', '!', '.', 'x', - 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', - 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', - 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\013', 'c', - 'u', 's', 't', 'o', 'm', 'M', 'a', 't', 'c', 'h', 'B', '\016', - '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', '\003', '\370', - 'B', '\001', '\032', 'k', '\n', '\r', 'P', 'r', 'e', 'd', 'i', 'c', - 'a', 't', 'e', 'L', 'i', 's', 't', '\022', 'Z', '\n', '\t', 'p', - 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\001', ' ', '\003', + 'i', 's', 't', 'H', '\000', 'R', '\t', 'o', 'r', 'M', 'a', 't', + 'c', 'h', 'e', 'r', '\022', 'c', '\n', '\013', 'a', 'n', 'd', '_', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\003', ' ', '\001', '(', + '\013', '2', '@', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', + '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', + 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', + 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', 'd', + 'i', 'c', 'a', 't', 'e', '.', 'P', 'r', 'e', 'd', 'i', 'c', + 'a', 't', 'e', 'L', 'i', 's', 't', 'H', '\000', 'R', '\n', 'a', + 'n', 'd', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'U', '\n', + '\013', 'n', 'o', 't', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '\030', '\004', ' ', '\001', '(', '\013', '2', '2', '.', 'x', 'd', 's', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', + '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', + 'R', '\n', 'n', 'o', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '\032', '\363', '\001', '\n', '\017', 'S', 'i', 'n', 'g', 'l', 'e', 'P', + 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'A', '\n', '\005', + 'i', 'n', 'p', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', + '!', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', + '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'i', 'n', + 'p', 'u', 't', '\022', 'E', '\n', '\013', 'v', 'a', 'l', 'u', 'e', + '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', + '2', '\"', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', + 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', + 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', + 'H', '\000', 'R', '\n', 'v', 'a', 'l', 'u', 'e', 'M', 'a', 't', + 'c', 'h', '\022', 'F', '\n', '\014', 'c', 'u', 's', 't', 'o', 'm', + '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', + '2', '!', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', + 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', + 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', + '\000', 'R', '\013', 'c', 'u', 's', 't', 'o', 'm', 'M', 'a', 't', + 'c', 'h', 'B', '\016', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '\022', '\003', '\370', 'B', '\001', '\032', 'k', '\n', '\r', 'P', 'r', + 'e', 'd', 'i', 'c', 'a', 't', 'e', 'L', 'i', 's', 't', '\022', + 'Z', '\n', '\t', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', + '\030', '\001', ' ', '\003', '(', '\013', '2', '2', '.', 'x', 'd', 's', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', + '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', + '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', 'R', '\t', 'p', 'r', + 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\021', '\n', '\n', 'm', + 'a', 't', 'c', 'h', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', + 'B', '\001', '\032', '\265', '\001', '\n', '\014', 'F', 'i', 'e', 'l', 'd', + 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'Z', '\n', '\t', 'p', + 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '2', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'L', 'i', 's', 't', '.', 'P', 'r', 'e', - 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', '\372', 'B', '\005', '\222', - '\001', '\002', '\010', '\002', 'R', '\t', 'p', 'r', 'e', 'd', 'i', 'c', - 'a', 't', 'e', 'B', '\021', '\n', '\n', 'm', 'a', 't', 'c', 'h', - '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\032', '\265', - '\001', '\n', '\014', 'F', 'i', 'e', 'l', 'd', 'M', 'a', 't', 'c', - 'h', 'e', 'r', '\022', 'Z', '\n', '\t', 'p', 'r', 'e', 'd', 'i', - 'c', 'a', 't', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '2', - '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', - 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', - 'L', 'i', 's', 't', '.', 'P', 'r', 'e', 'd', 'i', 'c', 'a', - 't', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', - 'R', '\t', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', - 'I', '\n', '\010', 'o', 'n', '_', 'm', 'a', 't', 'c', 'h', '\030', - '\002', ' ', '\001', '(', '\013', '2', '$', '.', 'x', 'd', 's', '.', - 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', - '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'O', 'n', 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', - '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'o', 'n', 'M', 'a', 't', - 'c', 'h', '\032', '\251', '\004', '\n', '\013', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'T', 'r', 'e', 'e', '\022', 'A', '\n', '\005', 'i', 'n', - 'p', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', - 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', - 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', - 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', - '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'i', 'n', 'p', 'u', - 't', '\022', '[', '\n', '\017', 'e', 'x', 'a', 'c', 't', '_', 'm', - 'a', 't', 'c', 'h', '_', 'm', 'a', 'p', '\030', '\002', ' ', '\001', - '(', '\013', '2', '1', '.', 'x', 'd', 's', '.', 't', 'y', 'p', + 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', '\372', 'B', '\005', '\212', + '\001', '\002', '\020', '\001', 'R', '\t', 'p', 'r', 'e', 'd', 'i', 'c', + 'a', 't', 'e', '\022', 'I', '\n', '\010', 'o', 'n', '_', 'm', 'a', + 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '$', '.', + 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', + 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', + 'h', 'e', 'r', '.', 'O', 'n', 'M', 'a', 't', 'c', 'h', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'o', + 'n', 'M', 'a', 't', 'c', 'h', '\032', '\251', '\004', '\n', '\013', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', '\022', 'A', + '\n', '\005', 'i', 'n', 'p', 'u', 't', '\030', '\001', ' ', '\001', '(', + '\013', '2', '!', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', + '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', + 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', + 'i', 'n', 'p', 'u', 't', '\022', '[', '\n', '\017', 'e', 'x', 'a', + 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '_', 'm', 'a', 'p', + '\030', '\002', ' ', '\001', '(', '\013', '2', '1', '.', 'x', 'd', 's', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', + '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', + '.', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', 'H', '\000', 'R', + '\r', 'e', 'x', 'a', 'c', 't', 'M', 'a', 't', 'c', 'h', 'M', + 'a', 'p', '\022', ']', '\n', '\020', 'p', 'r', 'e', 'f', 'i', 'x', + '_', 'm', 'a', 't', 'c', 'h', '_', 'm', 'a', 'p', '\030', '\003', + ' ', '\001', '(', '\013', '2', '1', '.', 'x', 'd', 's', '.', 't', + 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', + 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', + 'a', 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', '.', 'M', + 'a', 't', 'c', 'h', 'M', 'a', 'p', 'H', '\000', 'R', '\016', 'p', + 'r', 'e', 'f', 'i', 'x', 'M', 'a', 't', 'c', 'h', 'M', 'a', + 'p', '\022', 'F', '\n', '\014', 'c', 'u', 's', 't', 'o', 'm', '_', + 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\013', '2', + '!', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', + '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', + 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', + 'R', '\013', 'c', 'u', 's', 't', 'o', 'm', 'M', 'a', 't', 'c', + 'h', '\032', '\300', '\001', '\n', '\010', 'M', 'a', 't', 'c', 'h', 'M', + 'a', 'p', '\022', 'V', '\n', '\003', 'm', 'a', 'p', '\030', '\001', ' ', + '\003', '(', '\013', '2', ':', '.', 'x', 'd', 's', '.', 't', 'y', + 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', + '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', + 't', 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', '.', 'M', 'a', + 't', 'c', 'h', 'M', 'a', 'p', '.', 'M', 'a', 'p', 'E', 'n', + 't', 'r', 'y', 'B', '\010', '\372', 'B', '\005', '\232', '\001', '\002', '\010', + '\001', 'R', '\003', 'm', 'a', 'p', '\032', '\\', '\n', '\010', 'M', 'a', + 'p', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', + 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', + '\022', ':', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', + '\001', '(', '\013', '2', '$', '.', 'x', 'd', 's', '.', 't', 'y', + 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', + '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'O', 'n', + 'M', 'a', 't', 'c', 'h', 'R', '\005', 'v', 'a', 'l', 'u', 'e', + ':', '\002', '8', '\001', 'B', '\020', '\n', '\t', 't', 'r', 'e', 'e', + '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', 'B', '\016', + '\n', '\014', 'm', 'a', 't', 'c', 'h', 'e', 'r', '_', 't', 'y', + 'p', 'e', 'B', '\\', '\n', '\036', 'c', 'o', 'm', '.', 'g', 'i', + 't', 'h', 'u', 'b', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', - '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'T', 'r', 'e', 'e', '.', 'M', 'a', 't', - 'c', 'h', 'M', 'a', 'p', 'H', '\000', 'R', '\r', 'e', 'x', 'a', - 'c', 't', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', '\022', ']', - '\n', '\020', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'm', 'a', 't', - 'c', 'h', '_', 'm', 'a', 'p', '\030', '\003', ' ', '\001', '(', '\013', - '2', '1', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', - 'e', 'r', 'T', 'r', 'e', 'e', '.', 'M', 'a', 't', 'c', 'h', - 'M', 'a', 'p', 'H', '\000', 'R', '\016', 'p', 'r', 'e', 'f', 'i', - 'x', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', '\022', 'F', '\n', - '\014', 'c', 'u', 's', 't', 'o', 'm', '_', 'm', 'a', 't', 'c', - 'h', '\030', '\004', ' ', '\001', '(', '\013', '2', '!', '.', 'x', 'd', - 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', - 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', - 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\013', 'c', 'u', - 's', 't', 'o', 'm', 'M', 'a', 't', 'c', 'h', '\032', '\300', '\001', - '\n', '\010', 'M', 'a', 't', 'c', 'h', 'M', 'a', 'p', '\022', 'V', - '\n', '\003', 'm', 'a', 'p', '\030', '\001', ' ', '\003', '(', '\013', '2', - ':', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'M', 'a', 't', 'c', 'h', 'e', - 'r', 'T', 'r', 'e', 'e', '.', 'M', 'a', 't', 'c', 'h', 'M', - 'a', 'p', '.', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y', 'B', - '\010', '\372', 'B', '\005', '\232', '\001', '\002', '\010', '\001', 'R', '\003', 'm', - 'a', 'p', '\032', '\\', '\n', '\010', 'M', 'a', 'p', 'E', 'n', 't', - 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', - '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', ':', '\n', '\005', - 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', - '$', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', - 't', 'c', 'h', 'e', 'r', '.', 'O', 'n', 'M', 'a', 't', 'c', - 'h', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', - 'B', '\020', '\n', '\t', 't', 'r', 'e', 'e', '_', 't', 'y', 'p', - 'e', '\022', '\003', '\370', 'B', '\001', ':', '\010', '\322', '\306', '\244', '\341', - '\006', '\002', '\010', '\001', 'B', '\016', '\n', '\014', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '_', 't', 'y', 'p', 'e', 'B', '\\', '\n', '\036', - 'c', 'o', 'm', '.', 'g', 'i', 't', 'h', 'u', 'b', '.', 'x', - 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '.', 'v', '3', 'B', '\014', 'M', 'a', 't', 'c', - 'h', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '*', - 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', - 'n', 'c', 'f', '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'x', - 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', - 'h', 'e', 'r', '/', 'v', '3', 'b', '\006', 'p', 'r', 'o', 't', - 'o', '3', + 'B', '\014', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'P', 'r', 'o', + 't', 'o', 'P', '\001', 'Z', '*', 'g', 'i', 't', 'h', 'u', 'b', + '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', 'f', '/', 'x', 'd', + 's', '/', 'g', 'o', '/', 'x', 'd', 's', '/', 't', 'y', 'p', + 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', + 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[5] = { - &xds_annotations_v3_status_proto_upbdefinit, +static _upb_DefPool_Init *deps[4] = { &xds_core_v3_extension_proto_upbdefinit, &xds_type_matcher_v3_string_proto_upbdefinit, &validate_validate_proto_upbdefinit, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c index 9d5f11090c7..31f73eeb1d4 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c @@ -11,63 +11,72 @@ #include "xds/type/matcher/v3/string.upbdefs.h" #include "xds/type/matcher/v3/string.upb_minitable.h" +extern _upb_DefPool_Init xds_core_v3_extension_proto_upbdefinit; extern _upb_DefPool_Init xds_type_matcher_v3_regex_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[593] = { +static const char descriptor[683] = { '\n', ' ', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 's', 't', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\022', '\023', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', - 'c', 'h', 'e', 'r', '.', 'v', '3', '\032', '\037', 'x', 'd', 's', - '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', - 'r', '/', 'v', '3', '/', 'r', 'e', 'g', 'e', 'x', '.', 'p', - 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', - 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', - 'p', 'r', 'o', 't', 'o', '\"', '\231', '\002', '\n', '\r', 'S', 't', - 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', - '\026', '\n', '\005', 'e', 'x', 'a', 'c', 't', '\030', '\001', ' ', '\001', - '(', '\t', 'H', '\000', 'R', '\005', 'e', 'x', 'a', 'c', 't', '\022', - '!', '\n', '\006', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\002', ' ', - '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', - 'H', '\000', 'R', '\006', 'p', 'r', 'e', 'f', 'i', 'x', '\022', '!', - '\n', '\006', 's', 'u', 'f', 'f', 'i', 'x', '\030', '\003', ' ', '\001', + 'c', 'h', 'e', 'r', '.', 'v', '3', '\032', '\033', 'x', 'd', 's', + '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', + 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', + '\032', '\037', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', + 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'r', 'e', + 'g', 'e', 'x', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', + 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', + 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\326', + '\002', '\n', '\r', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', + 'c', 'h', 'e', 'r', '\022', '\026', '\n', '\005', 'e', 'x', 'a', 'c', + 't', '\030', '\001', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\005', 'e', + 'x', 'a', 'c', 't', '\022', '!', '\n', '\006', 'p', 'r', 'e', 'f', + 'i', 'x', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', + '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\006', 'p', 'r', 'e', + 'f', 'i', 'x', '\022', '!', '\n', '\006', 's', 'u', 'f', 'f', 'i', + 'x', '\030', '\003', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', + 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\006', 's', 'u', 'f', 'f', + 'i', 'x', '\022', 'L', '\n', '\n', 's', 'a', 'f', 'e', '_', 'r', + 'e', 'g', 'e', 'x', '\030', '\005', ' ', '\001', '(', '\013', '2', '!', + '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', + 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', + 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\t', 's', + 'a', 'f', 'e', 'R', 'e', 'g', 'e', 'x', '\022', '%', '\n', '\010', + 'c', 'o', 'n', 't', 'a', 'i', 'n', 's', '\030', '\007', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', - '\000', 'R', '\006', 's', 'u', 'f', 'f', 'i', 'x', '\022', 'L', '\n', - '\n', 's', 'a', 'f', 'e', '_', 'r', 'e', 'g', 'e', 'x', '\030', - '\005', ' ', '\001', '(', '\013', '2', '!', '.', 'x', 'd', 's', '.', - 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', - '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', - '\020', '\001', 'H', '\000', 'R', '\t', 's', 'a', 'f', 'e', 'R', 'e', - 'g', 'e', 'x', '\022', '%', '\n', '\010', 'c', 'o', 'n', 't', 'a', - 'i', 'n', 's', '\030', '\007', ' ', '\001', '(', '\t', 'B', '\007', '\372', - 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\010', 'c', 'o', - 'n', 't', 'a', 'i', 'n', 's', '\022', '\037', '\n', '\013', 'i', 'g', - 'n', 'o', 'r', 'e', '_', 'c', 'a', 's', 'e', '\030', '\006', ' ', - '\001', '(', '\010', 'R', '\n', 'i', 'g', 'n', 'o', 'r', 'e', 'C', - 'a', 's', 'e', 'B', '\024', '\n', '\r', 'm', 'a', 't', 'c', 'h', - '_', 'p', 'a', 't', 't', 'e', 'r', 'n', '\022', '\003', '\370', 'B', - '\001', '\"', ']', '\n', '\021', 'L', 'i', 's', 't', 'S', 't', 'r', - 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'H', - '\n', '\010', 'p', 'a', 't', 't', 'e', 'r', 'n', 's', '\030', '\001', - ' ', '\003', '(', '\013', '2', '\"', '.', 'x', 'd', 's', '.', 't', - 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', - 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', - 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', - '\010', '\001', 'R', '\010', 'p', 'a', 't', 't', 'e', 'r', 'n', 's', - 'B', '[', '\n', '\036', 'c', 'o', 'm', '.', 'g', 'i', 't', 'h', - 'u', 'b', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', - 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', 'B', '\013', - 'S', 't', 'r', 'i', 'n', 'g', 'P', 'r', 'o', 't', 'o', 'P', - '\001', 'Z', '*', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', - 'm', '/', 'c', 'n', 'c', 'f', '/', 'x', 'd', 's', '/', 'g', - 'o', '/', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', - 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', 'b', '\006', 'p', - 'r', 'o', 't', 'o', '3', + '\000', 'R', '\010', 'c', 'o', 'n', 't', 'a', 'i', 'n', 's', '\022', + ';', '\n', '\006', 'c', 'u', 's', 't', 'o', 'm', '\030', '\010', ' ', + '\001', '(', '\013', '2', '!', '.', 'x', 'd', 's', '.', 'c', 'o', + 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', + 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', + 'i', 'g', 'H', '\000', 'R', '\006', 'c', 'u', 's', 't', 'o', 'm', + '\022', '\037', '\n', '\013', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'c', + 'a', 's', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\n', 'i', + 'g', 'n', 'o', 'r', 'e', 'C', 'a', 's', 'e', 'B', '\024', '\n', + '\r', 'm', 'a', 't', 'c', 'h', '_', 'p', 'a', 't', 't', 'e', + 'r', 'n', '\022', '\003', '\370', 'B', '\001', '\"', ']', '\n', '\021', 'L', + 'i', 's', 't', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', + 'c', 'h', 'e', 'r', '\022', 'H', '\n', '\010', 'p', 'a', 't', 't', + 'e', 'r', 'n', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\"', + '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', + 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', + 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', + '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'p', 'a', + 't', 't', 'e', 'r', 'n', 's', 'B', '[', '\n', '\036', 'c', 'o', + 'm', '.', 'g', 'i', 't', 'h', 'u', 'b', '.', 'x', 'd', 's', + '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', + 'r', '.', 'v', '3', 'B', '\013', 'S', 't', 'r', 'i', 'n', 'g', + 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '*', 'g', 'i', 't', + 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', 'f', + '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'x', 'd', 's', '/', + 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', + '/', 'v', '3', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[3] = { +static _upb_DefPool_Init *deps[4] = { + &xds_core_v3_extension_proto_upbdefinit, &xds_type_matcher_v3_regex_proto_upbdefinit, &validate_validate_proto_upbdefinit, NULL, diff --git a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c index 0b39e0e4b56..4e98c7208df 100644 --- a/deps/grpc/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +++ b/deps/grpc/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c @@ -13,11 +13,13 @@ extern _upb_DefPool_Init google_api_expr_v1alpha1_checked_proto_upbdefinit; extern _upb_DefPool_Init google_api_expr_v1alpha1_syntax_proto_upbdefinit; +extern _upb_DefPool_Init cel_expr_checked_proto_upbdefinit; +extern _upb_DefPool_Init cel_expr_syntax_proto_upbdefinit; extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit; extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit; extern _upb_DefPool_Init validate_validate_proto_upbdefinit; -static const char descriptor[646] = { +static const char descriptor[863] = { '\n', '\025', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'c', 'e', 'l', '.', 'p', 'r', 'o', 't', 'o', '\022', '\013', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'v', '3', @@ -27,56 +29,76 @@ static const char descriptor[646] = { 'r', 'o', 't', 'o', '\032', '%', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'a', 'p', 'i', '/', 'e', 'x', 'p', 'r', '/', 'v', '1', 'a', 'l', 'p', 'h', 'a', '1', '/', 's', 'y', 'n', 't', 'a', - 'x', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', - 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', - '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', - 'o', 't', 'o', '\032', '\037', 'x', 'd', 's', '/', 'a', 'n', 'n', - 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', '/', - 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', - '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', - 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', - 'o', '\"', '\273', '\001', '\n', '\r', 'C', 'e', 'l', 'E', 'x', 'p', - 'r', 'e', 's', 's', 'i', 'o', 'n', '\022', 'G', '\n', '\013', 'p', - 'a', 'r', 's', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\030', '\001', - ' ', '\001', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', - 'e', '.', 'a', 'p', 'i', '.', 'e', 'x', 'p', 'r', '.', 'v', - '1', 'a', 'l', 'p', 'h', 'a', '1', '.', 'P', 'a', 'r', 's', - 'e', 'd', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\n', 'p', 'a', - 'r', 's', 'e', 'd', 'E', 'x', 'p', 'r', '\022', 'J', '\n', '\014', - 'c', 'h', 'e', 'c', 'k', 'e', 'd', '_', 'e', 'x', 'p', 'r', - '\030', '\002', ' ', '\001', '(', '\013', '2', '%', '.', 'g', 'o', 'o', - 'g', 'l', 'e', '.', 'a', 'p', 'i', '.', 'e', 'x', 'p', 'r', - '.', 'v', '1', 'a', 'l', 'p', 'h', 'a', '1', '.', 'C', 'h', - 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', 'r', 'H', '\000', 'R', - '\013', 'c', 'h', 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', 'r', - 'B', '\025', '\n', '\016', 'e', 'x', 'p', 'r', '_', 's', 'p', 'e', - 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', - '\236', '\001', '\n', '\020', 'C', 'e', 'l', 'E', 'x', 't', 'r', 'a', - 'c', 't', 'S', 't', 'r', 'i', 'n', 'g', '\022', 'G', '\n', '\014', - 'e', 'x', 'p', 'r', '_', 'e', 'x', 't', 'r', 'a', 'c', 't', - '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'x', 'd', 's', - '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'C', 'e', 'l', - 'E', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', 'B', '\010', - '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'e', 'x', - 'p', 'r', 'E', 'x', 't', 'r', 'a', 'c', 't', '\022', 'A', '\n', - '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', - 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', - 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', - 'u', 'f', '.', 'S', 't', 'r', 'i', 'n', 'g', 'V', 'a', 'l', - 'u', 'e', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', - 'a', 'l', 'u', 'e', 'B', 'P', '\n', '\026', 'c', 'o', 'm', '.', - 'g', 'i', 't', 'h', 'u', 'b', '.', 'x', 'd', 's', '.', 't', - 'y', 'p', 'e', '.', 'v', '3', 'B', '\010', 'C', 'e', 'l', 'P', - 'r', 'o', 't', 'o', 'P', '\001', 'Z', '\"', 'g', 'i', 't', 'h', - 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', 'f', '/', - 'x', 'd', 's', '/', 'g', 'o', '/', 'x', 'd', 's', '/', 't', - 'y', 'p', 'e', '/', 'v', '3', '\322', '\306', '\244', '\341', '\006', '\002', - '\010', '\001', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', + 'x', '.', 'p', 'r', 'o', 't', 'o', '\032', '\026', 'c', 'e', 'l', + '/', 'e', 'x', 'p', 'r', '/', 'c', 'h', 'e', 'c', 'k', 'e', + 'd', '.', 'p', 'r', 'o', 't', 'o', '\032', '\025', 'c', 'e', 'l', + '/', 'e', 'x', 'p', 'r', '/', 's', 'y', 'n', 't', 'a', 'x', + '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', + 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', + 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', + 't', 'o', '\032', '\037', 'x', 'd', 's', '/', 'a', 'n', 'n', 'o', + 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', '/', 's', + 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', + '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', + 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', + '\"', '\345', '\002', '\n', '\r', 'C', 'e', 'l', 'E', 'x', 'p', 'r', + 'e', 's', 's', 'i', 'o', 'n', '\022', 'K', '\n', '\013', 'p', 'a', + 'r', 's', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\030', '\001', ' ', + '\001', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', + '.', 'a', 'p', 'i', '.', 'e', 'x', 'p', 'r', '.', 'v', '1', + 'a', 'l', 'p', 'h', 'a', '1', '.', 'P', 'a', 'r', 's', 'e', + 'd', 'E', 'x', 'p', 'r', 'B', '\002', '\030', '\001', 'H', '\000', 'R', + '\n', 'p', 'a', 'r', 's', 'e', 'd', 'E', 'x', 'p', 'r', '\022', + 'N', '\n', '\014', 'c', 'h', 'e', 'c', 'k', 'e', 'd', '_', 'e', + 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '%', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'a', 'p', 'i', '.', 'e', + 'x', 'p', 'r', '.', 'v', '1', 'a', 'l', 'p', 'h', 'a', '1', + '.', 'C', 'h', 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', 'r', + 'B', '\002', '\030', '\001', 'H', '\000', 'R', '\013', 'c', 'h', 'e', 'c', + 'k', 'e', 'd', 'E', 'x', 'p', 'r', '\022', '<', '\n', '\017', 'c', + 'e', 'l', '_', 'e', 'x', 'p', 'r', '_', 'p', 'a', 'r', 's', + 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'c', + 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'P', 'a', 'r', 's', + 'e', 'd', 'E', 'x', 'p', 'r', 'R', '\r', 'c', 'e', 'l', 'E', + 'x', 'p', 'r', 'P', 'a', 'r', 's', 'e', 'd', '\022', '?', '\n', + '\020', 'c', 'e', 'l', '_', 'e', 'x', 'p', 'r', '_', 'c', 'h', + 'e', 'c', 'k', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', + '\025', '.', 'c', 'e', 'l', '.', 'e', 'x', 'p', 'r', '.', 'C', + 'h', 'e', 'c', 'k', 'e', 'd', 'E', 'x', 'p', 'r', 'R', '\016', + 'c', 'e', 'l', 'E', 'x', 'p', 'r', 'C', 'h', 'e', 'c', 'k', + 'e', 'd', '\022', '&', '\n', '\017', 'c', 'e', 'l', '_', 'e', 'x', + 'p', 'r', '_', 's', 't', 'r', 'i', 'n', 'g', '\030', '\005', ' ', + '\001', '(', '\t', 'R', '\r', 'c', 'e', 'l', 'E', 'x', 'p', 'r', + 'S', 't', 'r', 'i', 'n', 'g', 'B', '\020', '\n', '\016', 'e', 'x', + 'p', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', + '\"', '\236', '\001', '\n', '\020', 'C', 'e', 'l', 'E', 'x', 't', 'r', + 'a', 'c', 't', 'S', 't', 'r', 'i', 'n', 'g', '\022', 'G', '\n', + '\014', 'e', 'x', 'p', 'r', '_', 'e', 'x', 't', 'r', 'a', 'c', + 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'x', 'd', + 's', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'C', 'e', + 'l', 'E', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', 'B', + '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'e', + 'x', 'p', 'r', 'E', 'x', 't', 'r', 'a', 'c', 't', '\022', 'A', + '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', + 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', + 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', + 'b', 'u', 'f', '.', 'S', 't', 'r', 'i', 'n', 'g', 'V', 'a', + 'l', 'u', 'e', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', + 'V', 'a', 'l', 'u', 'e', 'B', 'P', '\n', '\026', 'c', 'o', 'm', + '.', 'g', 'i', 't', 'h', 'u', 'b', '.', 'x', 'd', 's', '.', + 't', 'y', 'p', 'e', '.', 'v', '3', 'B', '\010', 'C', 'e', 'l', + 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '\"', 'g', 'i', 't', + 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'c', 'n', 'c', 'f', + '/', 'x', 'd', 's', '/', 'g', 'o', '/', 'x', 'd', 's', '/', + 't', 'y', 'p', 'e', '/', 'v', '3', '\322', '\306', '\244', '\341', '\006', + '\002', '\010', '\001', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; -static _upb_DefPool_Init *deps[6] = { +static _upb_DefPool_Init *deps[8] = { &google_api_expr_v1alpha1_checked_proto_upbdefinit, &google_api_expr_v1alpha1_syntax_proto_upbdefinit, + &cel_expr_checked_proto_upbdefinit, + &cel_expr_syntax_proto_upbdefinit, &google_protobuf_wrappers_proto_upbdefinit, &xds_annotations_v3_status_proto_upbdefinit, &validate_validate_proto_upbdefinit, diff --git a/deps/grpc/src/core/filter/filter_chain.h b/deps/grpc/src/core/filter/filter_chain.h new file mode 100644 index 00000000000..bd33f84f088 --- /dev/null +++ b/deps/grpc/src/core/filter/filter_chain.h @@ -0,0 +1,95 @@ +// +// Copyright 2025 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef GRPC_SRC_CORE_FILTER_FILTER_CHAIN_H +#define GRPC_SRC_CORE_FILTER_FILTER_CHAIN_H + +#include +#include +#include + +#include "src/core/call/interception_chain.h" +#include "src/core/filter/filter_args.h" +#include "src/core/util/ref_counted.h" +#include "src/core/util/ref_counted_ptr.h" + +// This code provides an abstraction that allows the config selector to +// build a filter chain without knowing the details of how things work +// in the client channel code. +// TODO(roth): A lot of these interfaces are designed to abstract away +// the differences between the v1 and v3 stacks, and a lot of that +// complexity can go away when the v3 migration is done. + +namespace grpc_core { + +// Base class for filter chains. +// TODO(roth): Once the v3 migration is done, this can probably go away in +// favor of just directly using UnstartedCallDestination. +class FilterChain : public RefCounted {}; + +// Abstract filter chain builder interface. +class FilterChainBuilder { + public: + virtual ~FilterChainBuilder() = default; + + // Add a filter using a convenience template method. + template + void AddFilter(RefCountedPtr config) { + // TODO(roth): Once the v3 migration is done, this can directly call + // InterceptionChainBuilder. + AddFilter(FilterHandleImpl(), std::move(config)); + } + + // Builds the filter chain. Resets the builder to an empty state, so + // that it can be used to build another filter chain. + virtual absl::StatusOr> Build() = 0; + + protected: + // Abstract handle for a filter. + class FilterHandle { + public: + virtual ~FilterHandle() = default; + virtual void AddToBuilder( + std::vector* filters, + RefCountedPtr config) const = 0; + virtual void AddToBuilder( + InterceptionChainBuilder* builder, + RefCountedPtr config) const = 0; + }; + + private: + // Concrete handle for a specific filter type. + template + class FilterHandleImpl : public FilterHandle { + public: + void AddToBuilder(std::vector* filters, + RefCountedPtr config) const override { + filters->push_back({&FilterType::kFilterVtable, std::move(config)}); + } + void AddToBuilder(InterceptionChainBuilder* builder, + RefCountedPtr config) const override { + builder->Add(std::move(config)); + } + }; + + // Pure virtual method to be implemented by concrete wrappers. + virtual void AddFilter(const FilterHandle& filter_handle, + RefCountedPtr config) = 0; +}; + +} // namespace grpc_core + +#endif // GRPC_SRC_CORE_FILTER_FILTER_CHAIN_H diff --git a/deps/grpc/src/core/handshaker/http_connect/http_connect_handshaker.cc b/deps/grpc/src/core/handshaker/http_connect/http_connect_client_handshaker.cc similarity index 85% rename from deps/grpc/src/core/handshaker/http_connect/http_connect_handshaker.cc rename to deps/grpc/src/core/handshaker/http_connect/http_connect_client_handshaker.cc index 983010d65f8..2e866a2ca3d 100644 --- a/deps/grpc/src/core/handshaker/http_connect/http_connect_handshaker.cc +++ b/deps/grpc/src/core/handshaker/http_connect/http_connect_client_handshaker.cc @@ -16,7 +16,7 @@ // // -#include "src/core/handshaker/http_connect/http_connect_handshaker.h" +#include "src/core/handshaker/http_connect/http_connect_client_handshaker.h" #include #include @@ -58,17 +58,17 @@ namespace grpc_core { namespace { -class HttpConnectHandshaker : public Handshaker { +class HttpConnectClientHandshaker : public Handshaker { public: - HttpConnectHandshaker(); - absl::string_view name() const override { return "http_connect"; } + HttpConnectClientHandshaker(); + absl::string_view name() const override { return "http_connect_client"; } void DoHandshake( HandshakerArgs* args, absl::AnyInvocable on_handshake_done) override; void Shutdown(absl::Status error) override; private: - ~HttpConnectHandshaker() override; + ~HttpConnectClientHandshaker() override; void HandshakeFailedLocked(absl::Status error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); void FinishLocked(absl::Status error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); @@ -93,14 +93,14 @@ class HttpConnectHandshaker : public Handshaker { grpc_http_response http_response_ ABSL_GUARDED_BY(mu_); }; -HttpConnectHandshaker::~HttpConnectHandshaker() { +HttpConnectClientHandshaker::~HttpConnectClientHandshaker() { grpc_http_parser_destroy(&http_parser_); grpc_http_response_destroy(&http_response_); } // If the handshake failed or we're shutting down, clean up and invoke the // callback with the error. -void HttpConnectHandshaker::HandshakeFailedLocked(absl::Status error) { +void HttpConnectClientHandshaker::HandshakeFailedLocked(absl::Status error) { if (error.ok()) { // If we were shut down after an endpoint operation succeeded but // before the endpoint callback was invoked, we need to generate our @@ -117,7 +117,7 @@ void HttpConnectHandshaker::HandshakeFailedLocked(absl::Status error) { FinishLocked(std::move(error)); } -void HttpConnectHandshaker::FinishLocked(absl::Status error) { +void HttpConnectClientHandshaker::FinishLocked(absl::Status error) { InvokeOnHandshakeDone(args_, std::move(on_handshake_done_), std::move(error)); } @@ -125,9 +125,9 @@ void HttpConnectHandshaker::FinishLocked(absl::Status error) { // avoid deadlocks, schedule OnWriteDone on ExecCtx. // TODO(roth): This hop will no longer be needed when we migrate to the // EventEngine endpoint API. -void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, - grpc_error_handle error) { - auto* handshaker = static_cast(arg); +void HttpConnectClientHandshaker::OnWriteDoneScheduler( + void* arg, grpc_error_handle error) { + auto* handshaker = static_cast(arg); handshaker->args_->event_engine->Run( [handshaker, error = std::move(error)]() mutable { ExecCtx exec_ctx; @@ -136,7 +136,7 @@ void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, } // Callback invoked when finished writing HTTP CONNECT request. -void HttpConnectHandshaker::OnWriteDone(absl::Status error) { +void HttpConnectClientHandshaker::OnWriteDone(absl::Status error) { ReleasableMutexLock lock(&mu_); if (!error.ok() || args_->endpoint == nullptr) { // If the write failed or we're shutting down, clean up and invoke the @@ -150,8 +150,8 @@ void HttpConnectHandshaker::OnWriteDone(absl::Status error) { grpc_endpoint_read( args_->endpoint.get(), args_->read_buffer.c_slice_buffer(), GRPC_CLOSURE_INIT(&on_read_done_scheduler_, - &HttpConnectHandshaker::OnReadDoneScheduler, this, - grpc_schedule_on_exec_ctx), + &HttpConnectClientHandshaker::OnReadDoneScheduler, + this, grpc_schedule_on_exec_ctx), /*urgent=*/true, /*min_progress_size=*/1); } } @@ -160,9 +160,9 @@ void HttpConnectHandshaker::OnWriteDone(absl::Status error) { // avoid deadlocks, schedule OnReadDone on ExecCtx. // TODO(roth): This hop will no longer be needed when we migrate to the // EventEngine endpoint API. -void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, - grpc_error_handle error) { - auto* handshaker = static_cast(arg); +void HttpConnectClientHandshaker::OnReadDoneScheduler(void* arg, + grpc_error_handle error) { + auto* handshaker = static_cast(arg); handshaker->args_->event_engine->Run( [handshaker, error = std::move(error)]() mutable { ExecCtx exec_ctx; @@ -171,7 +171,7 @@ void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, } // Callback invoked for reading HTTP CONNECT response. -void HttpConnectHandshaker::OnReadDone(absl::Status error) { +void HttpConnectClientHandshaker::OnReadDone(absl::Status error) { bool done; { MutexLock lock(&mu_); @@ -180,7 +180,7 @@ void HttpConnectHandshaker::OnReadDone(absl::Status error) { if (done) Unref(); } -bool HttpConnectHandshaker::OnReadDoneLocked(absl::Status error) { +bool HttpConnectClientHandshaker::OnReadDoneLocked(absl::Status error) { if (!error.ok() || args_->endpoint == nullptr) { // If the read failed or we're shutting down, clean up and invoke the // callback with the error. @@ -227,8 +227,8 @@ bool HttpConnectHandshaker::OnReadDoneLocked(absl::Status error) { grpc_endpoint_read( args_->endpoint.get(), args_->read_buffer.c_slice_buffer(), GRPC_CLOSURE_INIT(&on_read_done_scheduler_, - &HttpConnectHandshaker::OnReadDoneScheduler, this, - grpc_schedule_on_exec_ctx), + &HttpConnectClientHandshaker::OnReadDoneScheduler, + this, grpc_schedule_on_exec_ctx), /*urgent=*/true, /*min_progress_size=*/1); return false; } @@ -248,12 +248,12 @@ bool HttpConnectHandshaker::OnReadDoneLocked(absl::Status error) { // Public handshaker methods // -void HttpConnectHandshaker::Shutdown(absl::Status /*error*/) { +void HttpConnectClientHandshaker::Shutdown(absl::Status /*error*/) { MutexLock lock(&mu_); if (on_handshake_done_ != nullptr) args_->endpoint.reset(); } -void HttpConnectHandshaker::DoHandshake( +void HttpConnectClientHandshaker::DoHandshake( HandshakerArgs* args, absl::AnyInvocable on_handshake_done) { // Check for HTTP CONNECT channel arg. @@ -323,12 +323,12 @@ void HttpConnectHandshaker::DoHandshake( grpc_endpoint_write( args->endpoint.get(), write_buffer_.c_slice_buffer(), GRPC_CLOSURE_INIT(&on_write_done_scheduler_, - &HttpConnectHandshaker::OnWriteDoneScheduler, this, - grpc_schedule_on_exec_ctx), + &HttpConnectClientHandshaker::OnWriteDoneScheduler, + this, grpc_schedule_on_exec_ctx), std::move(write_args)); } -HttpConnectHandshaker::HttpConnectHandshaker() { +HttpConnectClientHandshaker::HttpConnectClientHandshaker() { grpc_http_parser_init(&http_parser_, GRPC_HTTP_RESPONSE, &http_response_); } @@ -336,24 +336,25 @@ HttpConnectHandshaker::HttpConnectHandshaker() { // handshaker factory // -class HttpConnectHandshakerFactory : public HandshakerFactory { +class HttpConnectClientHandshakerFactory : public HandshakerFactory { public: void AddHandshakers(const ChannelArgs& /*args*/, grpc_pollset_set* /*interested_parties*/, HandshakeManager* handshake_mgr) override { - handshake_mgr->Add(MakeRefCounted()); + handshake_mgr->Add(MakeRefCounted()); } HandshakerPriority Priority() override { return HandshakerPriority::kHTTPConnectHandshakers; } - ~HttpConnectHandshakerFactory() override = default; + ~HttpConnectClientHandshakerFactory() override = default; }; } // namespace -void RegisterHttpConnectHandshaker(CoreConfiguration::Builder* builder) { +void RegisterHttpConnectClientHandshaker(CoreConfiguration::Builder* builder) { builder->handshaker_registry()->RegisterHandshakerFactory( - HANDSHAKER_CLIENT, std::make_unique()); + HANDSHAKER_CLIENT, + std::make_unique()); } } // namespace grpc_core diff --git a/deps/grpc/src/core/handshaker/http_connect/http_connect_handshaker.h b/deps/grpc/src/core/handshaker/http_connect/http_connect_client_handshaker.h similarity index 79% rename from deps/grpc/src/core/handshaker/http_connect/http_connect_handshaker.h rename to deps/grpc/src/core/handshaker/http_connect/http_connect_client_handshaker.h index 286d0c6631c..eef558143fb 100644 --- a/deps/grpc/src/core/handshaker/http_connect/http_connect_handshaker.h +++ b/deps/grpc/src/core/handshaker/http_connect/http_connect_client_handshaker.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_HANDSHAKER_H -#define GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_HANDSHAKER_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_CLIENT_HANDSHAKER_H +#define GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_CLIENT_HANDSHAKER_H #include @@ -35,8 +35,8 @@ namespace grpc_core { // Register the HTTP Connect handshaker into the configuration builder. -void RegisterHttpConnectHandshaker(CoreConfiguration::Builder* builder); +void RegisterHttpConnectClientHandshaker(CoreConfiguration::Builder* builder); } // namespace grpc_core -#endif // GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_HANDSHAKER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_CLIENT_HANDSHAKER_H diff --git a/deps/grpc/src/core/handshaker/http_connect/http_proxy_mapper.cc b/deps/grpc/src/core/handshaker/http_connect/http_proxy_mapper.cc index 99e7334c806..7303eef791e 100644 --- a/deps/grpc/src/core/handshaker/http_connect/http_proxy_mapper.cc +++ b/deps/grpc/src/core/handshaker/http_connect/http_proxy_mapper.cc @@ -29,7 +29,7 @@ #include #include -#include "src/core/handshaker/http_connect/http_connect_handshaker.h" +#include "src/core/handshaker/http_connect/http_connect_client_handshaker.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" diff --git a/deps/grpc/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc b/deps/grpc/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc index 26fa8ea25e3..0c879d3195c 100644 --- a/deps/grpc/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +++ b/deps/grpc/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc @@ -20,7 +20,7 @@ #include #include -#include "src/core/handshaker/http_connect/http_connect_handshaker.h" +#include "src/core/handshaker/http_connect/http_connect_client_handshaker.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" diff --git a/deps/grpc/src/core/handshaker/security/GEMINI.md b/deps/grpc/src/core/handshaker/security/GEMINI.md index 5d5bb6501db..07cf4a068f3 100644 --- a/deps/grpc/src/core/handshaker/security/GEMINI.md +++ b/deps/grpc/src/core/handshaker/security/GEMINI.md @@ -10,7 +10,6 @@ The security handshakers are responsible for establishing a secure connection be - **`security_handshaker.h` / `security_handshaker.cc`**: Defines the `SecurityHandshaker` class, which is the base class for all security handshakers. - **`secure_endpoint.h` / `secure_endpoint.cc`**: Defines the `SecureEndpoint` class, which is a wrapper around a `grpc_endpoint` that provides a secure channel. -- **`legacy_secure_endpoint.cc`**: An older implementation of `SecureEndpoint`. - **`pipelined_secure_endpoint.cc`**: A `SecureEndpoint` implementation that supports pipelining. ## Notes diff --git a/deps/grpc/src/core/handshaker/security/legacy_secure_endpoint.cc b/deps/grpc/src/core/handshaker/security/legacy_secure_endpoint.cc deleted file mode 100644 index 506226a2d26..00000000000 --- a/deps/grpc/src/core/handshaker/security/legacy_secure_endpoint.cc +++ /dev/null @@ -1,597 +0,0 @@ -// -// -// Copyright 2015 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "src/core/handshaker/security/secure_endpoint.h" -#include "src/core/lib/debug/trace.h" -#include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/iomgr/endpoint.h" -#include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/iomgr/iomgr_fwd.h" -#include "src/core/lib/resource_quota/api.h" -#include "src/core/lib/resource_quota/memory_quota.h" -#include "src/core/lib/resource_quota/resource_quota.h" -#include "src/core/lib/slice/slice.h" -#include "src/core/lib/slice/slice_string_helpers.h" -#include "src/core/tsi/transport_security_grpc.h" -#include "src/core/tsi/transport_security_interface.h" -#include "src/core/util/debug_location.h" -#include "src/core/util/grpc_check.h" -#include "src/core/util/orphanable.h" -#include "src/core/util/ref_counted_ptr.h" -#include "src/core/util/string.h" -#include "src/core/util/sync.h" -#include "absl/base/thread_annotations.h" -#include "absl/log/log.h" -#include "absl/status/status.h" -#include "absl/strings/string_view.h" - -#define STAGING_BUFFER_SIZE 8192 - -static void on_read(void* user_data, grpc_error_handle error); -static void on_write(void* user_data, grpc_error_handle error); - -namespace { -struct secure_endpoint : public grpc_endpoint { - secure_endpoint(const grpc_endpoint_vtable* vtbl, - tsi_frame_protector* protector, - tsi_zero_copy_grpc_protector* zero_copy_protector, - grpc_core::OrphanablePtr endpoint, - grpc_slice* leftover_slices, - const grpc_channel_args* channel_args, - size_t leftover_nslices) - : wrapped_ep(std::move(endpoint)), - protector(protector), - zero_copy_protector(zero_copy_protector) { - this->vtable = vtbl; - gpr_mu_init(&protector_mu); - GRPC_CLOSURE_INIT(&on_read, ::on_read, this, grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_INIT(&on_write, ::on_write, this, grpc_schedule_on_exec_ctx); - grpc_slice_buffer_init(&source_buffer); - grpc_slice_buffer_init(&leftover_bytes); - for (size_t i = 0; i < leftover_nslices; i++) { - grpc_slice_buffer_add(&leftover_bytes, - grpc_core::CSliceRef(leftover_slices[i])); - } - grpc_slice_buffer_init(&output_buffer); - memory_owner = grpc_core::ResourceQuotaFromChannelArgs(channel_args) - ->memory_quota() - ->CreateMemoryOwner(); - self_reservation = memory_owner.MakeReservation(sizeof(*this)); - if (zero_copy_protector) { - read_staging_buffer = grpc_empty_slice(); - write_staging_buffer = grpc_empty_slice(); - } else { - read_staging_buffer = - memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE)); - write_staging_buffer = - memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE)); - } - has_posted_reclaimer.store(false, std::memory_order_relaxed); - min_progress_size = 1; - grpc_slice_buffer_init(&protector_staging_buffer); - gpr_ref_init(&ref, 1); - } - - ~secure_endpoint() { - tsi_frame_protector_destroy(protector); - tsi_zero_copy_grpc_protector_destroy(zero_copy_protector); - grpc_slice_buffer_destroy(&source_buffer); - grpc_slice_buffer_destroy(&leftover_bytes); - grpc_core::CSliceUnref(read_staging_buffer); - grpc_core::CSliceUnref(write_staging_buffer); - grpc_slice_buffer_destroy(&output_buffer); - grpc_slice_buffer_destroy(&protector_staging_buffer); - gpr_mu_destroy(&protector_mu); - } - - grpc_core::OrphanablePtr wrapped_ep; - struct tsi_frame_protector* protector; - struct tsi_zero_copy_grpc_protector* zero_copy_protector; - gpr_mu protector_mu; - grpc_core::Mutex read_mu; - grpc_core::Mutex write_mu; - // saved upper level callbacks and user_data. - grpc_closure* read_cb = nullptr; - grpc_closure* write_cb = nullptr; - grpc_closure on_read; - grpc_closure on_write; - grpc_slice_buffer* read_buffer = nullptr; - grpc_slice_buffer source_buffer; - // saved handshaker leftover data to unprotect. - grpc_slice_buffer leftover_bytes; - // buffers for read and write - grpc_slice read_staging_buffer ABSL_GUARDED_BY(read_mu); - grpc_slice write_staging_buffer ABSL_GUARDED_BY(write_mu); - grpc_slice_buffer output_buffer; - grpc_core::MemoryOwner memory_owner; - grpc_core::MemoryAllocator::Reservation self_reservation; - std::atomic has_posted_reclaimer; - int min_progress_size; - grpc_slice_buffer protector_staging_buffer; - gpr_refcount ref; -}; -} // namespace - -static void destroy(secure_endpoint* ep) { delete ep; } - -#ifndef NDEBUG -#define SECURE_ENDPOINT_UNREF(ep, reason) \ - secure_endpoint_unref((ep), (reason), __FILE__, __LINE__) -#define SECURE_ENDPOINT_REF(ep, reason) \ - secure_endpoint_ref((ep), (reason), __FILE__, __LINE__) -static void secure_endpoint_unref(secure_endpoint* ep, const char* reason, - const char* file, int line) { - if (GRPC_TRACE_FLAG_ENABLED(secure_endpoint)) { - gpr_atm val = gpr_atm_no_barrier_load(&ep->ref.count); - VLOG(2).AtLocation(file, line) << "SECENDP unref " << ep << " : " << reason - << " " << val << " -> " << val - 1; - } - if (gpr_unref(&ep->ref)) { - destroy(ep); - } -} - -static void secure_endpoint_ref(secure_endpoint* ep, const char* reason, - const char* file, int line) { - if (GRPC_TRACE_FLAG_ENABLED(secure_endpoint)) { - gpr_atm val = gpr_atm_no_barrier_load(&ep->ref.count); - VLOG(2).AtLocation(file, line) << "SECENDP ref " << ep << " : " << reason - << " " << val << " -> " << val + 1; - } - gpr_ref(&ep->ref); -} -#else -#define SECURE_ENDPOINT_UNREF(ep, reason) secure_endpoint_unref((ep)) -#define SECURE_ENDPOINT_REF(ep, reason) secure_endpoint_ref((ep)) -static void secure_endpoint_unref(secure_endpoint* ep) { - if (gpr_unref(&ep->ref)) { - destroy(ep); - } -} - -static void secure_endpoint_ref(secure_endpoint* ep) { gpr_ref(&ep->ref); } -#endif - -static void maybe_post_reclaimer(secure_endpoint* ep) { - if (!ep->has_posted_reclaimer) { - SECURE_ENDPOINT_REF(ep, "benign_reclaimer"); - ep->has_posted_reclaimer.exchange(true, std::memory_order_relaxed); - ep->memory_owner.PostReclaimer( - grpc_core::ReclamationPass::kBenign, - [ep](std::optional sweep) { - if (sweep.has_value()) { - GRPC_TRACE_LOG(resource_quota, INFO) - << "secure endpoint: benign reclamation to free memory"; - grpc_slice temp_read_slice; - grpc_slice temp_write_slice; - - ep->read_mu.Lock(); - temp_read_slice = ep->read_staging_buffer; - ep->read_staging_buffer = grpc_empty_slice(); - ep->read_mu.Unlock(); - - ep->write_mu.Lock(); - temp_write_slice = ep->write_staging_buffer; - ep->write_staging_buffer = grpc_empty_slice(); - ep->write_mu.Unlock(); - - grpc_core::CSliceUnref(temp_read_slice); - grpc_core::CSliceUnref(temp_write_slice); - ep->has_posted_reclaimer.exchange(false, std::memory_order_relaxed); - } - SECURE_ENDPOINT_UNREF(ep, "benign_reclaimer"); - }); - } -} - -static void flush_read_staging_buffer(secure_endpoint* ep, uint8_t** cur, - uint8_t** end) - ABSL_EXCLUSIVE_LOCKS_REQUIRED(ep->read_mu) { - grpc_slice_buffer_add_indexed(ep->read_buffer, ep->read_staging_buffer); - ep->read_staging_buffer = - ep->memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE)); - *cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer); - *end = GRPC_SLICE_END_PTR(ep->read_staging_buffer); -} - -static void call_read_cb(secure_endpoint* ep, grpc_error_handle error) { - if (GRPC_TRACE_FLAG_ENABLED(secure_endpoint) && ABSL_VLOG_IS_ON(2)) { - size_t i; - for (i = 0; i < ep->read_buffer->count; i++) { - char* data = grpc_dump_slice(ep->read_buffer->slices[i], - GPR_DUMP_HEX | GPR_DUMP_ASCII); - VLOG(2) << "READ " << ep << ": " << data; - gpr_free(data); - } - } - ep->read_buffer = nullptr; - grpc_core::ExecCtx::Run(DEBUG_LOCATION, ep->read_cb, error); - SECURE_ENDPOINT_UNREF(ep, "read"); -} - -static void on_read(void* user_data, grpc_error_handle error) { - unsigned i; - uint8_t keep_looping = 0; - tsi_result result = TSI_OK; - secure_endpoint* ep = static_cast(user_data); - - { - grpc_core::MutexLock l(&ep->read_mu); - - // If we were shut down after this callback was scheduled with OK - // status but before it was invoked, we need to treat that as an error. - if (ep->wrapped_ep == nullptr && error.ok()) { - error = absl::CancelledError("secure endpoint shutdown"); - } - - uint8_t* cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer); - uint8_t* end = GRPC_SLICE_END_PTR(ep->read_staging_buffer); - - if (!error.ok()) { - grpc_slice_buffer_reset_and_unref(ep->read_buffer); - } else if (ep->zero_copy_protector != nullptr) { - // Use zero-copy grpc protector to unprotect. - int min_progress_size = 1; - // Get the size of the last frame which is not yet fully decrypted. - // This estimated frame size is stored in ep->min_progress_size which is - // passed to the TCP layer to indicate the minimum number of - // bytes that need to be read to make meaningful progress. This would - // avoid reading of small slices from the network. - // TODO(vigneshbabu): Set min_progress_size in the regular (non-zero-copy) - // frame protector code path as well. - result = tsi_zero_copy_grpc_protector_unprotect( - ep->zero_copy_protector, &ep->source_buffer, ep->read_buffer, - &min_progress_size); - min_progress_size = std::max(1, min_progress_size); - ep->min_progress_size = result != TSI_OK ? 1 : min_progress_size; - } else { - // Use frame protector to unprotect. - // TODO(yangg) check error, maybe bail out early - for (i = 0; i < ep->source_buffer.count; i++) { - grpc_slice encrypted = ep->source_buffer.slices[i]; - uint8_t* message_bytes = GRPC_SLICE_START_PTR(encrypted); - size_t message_size = GRPC_SLICE_LENGTH(encrypted); - - while (message_size > 0 || keep_looping) { - size_t unprotected_buffer_size_written = - static_cast(end - cur); - size_t processed_message_size = message_size; - if (grpc_core::IsTsiFrameProtectorWithoutLocksEnabled()) { - result = tsi_frame_protector_unprotect( - ep->protector, message_bytes, &processed_message_size, cur, - &unprotected_buffer_size_written); - } else { - gpr_mu_lock(&ep->protector_mu); - result = tsi_frame_protector_unprotect( - ep->protector, message_bytes, &processed_message_size, cur, - &unprotected_buffer_size_written); - gpr_mu_unlock(&ep->protector_mu); - } - if (result != TSI_OK) { - LOG(ERROR) << "Decryption error: " << tsi_result_to_string(result); - break; - } - message_bytes += processed_message_size; - message_size -= processed_message_size; - cur += unprotected_buffer_size_written; - - if (cur == end) { - flush_read_staging_buffer(ep, &cur, &end); - // Force to enter the loop again to extract buffered bytes in - // protector. The bytes could be buffered because of running out of - // staging_buffer. If this happens at the end of all slices, doing - // another unprotect avoids leaving data in the protector. - keep_looping = 1; - } else if (unprotected_buffer_size_written > 0) { - keep_looping = 1; - } else { - keep_looping = 0; - } - } - if (result != TSI_OK) break; - } - - if (cur != GRPC_SLICE_START_PTR(ep->read_staging_buffer)) { - grpc_slice_buffer_add( - ep->read_buffer, - grpc_slice_split_head( - &ep->read_staging_buffer, - static_cast( - cur - GRPC_SLICE_START_PTR(ep->read_staging_buffer)))); - } - } - } - - if (!error.ok()) { - call_read_cb( - ep, GRPC_ERROR_CREATE_REFERENCING("Secure read failed", &error, 1)); - return; - } - - // TODO(yangg) experiment with moving this block after read_cb to see if it - // helps latency - grpc_slice_buffer_reset_and_unref(&ep->source_buffer); - - if (result != TSI_OK) { - grpc_slice_buffer_reset_and_unref(ep->read_buffer); - call_read_cb( - ep, GRPC_ERROR_CREATE(absl::StrCat("Unwrap failed (", - tsi_result_to_string(result), ")"))); - return; - } - - call_read_cb(ep, absl::OkStatus()); -} - -static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices, - grpc_closure* cb, bool urgent, - int /*min_progress_size*/) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - ep->read_cb = cb; - ep->read_buffer = slices; - grpc_slice_buffer_reset_and_unref(ep->read_buffer); - - SECURE_ENDPOINT_REF(ep, "read"); - if (ep->leftover_bytes.count) { - grpc_slice_buffer_swap(&ep->leftover_bytes, &ep->source_buffer); - GRPC_CHECK_EQ(ep->leftover_bytes.count, 0u); - on_read(ep, absl::OkStatus()); - return; - } - - grpc_endpoint_read(ep->wrapped_ep.get(), &ep->source_buffer, &ep->on_read, - urgent, /*min_progress_size=*/ep->min_progress_size); -} - -static void flush_write_staging_buffer(secure_endpoint* ep, uint8_t** cur, - uint8_t** end) - ABSL_EXCLUSIVE_LOCKS_REQUIRED(ep->write_mu) { - grpc_slice_buffer_add_indexed(&ep->output_buffer, ep->write_staging_buffer); - ep->write_staging_buffer = - ep->memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE)); - *cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer); - *end = GRPC_SLICE_END_PTR(ep->write_staging_buffer); - maybe_post_reclaimer(ep); -} - -static void on_write(void* user_data, grpc_error_handle error) { - secure_endpoint* ep = static_cast(user_data); - grpc_closure* cb = ep->write_cb; - ep->write_cb = nullptr; - SECURE_ENDPOINT_UNREF(ep, "write"); - grpc_core::EnsureRunInExecCtx([cb, error = std::move(error)]() { - grpc_core::Closure::Run(DEBUG_LOCATION, cb, error); - }); -} - -static void endpoint_write( - grpc_endpoint* secure_ep, grpc_slice_buffer* slices, grpc_closure* cb, - grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs args) { - GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("secure_endpoint write"); - unsigned i; - tsi_result result = TSI_OK; - secure_endpoint* ep = reinterpret_cast(secure_ep); - - { - grpc_core::MutexLock l(&ep->write_mu); - uint8_t* cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer); - uint8_t* end = GRPC_SLICE_END_PTR(ep->write_staging_buffer); - - grpc_slice_buffer_reset_and_unref(&ep->output_buffer); - - if (GRPC_TRACE_FLAG_ENABLED(secure_endpoint) && ABSL_VLOG_IS_ON(2)) { - for (i = 0; i < slices->count; i++) { - char* data = - grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII); - VLOG(2) << "WRITE " << ep << ": " << data; - gpr_free(data); - } - } - - if (ep->zero_copy_protector != nullptr) { - // Use zero-copy grpc protector to protect. - result = TSI_OK; - // Break the input slices into chunks of size = max_frame_size and call - // tsi_zero_copy_grpc_protector_protect on each chunk. This ensures that - // the protector cannot create frames larger than the specified - // max_frame_size. - while (slices->length > static_cast(args.max_frame_size()) && - result == TSI_OK) { - grpc_slice_buffer_move_first(slices, - static_cast(args.max_frame_size()), - &ep->protector_staging_buffer); - result = tsi_zero_copy_grpc_protector_protect( - ep->zero_copy_protector, &ep->protector_staging_buffer, - &ep->output_buffer); - } - if (result == TSI_OK && slices->length > 0) { - result = tsi_zero_copy_grpc_protector_protect( - ep->zero_copy_protector, slices, &ep->output_buffer); - } - grpc_slice_buffer_reset_and_unref(&ep->protector_staging_buffer); - } else { - // Use frame protector to protect. - for (i = 0; i < slices->count; i++) { - grpc_slice plain = slices->slices[i]; - uint8_t* message_bytes = GRPC_SLICE_START_PTR(plain); - size_t message_size = GRPC_SLICE_LENGTH(plain); - while (message_size > 0) { - size_t protected_buffer_size_to_send = static_cast(end - cur); - size_t processed_message_size = message_size; - if (grpc_core::IsTsiFrameProtectorWithoutLocksEnabled()) { - result = tsi_frame_protector_protect( - ep->protector, message_bytes, &processed_message_size, cur, - &protected_buffer_size_to_send); - } else { - gpr_mu_lock(&ep->protector_mu); - result = tsi_frame_protector_protect( - ep->protector, message_bytes, &processed_message_size, cur, - &protected_buffer_size_to_send); - gpr_mu_unlock(&ep->protector_mu); - } - if (result != TSI_OK) { - LOG(ERROR) << "Encryption error: " << tsi_result_to_string(result); - break; - } - message_bytes += processed_message_size; - message_size -= processed_message_size; - cur += protected_buffer_size_to_send; - - if (cur == end) { - flush_write_staging_buffer(ep, &cur, &end); - } - } - if (result != TSI_OK) break; - } - if (result == TSI_OK) { - size_t still_pending_size; - do { - size_t protected_buffer_size_to_send = static_cast(end - cur); - if (grpc_core::IsTsiFrameProtectorWithoutLocksEnabled()) { - result = tsi_frame_protector_protect_flush( - ep->protector, cur, &protected_buffer_size_to_send, - &still_pending_size); - } else { - gpr_mu_lock(&ep->protector_mu); - result = tsi_frame_protector_protect_flush( - ep->protector, cur, &protected_buffer_size_to_send, - &still_pending_size); - gpr_mu_unlock(&ep->protector_mu); - } - if (result != TSI_OK) break; - cur += protected_buffer_size_to_send; - if (cur == end) { - flush_write_staging_buffer(ep, &cur, &end); - } - } while (still_pending_size > 0); - if (cur != GRPC_SLICE_START_PTR(ep->write_staging_buffer)) { - grpc_slice_buffer_add( - &ep->output_buffer, - grpc_slice_split_head( - &ep->write_staging_buffer, - static_cast( - cur - GRPC_SLICE_START_PTR(ep->write_staging_buffer)))); - } - } - } - } - - if (result != TSI_OK) { - // TODO(yangg) do different things according to the error type? - grpc_slice_buffer_reset_and_unref(&ep->output_buffer); - grpc_core::ExecCtx::Run( - DEBUG_LOCATION, cb, - GRPC_ERROR_CREATE( - absl::StrCat("Wrap failed (", tsi_result_to_string(result), ")"))); - return; - } - - // Need to hold a ref here, because the wrapped endpoint may access - // output_buffer at any time until the write completes. - SECURE_ENDPOINT_REF(ep, "write"); - ep->write_cb = cb; - grpc_endpoint_write(ep->wrapped_ep.get(), &ep->output_buffer, &ep->on_write, - std::move(args)); -} - -static void endpoint_destroy(grpc_endpoint* secure_ep) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - ep->read_mu.Lock(); - ep->wrapped_ep.reset(); - ep->memory_owner.Reset(); - ep->read_mu.Unlock(); - SECURE_ENDPOINT_UNREF(ep, "destroy"); -} - -static void endpoint_add_to_pollset(grpc_endpoint* secure_ep, - grpc_pollset* pollset) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - grpc_endpoint_add_to_pollset(ep->wrapped_ep.get(), pollset); -} - -static void endpoint_add_to_pollset_set(grpc_endpoint* secure_ep, - grpc_pollset_set* pollset_set) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - grpc_endpoint_add_to_pollset_set(ep->wrapped_ep.get(), pollset_set); -} - -static void endpoint_delete_from_pollset_set(grpc_endpoint* secure_ep, - grpc_pollset_set* pollset_set) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - grpc_endpoint_delete_from_pollset_set(ep->wrapped_ep.get(), pollset_set); -} - -static absl::string_view endpoint_get_peer(grpc_endpoint* secure_ep) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - return grpc_endpoint_get_peer(ep->wrapped_ep.get()); -} - -static absl::string_view endpoint_get_local_address(grpc_endpoint* secure_ep) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - return grpc_endpoint_get_local_address(ep->wrapped_ep.get()); -} - -static int endpoint_get_fd(grpc_endpoint* secure_ep) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - return grpc_endpoint_get_fd(ep->wrapped_ep.get()); -} - -static bool endpoint_can_track_err(grpc_endpoint* secure_ep) { - secure_endpoint* ep = reinterpret_cast(secure_ep); - return grpc_endpoint_can_track_err(ep->wrapped_ep.get()); -} - -static const grpc_endpoint_vtable vtable = {endpoint_read, - endpoint_write, - endpoint_add_to_pollset, - endpoint_add_to_pollset_set, - endpoint_delete_from_pollset_set, - endpoint_destroy, - endpoint_get_peer, - endpoint_get_local_address, - endpoint_get_fd, - endpoint_can_track_err}; - -grpc_core::OrphanablePtr grpc_legacy_secure_endpoint_create( - struct tsi_frame_protector* protector, - struct tsi_zero_copy_grpc_protector* zero_copy_protector, - grpc_core::OrphanablePtr to_wrap, - grpc_slice* leftover_slices, const grpc_channel_args* channel_args, - size_t leftover_nslices) { - return grpc_core::MakeOrphanable( - &vtable, protector, zero_copy_protector, std::move(to_wrap), - leftover_slices, channel_args, leftover_nslices); -} diff --git a/deps/grpc/src/core/handshaker/security/pipelined_secure_endpoint.cc b/deps/grpc/src/core/handshaker/security/pipelined_secure_endpoint.cc index 4af7cc6d3c8..b43b63e39c9 100644 --- a/deps/grpc/src/core/handshaker/security/pipelined_secure_endpoint.cc +++ b/deps/grpc/src/core/handshaker/security/pipelined_secure_endpoint.cc @@ -479,7 +479,7 @@ class PipelinedSecureEndpoint final : public EventEngine::Endpoint { bool Read(absl::AnyInvocable on_read, SliceBuffer* buffer, ReadArgs in_args) override { - return impl_->Read(std::move(on_read), buffer, std::move(in_args)); + return impl_->Read(std::move(on_read), buffer, in_args); } bool Write(absl::AnyInvocable on_writable, @@ -614,7 +614,7 @@ class PipelinedSecureEndpoint final : public EventEngine::Endpoint { GRPC_CHECK(on_read_ == nullptr); pending_output_buffer_ = buffer; on_read_ = std::move(on_read); - last_read_args_ = std::move(args); + last_read_args_ = args; return false; } @@ -695,7 +695,7 @@ class PipelinedSecureEndpoint final : public EventEngine::Endpoint { ReadArgs args; args.set_read_hint_bytes(frame_protector_.min_progress_size()); lock.Release(); - event_engine_->Run([impl = Ref(), args = std::move(args)]() mutable { + event_engine_->Run([impl = Ref(), args = args]() mutable { grpc_core::ExecCtx exec_ctx; // If the endpoint closed whilst waiting for this callback, then // fail out the read and we're done. @@ -711,7 +711,7 @@ class PipelinedSecureEndpoint final : public EventEngine::Endpoint { grpc_core::ExecCtx exec_ctx; FinishFirstRead(std::move(impl), status); }, - impl->staging_protected_data_buffer_.get(), std::move(args)); + impl->staging_protected_data_buffer_.get(), args); if (read_finished_immediately) { lock.Release(); { @@ -810,7 +810,7 @@ class PipelinedSecureEndpoint final : public EventEngine::Endpoint { source_buffer = std::move(impl->protected_data_buffer_); impl->frame_protector_.TraceOp("data", source_buffer->c_slice_buffer()); - args = std::move(impl->last_read_args_); + args = impl->last_read_args_; if (impl->frame_protector_.IsZeroCopyProtector()) { // We currently only track min progress size for zero copy // protectors. Once we add this for non-zero copy protectors, we @@ -822,18 +822,19 @@ class PipelinedSecureEndpoint final : public EventEngine::Endpoint { std::max(1, impl->frame_protector_.min_progress_size() - source_buffer->Length())); } else if (args.read_hint_bytes() > 0) { - args.set_read_hint_bytes(std::max( - 1, args.read_hint_bytes() - source_buffer->Length())); + // This effectively disables read coalescing for non zerocopy + // protectors, but this is necessary since it is not trivial to + // determine the encrypted payload size in advance. + args.set_read_hint_bytes(1); } } // Kick off the next read in another thread while we unprotect in this // thread. - impl->event_engine_->Run( - [impl = impl->Ref(), args = std::move(args)]() mutable { - grpc_core::ExecCtx exec_ctx; - StartAsyncRead(std::move(impl), std::move(args)); - }); + impl->event_engine_->Run([impl = impl->Ref(), args = args]() mutable { + grpc_core::ExecCtx exec_ctx; + StartAsyncRead(std::move(impl), args); + }); { grpc_core::ReleasableMutexLock lock(impl->frame_protector_.read_mu()); @@ -889,7 +890,7 @@ class PipelinedSecureEndpoint final : public EventEngine::Endpoint { grpc_core::ExecCtx exec_ctx; FinishAsyncRead(std::move(impl), status); }, - impl->staging_protected_data_buffer_.get(), std::move(args)); + impl->staging_protected_data_buffer_.get(), args); if (read_finished_immediately) { lock.Release(); bool should_unprotect = false; diff --git a/deps/grpc/src/core/handshaker/security/secure_endpoint.cc b/deps/grpc/src/core/handshaker/security/secure_endpoint.cc index 2cd8eca0802..4edac0b69bf 100644 --- a/deps/grpc/src/core/handshaker/security/secure_endpoint.cc +++ b/deps/grpc/src/core/handshaker/security/secure_endpoint.cc @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -100,12 +101,14 @@ class FrameProtector : public RefCounted { } } if (zero_copy_protector_ != nullptr) { - if (IsTrackZeroCopyAllocationsInResourceQuotaEnabled()) { - tsi_zero_copy_grpc_protector_set_allocator(zero_copy_protector_, - &AllocSlice, &memory_owner_); - } + tsi_zero_copy_grpc_protector_set_allocator(zero_copy_protector_, + &AllocSlice, &memory_owner_); read_staging_buffer_ = grpc_empty_slice(); write_staging_buffer_ = grpc_empty_slice(); + } else if (IsSecureEndpointReadCoalescingEnabled()) { + read_staging_buffer_ = grpc_empty_slice(); + write_staging_buffer_ = + memory_owner_.MakeSlice(MemoryRequest(STAGING_BUFFER_SIZE)); } else { read_staging_buffer_ = memory_owner_.MakeSlice(MemoryRequest(STAGING_BUFFER_SIZE)); @@ -179,9 +182,17 @@ class FrameProtector : public RefCounted { void FlushReadStagingBuffer(uint8_t** cur, uint8_t** end) ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_) { - grpc_slice_buffer_add_indexed(read_buffer_, read_staging_buffer_); - read_staging_buffer_ = - memory_owner_.MakeSlice(MemoryRequest(STAGING_BUFFER_SIZE)); + grpc_slice_buffer_add(read_buffer_, read_staging_buffer_); + if (required_read_bytes_ > 0) { + read_staging_buffer_ = grpc_empty_slice(); + + // If we had set a read hint, we must have read at least that many + // bytes when we do a FlushReadStagingBuffer. + GRPC_CHECK(read_buffer_->length >= required_read_bytes_); + } else { + read_staging_buffer_ = + memory_owner_.MakeSlice(MemoryRequest(STAGING_BUFFER_SIZE)); + } *cur = GRPC_SLICE_START_PTR(read_staging_buffer_); *end = GRPC_SLICE_END_PTR(read_staging_buffer_); } @@ -195,6 +206,85 @@ class FrameProtector : public RefCounted { read_buffer_ = nullptr; } + // Unprotects data from the protected buffer and drains the unprotected data + // into the read buffer. It exits early if the read hint is satisfied or if + // there's an error. + // protected_buffer: The ciphertext to unprotect. + // protected_buffer_size: The length of the protected buffer. + // cur: Pointer to the current position in the staging buffer. + // end: Pointer to the end of the staging buffer. + // encrypted_bytes_processed: The number of ciphertext bytes that were + // successfully unprotected. + // hint_satisfied: Set to true if the read hint was satisfied. + tsi_result UnprotectAndDrain(const uint8_t* protected_buffer, + size_t protected_buffer_size, uint8_t** cur, + uint8_t** end, size_t& encrypted_bytes_processed, + bool& hint_satisfied) + ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_) { + tsi_result result = TSI_OK; + + // 1. If read_hint_bytes_ is 0, we need to keep looping until we have + // drained all the ciphertext bytes from the protector. We will exit + // from the inner loop if we have processed all the ciphertext bytes + // i.e, protected_buffer_size == 0 && unprotected_buffer_size_written == 0. + // + // 2. If read_hint_bytes_ is greater than 0, we will exit from the + // inner loop if we have satisfied the read hint or if we have + // processed all the ciphertext bytes. i.e, + // a) read_buffer->length >= read_hint_bytes_ (hint_satisfied), or + // b) protected_buffer_size == 0 && unprotected_buffer_size_written == 0. + // + // 3. We will also exit from the inner loop if the protector returns + // an error. + while (true) { + size_t unprotected_buffer_size_written = static_cast(*end - *cur); + size_t processed_message_size = protected_buffer_size; + + if (IsTsiFrameProtectorWithoutLocksEnabled()) { + result = tsi_frame_protector_unprotect( + protector_, protected_buffer, &processed_message_size, *cur, + &unprotected_buffer_size_written); + } else { + protector_mu_.Lock(); + result = tsi_frame_protector_unprotect( + protector_, protected_buffer, &processed_message_size, *cur, + &unprotected_buffer_size_written); + protector_mu_.Unlock(); + } + if (result != TSI_OK) { + LOG(ERROR) << "Decryption error: " << tsi_result_to_string(result); + break; + } + protected_buffer += processed_message_size; + protected_buffer_size -= processed_message_size; + encrypted_bytes_processed += processed_message_size; + *cur += unprotected_buffer_size_written; + + // Staging buffer is full, flush it. + if (*cur == *end) { + FlushReadStagingBuffer(cur, end); + } + + // If we have processed all the ciphertext bytes, and the protector + // is drained, exit the loop. + if (protected_buffer_size == 0 && unprotected_buffer_size_written == 0) { + break; + } + + // If the read hint is satisfied, exit the loop early. + if (required_read_bytes_ > 0 && + read_buffer_->length + + (*cur - GRPC_SLICE_START_PTR(read_staging_buffer_)) >= + required_read_bytes_) { + // TODO(aananthv): Maybe change the above condition to ==. + GRPC_DCHECK(read_buffer_->length == required_read_bytes_); + hint_satisfied = true; + break; + } + } + return result; + } + absl::Status Unprotect(absl::Status read_status) ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_) { GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("unprotect"); @@ -204,12 +294,8 @@ class FrameProtector : public RefCounted { } GRPC_TRACE_LOG(secure_endpoint, INFO) << "Starting unprotect for " << this; - bool keep_looping = false; tsi_result result = TSI_OK; - uint8_t* cur = GRPC_SLICE_START_PTR(read_staging_buffer_); - uint8_t* end = GRPC_SLICE_END_PTR(read_staging_buffer_); - if (!read_status.ok()) { grpc_slice_buffer_reset_and_unref(read_buffer_); } else if (zero_copy_protector_ != nullptr) { @@ -229,52 +315,74 @@ class FrameProtector : public RefCounted { min_progress_size_ = result != TSI_OK ? 1 : min_progress_size; } else { // Use frame protector to unprotect. - // TODO(yangg) check error, maybe bail out early - for (size_t i = 0; i < source_buffer_.Count(); i++) { - grpc_slice encrypted = source_buffer_.c_slice_buffer()->slices[i]; - uint8_t* message_bytes = GRPC_SLICE_START_PTR(encrypted); - size_t message_size = GRPC_SLICE_LENGTH(encrypted); - - while (message_size > 0 || keep_looping) { - size_t unprotected_buffer_size_written = - static_cast(end - cur); - size_t processed_message_size = message_size; - if (IsTsiFrameProtectorWithoutLocksEnabled()) { - result = tsi_frame_protector_unprotect( - protector_, message_bytes, &processed_message_size, cur, - &unprotected_buffer_size_written); - } else { - protector_mu_.Lock(); - result = tsi_frame_protector_unprotect( - protector_, message_bytes, &processed_message_size, cur, - &unprotected_buffer_size_written); - protector_mu_.Unlock(); - } - if (result != TSI_OK) { - LOG(ERROR) << "Decryption error: " << tsi_result_to_string(result); + size_t read_buffer_len = read_buffer_ ? read_buffer_->length : 0; + bool hint_satisfied = false; + + if (required_read_bytes_ > 0) { + if (required_read_bytes_ > + read_buffer_len + GRPC_SLICE_LENGTH(read_staging_buffer_)) { + CSliceUnref(read_staging_buffer_); + size_t size_to_request = required_read_bytes_ - read_buffer_len; + read_staging_buffer_ = + memory_owner_.MakeSlice(MemoryRequest(size_to_request)); + } + } else if (required_read_bytes_ == 0) { + if (GRPC_SLICE_IS_EMPTY(read_staging_buffer_)) { + CSliceUnref(read_staging_buffer_); + read_staging_buffer_ = + memory_owner_.MakeSlice(MemoryRequest(STAGING_BUFFER_SIZE)); + } + } + uint8_t* cur = GRPC_SLICE_START_PTR(read_staging_buffer_); + uint8_t* end = GRPC_SLICE_END_PTR(read_staging_buffer_); + + // Extract any buffered bytes in the protector before processing new + // slices. The frame_protector will decrypt one TLS record at a time. If + // we requested a read hint less than the size of a decrypted TLS record, + // the remaining bytes will be buffered in the frame protector. + uint8_t kEmptyBuffer[] = {0}; + size_t encrypted_bytes_processed = 0; + result = UnprotectAndDrain(kEmptyBuffer, 0, &cur, &end, + encrypted_bytes_processed, hint_satisfied); + GRPC_DCHECK(encrypted_bytes_processed == 0); + + // This is the main block where we call the protector to unprotect the + // newly read ciphertext bytes in the source buffer. + if (result == TSI_OK && !hint_satisfied && source_buffer_.Count() > 0) { + for (size_t i = 0; i < source_buffer_.Count(); i++) { + grpc_slice encrypted = source_buffer_.c_slice_buffer()->slices[i]; + result = UnprotectAndDrain(GRPC_SLICE_START_PTR(encrypted), + GRPC_SLICE_LENGTH(encrypted), &cur, &end, + encrypted_bytes_processed, hint_satisfied); + if (result != TSI_OK || hint_satisfied) { break; } - message_bytes += processed_message_size; - message_size -= processed_message_size; - cur += unprotected_buffer_size_written; + } + } - if (cur == end) { - FlushReadStagingBuffer(&cur, &end); - // Force to enter the loop again to extract buffered bytes in - // protector. The bytes could be buffered because of running out - // of staging_buffer. If this happens at the end of all slices, - // doing another unprotect avoids leaving data in the protector. - keep_looping = true; - } else if (unprotected_buffer_size_written > 0) { - keep_looping = true; - } else { - keep_looping = false; - } + // If the read hint is satisfied, move the remaining encrypted bytes from + // the source buffer to the leftover bytes buffer. + if (result == TSI_OK && + encrypted_bytes_processed < source_buffer_.Length()) { + GRPC_CHECK(hint_satisfied) + << "We should not be here unless the read hint is satisfied."; + + if (leftover_bytes_ == nullptr) { + leftover_bytes_ = std::make_unique(); } - if (result != TSI_OK) break; + + grpc_event_engine::experimental::SliceBuffer temp; + source_buffer_.MoveFirstNBytesIntoSliceBuffer(encrypted_bytes_processed, + temp); + temp.Clear(); + grpc_slice_buffer_swap(source_buffer_.c_slice_buffer(), + leftover_bytes_->c_slice_buffer()); } - if (cur != GRPC_SLICE_START_PTR(read_staging_buffer_)) { + // If the staging buffer is not flushed, move the unprotected bytes in the + // staging buffer to the read buffer. + if (result == TSI_OK && + cur != GRPC_SLICE_START_PTR(read_staging_buffer_)) { grpc_slice_buffer_add( read_buffer_, grpc_slice_split_head( @@ -282,6 +390,11 @@ class FrameProtector : public RefCounted { static_cast( cur - GRPC_SLICE_START_PTR(read_staging_buffer_)))); } + source_buffer_.Clear(); + } + + if (result != TSI_OK || !read_status.ok()) { + leftover_bytes_.reset(); } if (read_status.ok() && result != TSI_OK) { @@ -295,16 +408,17 @@ class FrameProtector : public RefCounted { return read_status; } - void BeginRead(grpc_slice_buffer* slices) { + void BeginRead(grpc_slice_buffer* slices, size_t required_read_bytes) { read_buffer_ = slices; grpc_slice_buffer_reset_and_unref(read_buffer_); + required_read_bytes_ = required_read_bytes; } bool IsZeroCopyProtector() const { return is_zero_copy_protector_; } - bool MaybeCompleteReadImmediately() { + bool ConsumeLeftovers() { GRPC_TRACE_LOG(secure_endpoint, INFO) - << "MaybeCompleteReadImmediately: " << this + << "ConsumeLeftovers: " << this << " leftover_bytes_: " << leftover_bytes_.get(); if (leftover_bytes_ != nullptr) { grpc_slice_buffer_swap(leftover_bytes_->c_slice_buffer(), @@ -470,6 +584,7 @@ class FrameProtector : public RefCounted { SliceBuffer protector_staging_buffer_; bool shutdown_ = false; bool is_zero_copy_protector_ = false; + size_t required_read_bytes_ = 0; }; } // namespace } // namespace grpc_core @@ -577,10 +692,10 @@ static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices, int /*min_progress_size*/) { secure_endpoint* ep = reinterpret_cast(secure_ep); ep->read_cb = cb; - ep->frame_protector.BeginRead(slices); + ep->frame_protector.BeginRead(slices, /*required_read_bytes=*/0); SECURE_ENDPOINT_REF(ep, "read"); - if (ep->frame_protector.MaybeCompleteReadImmediately()) { + if (ep->frame_protector.ConsumeLeftovers()) { on_read(ep, absl::OkStatus()); return; } @@ -707,7 +822,7 @@ class SecureEndpoint final : public EventEngine::Endpoint { bool Read(absl::AnyInvocable on_read, SliceBuffer* buffer, ReadArgs in_args) override { - return impl_->Read(std::move(on_read), buffer, std::move(in_args)); + return impl_->Read(std::move(on_read), buffer, in_args); } bool Write(absl::AnyInvocable on_writable, @@ -805,19 +920,38 @@ class SecureEndpoint final : public EventEngine::Endpoint { bool Read(absl::AnyInvocable on_read, SliceBuffer* buffer, ReadArgs args) { on_read_ = std::move(on_read); - frame_protector_.BeginRead(buffer->c_slice_buffer()); - if (frame_protector_.MaybeCompleteReadImmediately()) { - return MaybeFinishReadImmediately(); + + // TODO(aananthv): Evaluate if we need to add a channel_arg to enable this + // selectively. + if (grpc_core::IsSecureEndpointReadCoalescingEnabled()) { + read_buffer_ = buffer; + // TODO(aananthv): Make required_read_bytes_ a separate field in + // ReadArgs to avoid confusion between min_progress_size and + // read_hint_bytes, especially if we enable coalescing by default. + required_read_bytes_ = std::max(0, args.read_hint_bytes()); + read_args_ = args; + frame_protector_.BeginRead(buffer->c_slice_buffer(), + required_read_bytes_); + frame_protector_.ConsumeLeftovers(); + return ContinueRead(/*is_initial_call=*/true, + /*status=*/absl::OkStatus()); } - if (frame_protector_.IsZeroCopyProtector()) { - args.set_read_hint_bytes(frame_protector_.min_progress_size()); + + frame_protector_.BeginRead(buffer->c_slice_buffer(), + /*required_read_bytes=*/0); + if (frame_protector_.ConsumeLeftovers()) { + return MaybeFinishReadImmediately(); } + // min_progress_size is always 1 for non-zero copy frame protectors. This + // effectively disables read coalescing, but this is necessary since it + // is not trivial to determine the encrypted payload size in advance. + args.set_read_hint_bytes(frame_protector_.min_progress_size()); bool read_completed_immediately = wrapped_ep_->Read( [impl = Ref()](absl::Status status) mutable { grpc_core::ExecCtx exec_ctx; FinishAsyncRead(std::move(impl), std::move(status)); }, - frame_protector_.source_buffer(), std::move(args)); + frame_protector_.source_buffer(), args); if (read_completed_immediately) return MaybeFinishReadImmediately(); return false; } @@ -973,6 +1107,88 @@ class SecureEndpoint final : public EventEngine::Endpoint { on_read(status); } + bool ContinueRead(bool is_initial_call, absl::Status status) { + while (true) { + if (is_initial_call && status.ok() && + grpc_core::IsSecureEndpointOffloadLargeReadsEnabled() && + frame_protector_.source_buffer()->Length() > + large_read_threshold_) { + event_engine_->Run([impl = Ref()]() mutable { + grpc_core::ExecCtx exec_ctx; + impl->ContinueRead(/*is_initial_call=*/false, + /*status=*/absl::OkStatus()); + }); + return false; + } + + bool had_source_data = false; + { + grpc_core::MutexLock lock(frame_protector_.read_mu()); + if (status.ok() && wrapped_ep_ == nullptr) { + status = absl::CancelledError("secure endpoint shutdown"); + } else { + had_source_data = frame_protector_.source_buffer()->Length() > 0; + if (had_source_data || is_initial_call) { + status = frame_protector_.Unprotect(status); + } + } + } + + if (!status.ok()) { + // If status is not OK, abort the read. + auto on_read = std::move(on_read_); + frame_protector_.FinishRead(false); + if (is_initial_call) { + // Failures on the initial call are still async. + event_engine_->Run( + [impl = Ref(), status = std::move(status)]() mutable { + auto on_read = std::move(impl->on_read_); + impl.reset(); + on_read(status); + }); + return false; + } + on_read(status); + return false; + } + + // If status is OK and we are not in the initial call, we must have + // source data (since we would have returned above otherwise). + GRPC_DCHECK(had_source_data || is_initial_call); + + // Do not perform an additional read if: + // 1. We are in coalescing mode and have accumulated sufficient data + // (i.e. required_read_bytes_ bytes). + // 2. We are not in coalescing mode, and we have any some data in the + // read buffer. + bool coalescing_active = required_read_bytes_ > 0; + if ((coalescing_active && + read_buffer_->Length() >= required_read_bytes_) || + (!coalescing_active && had_source_data)) { + frame_protector_.TraceOp( + is_initial_call ? "Read(Imm)" : "Read", + frame_protector_.source_buffer()->c_slice_buffer()); + frame_protector_.FinishRead(true); + auto on_read = std::move(on_read_); + if (is_initial_call) return true; + on_read(absl::OkStatus()); + return false; + } + + // Otherwise, we need to read more data from the underlying endpoint. + ReadArgs args = read_args_; + args.set_read_hint_bytes(frame_protector_.min_progress_size()); + bool read_completed_immediately = wrapped_ep_->Read( + [impl = Ref()](absl::Status status) mutable { + grpc_core::ExecCtx exec_ctx; + impl->ContinueRead(/*is_initial_call=*/false, + /*status=*/std::move(status)); + }, + frame_protector_.source_buffer(), args); + if (!read_completed_immediately) return false; + } + } + std::string WritingString() ABSL_EXCLUSIVE_LOCKS_REQUIRED(write_queue_mu_) { if (!writing_.ok()) return writing_.status().ToString(); return *writing_ ? "true" : "false"; @@ -1065,6 +1281,9 @@ class SecureEndpoint final : public EventEngine::Endpoint { ABSL_GUARDED_BY(write_queue_mu_); grpc_core::FrameProtector frame_protector_; absl::AnyInvocable on_read_; + SliceBuffer* read_buffer_ = nullptr; + size_t required_read_bytes_ = 0; + ReadArgs read_args_; absl::AnyInvocable on_write_; std::unique_ptr wrapped_ep_; std::shared_ptr event_engine_; @@ -1085,11 +1304,6 @@ grpc_core::OrphanablePtr grpc_secure_endpoint_create( grpc_core::OrphanablePtr to_wrap, grpc_slice* leftover_slices, size_t leftover_nslices, const grpc_core::ChannelArgs& channel_args) { - if (!grpc_core::IsEventEngineSecureEndpointEnabled()) { - return grpc_legacy_secure_endpoint_create( - protector, zero_copy_protector, std::move(to_wrap), leftover_slices, - channel_args.ToC().get(), leftover_nslices); - } if (grpc_event_engine::experimental::grpc_get_wrapped_event_engine_endpoint( to_wrap.get()) != nullptr) { std::unique_ptr diff --git a/deps/grpc/src/core/handshaker/security/secure_endpoint.h b/deps/grpc/src/core/handshaker/security/secure_endpoint.h index 35fd1a2c950..efcf60254d3 100644 --- a/deps/grpc/src/core/handshaker/security/secure_endpoint.h +++ b/deps/grpc/src/core/handshaker/security/secure_endpoint.h @@ -48,13 +48,6 @@ grpc_core::OrphanablePtr grpc_secure_endpoint_create( grpc_slice* leftover_slices, size_t leftover_nslices, const grpc_core::ChannelArgs& channel_args); -grpc_core::OrphanablePtr grpc_legacy_secure_endpoint_create( - struct tsi_frame_protector* protector, - struct tsi_zero_copy_grpc_protector* zero_copy_protector, - grpc_core::OrphanablePtr to_wrap, - grpc_slice* leftover_slices, const grpc_channel_args* channel_args, - size_t leftover_nslices); - grpc_core::OrphanablePtr grpc_pipelined_secure_endpoint_create( struct tsi_frame_protector* protector, struct tsi_zero_copy_grpc_protector* zero_copy_protector, diff --git a/deps/grpc/src/core/lib/channel/channel_args.h b/deps/grpc/src/core/lib/channel/channel_args.h index 24ee039ded3..cfbc1b1b90e 100644 --- a/deps/grpc/src/core/lib/channel/channel_args.h +++ b/deps/grpc/src/core/lib/channel/channel_args.h @@ -49,7 +49,7 @@ // TODO(hork): When we're ready to allow setting via a channel arg from the // application, replace this with a macro in // include/grpc/impl/codegen/grpc_types.h. -#define GRPC_INTERNAL_ARG_EVENT_ENGINE "grpc.internal.event_engine" +#define GRPC_INTERNAL_ARG_EVENT_ENGINE "grpc.experimental.event_engine" // Channel args are intentionally immutable, to avoid the need for locking. diff --git a/deps/grpc/src/core/lib/channel/promise_based_filter.cc b/deps/grpc/src/core/lib/channel/promise_based_filter.cc index ea3c73eb32f..b7eb4164e1b 100644 --- a/deps/grpc/src/core/lib/channel/promise_based_filter.cc +++ b/deps/grpc/src/core/lib/channel/promise_based_filter.cc @@ -23,6 +23,7 @@ #include #include +#include "src/core/call/metadata.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/iomgr/error.h" @@ -2040,6 +2041,7 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) { !batch->recv_trailing_metadata); PollContext poll_ctx(this, &flusher); Completed(batch->payload->cancel_stream.cancel_error, + std::move(batch->payload->cancel_stream.send_trailing_metadata), batch->payload->cancel_stream.tarpit, &flusher); if (is_last()) { batch.CompleteWith(&flusher); @@ -2160,6 +2162,7 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) { // Handle cancellation. void ServerCallData::Completed(grpc_error_handle error, + ServerMetadataHandle trailing_metadata, bool tarpit_cancellation, Flusher* flusher) { GRPC_TRACE_VLOG(channel, 2) << LogTag() << "ServerCallData::Completed: send_trailing_state=" @@ -2187,6 +2190,10 @@ void ServerCallData::Completed(grpc_error_handle error, batch->cancel_stream = true; batch->payload->cancel_stream.cancel_error = error; batch->payload->cancel_stream.tarpit = tarpit_cancellation; + if (IsPromiseFilterSendCancelMetadataEnabled()) { + batch->payload->cancel_stream.send_trailing_metadata = + std::move(trailing_metadata); + } flusher->Resume(batch); } break; @@ -2319,8 +2326,8 @@ void ServerCallData::RecvTrailingMetadataReady(grpc_error_handle error) { << " md=" << recv_trailing_metadata_->DebugString(); Flusher flusher(this); PollContext poll_ctx(this, &flusher); - Completed(error, recv_trailing_metadata_->get(GrpcTarPit()).has_value(), - &flusher); + Completed(error, /*trailing_metadata=*/nullptr, + recv_trailing_metadata_->get(GrpcTarPit()).has_value(), &flusher); flusher.AddClosure(original_recv_trailing_metadata_ready_, std::move(error), "continue recv trailing"); } @@ -2527,8 +2534,14 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) { break; case SendTrailingState::kInitial: { GRPC_CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK); - Completed(StatusFromMetadata(*md), md->get(GrpcTarPit()).has_value(), - flusher); + if (IsPromiseFilterSendCancelMetadataEnabled()) { + absl::Status status = StatusFromMetadata(*md); + bool tar_pit_set = md->get(GrpcTarPit()).has_value(); + Completed(std::move(status), std::move(md), tar_pit_set, flusher); + } else { + Completed(StatusFromMetadata(*md), /*trailing_metadata=*/nullptr, + md->get(GrpcTarPit()).has_value(), flusher); + } } break; case SendTrailingState::kCancelled: // Nothing to do. diff --git a/deps/grpc/src/core/lib/channel/promise_based_filter.h b/deps/grpc/src/core/lib/channel/promise_based_filter.h index fa8c7c34294..a285b11ef6a 100644 --- a/deps/grpc/src/core/lib/channel/promise_based_filter.h +++ b/deps/grpc/src/core/lib/channel/promise_based_filter.h @@ -1843,8 +1843,9 @@ class ServerCallData : public BaseCallData { struct SendInitialMetadata; // Shut things down when the call completes. - void Completed(grpc_error_handle error, bool tarpit_cancellation, - Flusher* flusher); + void Completed(grpc_error_handle error, + ServerMetadataHandle trailing_metadata, + bool tarpit_cancellation, Flusher* flusher); // Construct a promise that will "call" the next filter. // Effectively: // - put the modified initial metadata into the batch being sent up. diff --git a/deps/grpc/src/core/lib/debug/trace_flags.cc b/deps/grpc/src/core/lib/debug/trace_flags.cc index 6d7eae7cc02..89a8f0de650 100644 --- a/deps/grpc/src/core/lib/debug/trace_flags.cc +++ b/deps/grpc/src/core/lib/debug/trace_flags.cc @@ -111,6 +111,7 @@ TraceFlag secure_endpoint_trace(false, "secure_endpoint"); TraceFlag server_channel_trace(false, "server_channel"); TraceFlag stateful_session_filter_trace(false, "stateful_session_filter"); TraceFlag subchannel_trace(false, "subchannel"); +TraceFlag subchannel_call_trace(false, "subchannel_call"); TraceFlag subchannel_pool_trace(false, "subchannel_pool"); TraceFlag tcp_trace(false, "tcp"); TraceFlag timer_trace(false, "timer"); @@ -193,6 +194,7 @@ const absl::flat_hash_map& GetAllTraceFlags() { {"server_channel", &server_channel_trace}, {"stateful_session_filter", &stateful_session_filter_trace}, {"subchannel", &subchannel_trace}, + {"subchannel_call", &subchannel_call_trace}, {"subchannel_pool", &subchannel_pool_trace}, {"tcp", &tcp_trace}, {"timer", &timer_trace}, diff --git a/deps/grpc/src/core/lib/debug/trace_flags.h b/deps/grpc/src/core/lib/debug/trace_flags.h index b6a39f3ddeb..362f44ab256 100644 --- a/deps/grpc/src/core/lib/debug/trace_flags.h +++ b/deps/grpc/src/core/lib/debug/trace_flags.h @@ -109,6 +109,7 @@ extern TraceFlag secure_endpoint_trace; extern TraceFlag server_channel_trace; extern TraceFlag stateful_session_filter_trace; extern TraceFlag subchannel_trace; +extern TraceFlag subchannel_call_trace; extern TraceFlag subchannel_pool_trace; extern TraceFlag tcp_trace; extern TraceFlag timer_trace; diff --git a/deps/grpc/src/core/lib/debug/trace_flags.yaml b/deps/grpc/src/core/lib/debug/trace_flags.yaml index 8202d76c010..8a9d6542a6d 100644 --- a/deps/grpc/src/core/lib/debug/trace_flags.yaml +++ b/deps/grpc/src/core/lib/debug/trace_flags.yaml @@ -294,6 +294,9 @@ stream_refcount: subchannel: default: false description: Connectivity state of subchannels. +subchannel_call: + default: false + description: Call handling in the subchannel. subchannel_pool: default: false description: Subchannel pool. diff --git a/deps/grpc/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc b/deps/grpc/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc index 65bf311eafa..433d37c7859 100644 --- a/deps/grpc/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +++ b/deps/grpc/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc @@ -17,6 +17,8 @@ #ifdef GPR_APPLE #include #ifdef AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER +#include +#include #include "src/core/lib/event_engine/cf_engine/cfstream_endpoint.h" #include "src/core/util/strerror.h" @@ -116,14 +118,39 @@ void CFStreamEndpointImpl::Connect( GRPC_TRACE_LOG(event_engine_endpoint, INFO) << "CFStreamEndpointImpl::Connect, host_port: " << peer_address_string_; - std::string host_string; - std::string port_string; - grpc_core::SplitHostPort(host_port.value(), &host_string, &port_string); - CFTypeUniqueRef host = CFStringCreateWithCString( - NULL, host_string.c_str(), kCFStringEncodingUTF8); - int port = ResolvedAddressGetPort(peer_address_); - CFStreamCreatePairWithSocketToHost(NULL, host, port, &cf_read_stream_, - &cf_write_stream_); + if (peer_address_.address()->sa_family == AF_UNIX) { + struct sockaddr_un server_addr = + *reinterpret_cast(peer_address_.address()); + // ResolvedAddress does not set the length field, which does not exist on + // Linux. + server_addr.sun_len = sizeof(server_addr); + CFDataRef address = + CFDataCreate(NULL, reinterpret_cast(&server_addr), + sizeof(server_addr)); + if (address == NULL) { + on_connect(absl::UnknownError("Failed to allocate CFData for address")); + return; + } + + CFSocketSignature signature = { + .protocolFamily = PF_UNIX, + .socketType = SOCK_STREAM, + .protocol = 0, + .address = address, + }; + CFStreamCreatePairWithPeerSocketSignature( + NULL, &signature, &cf_read_stream_, &cf_write_stream_); + CFRelease(address); + } else { + std::string host_string; + std::string port_string; + grpc_core::SplitHostPort(host_port.value(), &host_string, &port_string); + CFTypeUniqueRef host = CFStringCreateWithCString( + NULL, host_string.c_str(), kCFStringEncodingUTF8); + int port = ResolvedAddressGetPort(peer_address_); + CFStreamCreatePairWithSocketToHost(NULL, host, port, &cf_read_stream_, + &cf_write_stream_); + } SetupStreams(std::move(on_connect)); } diff --git a/deps/grpc/src/core/lib/event_engine/cf_engine/dns_service_resolver.h b/deps/grpc/src/core/lib/event_engine/cf_engine/dns_service_resolver.h index 94e1316397d..1ccf91ebb31 100644 --- a/deps/grpc/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +++ b/deps/grpc/src/core/lib/event_engine/cf_engine/dns_service_resolver.h @@ -77,8 +77,7 @@ class DNSServiceResolver : public EventEngine::DNSResolver { public: explicit DNSServiceResolver(std::shared_ptr engine) : engine_(std::move(engine)), - impl_(grpc_core::MakeRefCounted( - std::move((engine_)))) {} + impl_(grpc_core::MakeRefCounted(engine_)) {} ~DNSServiceResolver() override { impl_->Shutdown(); } diff --git a/deps/grpc/src/core/lib/event_engine/event_engine.cc b/deps/grpc/src/core/lib/event_engine/event_engine.cc index 94c646f832b..9bf767cd5fe 100644 --- a/deps/grpc/src/core/lib/event_engine/event_engine.cc +++ b/deps/grpc/src/core/lib/event_engine/event_engine.cc @@ -12,8 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. #include +#include #include +#include + +#include "src/core/lib/channel/channel_args.h" #include "src/core/telemetry/context_list_entry.h" #include "absl/strings/str_cat.h" @@ -78,4 +82,9 @@ std::ostream& operator<<(std::ostream& out, return printout(out, handle); } +const grpc_arg_pointer_vtable* grpc_event_engine_arg_vtable() { + return grpc_core::ChannelArgTypeTraits< + std::shared_ptr>::VTable(); +} + } // namespace grpc_event_engine::experimental diff --git a/deps/grpc/src/core/lib/event_engine/extensions/tcp_trace.h b/deps/grpc/src/core/lib/event_engine/extensions/tcp_trace.h index cfee8fc6102..6b6ee482d0b 100644 --- a/deps/grpc/src/core/lib/event_engine/extensions/tcp_trace.h +++ b/deps/grpc/src/core/lib/event_engine/extensions/tcp_trace.h @@ -24,9 +24,6 @@ namespace grpc_event_engine::experimental { -/** If non-zero, enable TCP tracing and stats collection. */ -#define GRPC_ARG_TCP_TRACING_ENABLED "grpc.tcp_tracing_enabled" - class TcpTraceExtension { public: virtual ~TcpTraceExtension() = default; diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc b/deps/grpc/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc index 9a511da9fa3..62838aeccb2 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc @@ -590,8 +590,8 @@ Poller::WorkResult PollPoller::Work( pfds[pfd_count].events = head->BeginPollLocked(POLLIN, POLLOUT); pfd_count++; } else { - LOG(ERROR) << "Polling FD from a wrong generation: " - << head->WrappedFd(); + LOG(INFO) << "FD from fork parent still in poll list: " + << head->WrappedFd(); } } } diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_endpoint.h b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_endpoint.h index bb60f060056..b9b9c3db6d4 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_endpoint.h +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_endpoint.h @@ -608,7 +608,7 @@ class PosixEndpoint : public PosixEndpointWithFdSupport { grpc_event_engine::experimental::SliceBuffer* buffer, grpc_event_engine::experimental::EventEngine::Endpoint::ReadArgs args) override { - return impl_->Read(std::move(on_read), buffer, std::move(args)); + return impl_->Read(std::move(on_read), buffer, args); } bool Write(absl::AnyInvocable on_writable, diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc index 85ac566e0be..be4f064dbd1 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc @@ -403,9 +403,10 @@ void PosixEventEngine::OnConnectFinishInternal(int connection_handle) { } } -std::shared_ptr PosixEventEngine::MakePosixEventEngine() { +std::shared_ptr PosixEventEngine::MakePosixEventEngine( + Options options) { // Can't use make_shared as ctor is private - std::shared_ptr engine(new PosixEventEngine()); + std::shared_ptr engine(new PosixEventEngine(options)); RegisterEventEngineForFork(engine, engine->executor_, engine->timer_manager_); return engine; } @@ -416,20 +417,21 @@ PosixEventEngine::MakeTestOnlyPosixEventEngine( test_only_poller) { // Calling a private PosixEventEngine constructor - can't do make_shared std::shared_ptr engine( - new PosixEventEngine(std::move(test_only_poller))); + new PosixEventEngine(Options{}, std::move(test_only_poller))); RegisterEventEngineForFork(engine, engine->executor_, engine->timer_manager_); return engine; } -PosixEventEngine::PosixEventEngine(std::shared_ptr poller) - : connection_shards_(std::max(2 * gpr_cpu_num_cores(), 1u)), +PosixEventEngine::PosixEventEngine(const Options& options, + std::shared_ptr poller) + : connection_shards_(options.connection_shards), poller_(std::move(poller)), - executor_(MakeThreadPool(grpc_core::Clamp(gpr_cpu_num_cores(), 4u, 16u))), + executor_(MakeThreadPool(options.reserve_threads)), timer_manager_(std::make_shared(executor_)) {} -PosixEventEngine::PosixEventEngine() - : connection_shards_(std::max(2 * gpr_cpu_num_cores(), 1u)), - executor_(MakeThreadPool(grpc_core::Clamp(gpr_cpu_num_cores(), 4u, 16u))), +PosixEventEngine::PosixEventEngine(const Options& options) + : connection_shards_(options.connection_shards), + executor_(MakeThreadPool(options.reserve_threads)), timer_manager_(std::make_shared(executor_)) { if (ShouldUsePosixPoller()) { poller_ = grpc_event_engine::experimental::MakeDefaultPoller(executor_); @@ -457,6 +459,19 @@ struct PosixEventEngine::ClosureData final : public EventEngine::Closure { } }; +void PosixEventEngine::CancelAllPendingTimers() { + { + grpc_core::MutexLock lock(&mu_); + auto pending_handles = known_handles_; + for (auto handle : pending_handles) { + CancelInternal(handle); + } + GRPC_CHECK(known_handles_.empty()); + // Prevent new timers from being scheduled on this EventEngine. + disallow_new_timers_ = true; + } +} + PosixEventEngine::~PosixEventEngine() { { grpc_core::MutexLock lock(&mu_); @@ -478,6 +493,10 @@ PosixEventEngine::~PosixEventEngine() { bool PosixEventEngine::Cancel(EventEngine::TaskHandle handle) { grpc_core::MutexLock lock(&mu_); + return CancelInternal(handle); +} + +bool PosixEventEngine::CancelInternal(EventEngine::TaskHandle handle) { if (!known_handles_.contains(handle)) return false; auto* cd = reinterpret_cast(handle.keys[0]); bool r = timer_manager_->TimerCancel(&cd->timer); @@ -517,6 +536,12 @@ EventEngine::TaskHandle PosixEventEngine::RunAfterInternal( EventEngine::TaskHandle handle{reinterpret_cast(cd), aba_token_.fetch_add(1)}; grpc_core::MutexLock lock(&mu_); + if (disallow_new_timers_) { + delete cd; + // Return handle and don't schedule the callback. The caller will see a + // valid handle but it cannot be cancelled since it was not scheduled. + return handle; + } known_handles_.insert(handle); cd->handle = handle; GRPC_TRACE_LOG(event_engine, INFO) diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h index 96d5ceb4353..61489ac7123 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h @@ -16,8 +16,10 @@ #include #include #include +#include #include +#include #include #include #include @@ -35,6 +37,7 @@ #include "src/core/lib/iomgr/port.h" #include "src/core/util/orphanable.h" #include "src/core/util/sync.h" +#include "src/core/util/useful.h" #include "absl/base/thread_annotations.h" #include "absl/container/flat_hash_map.h" #include "absl/container/inlined_vector.h" @@ -100,6 +103,17 @@ class AsyncConnect { // All methods require an ExecCtx to already exist on the thread's stack. class PosixEventEngine final : public PosixEventEngineWithFdSupport { public: + struct Options { + // Number of connection shards to use. + int connection_shards; + // Number of threads to reserve for the thread pool. + int reserve_threads; + // Options struct is expected to grow to include more fields to + // configure the thread pool, poller etc. + Options() + : connection_shards(std::max(2 * gpr_cpu_num_cores(), 1u)), + reserve_threads(grpc_core::Clamp(gpr_cpu_num_cores(), 4u, 16u)) {} + }; class PosixDNSResolver : public EventEngine::DNSResolver { public: explicit PosixDNSResolver( @@ -116,7 +130,8 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport { grpc_core::OrphanablePtr dns_resolver_; }; - static std::shared_ptr MakePosixEventEngine(); + static std::shared_ptr MakePosixEventEngine( + Options options = Options{}); ~PosixEventEngine() override; @@ -162,6 +177,9 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport { TaskHandle RunAfter(Duration when, absl::AnyInvocable closure) override; bool Cancel(TaskHandle handle) override; + // Cancels all pending timers and prevents any more timers from being + // scheduled. This method should be only called prior to EventEngine shutdown. + void CancelAllPendingTimers(); #ifdef GRPC_POSIX_SOCKET_TCP @@ -185,13 +203,16 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport { friend class AresResolverTest; struct ClosureData; - PosixEventEngine(); + explicit PosixEventEngine(const Options& options); + + bool CancelInternal(TaskHandle handle) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); #ifdef GRPC_POSIX_SOCKET_TCP // Constructs an EventEngine which has a shared ownership of the poller. Use // the MakeTestOnlyPosixEventEngine static method to call this. Its expected // to be used only in tests. explicit PosixEventEngine( + const Options& options, std::shared_ptr poller); @@ -249,6 +270,7 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport { #endif grpc_core::Mutex mu_; + bool disallow_new_timers_ ABSL_GUARDED_BY(mu_) = false; TaskHandleSet known_handles_ ABSL_GUARDED_BY(mu_); std::atomic aba_token_{0}; #if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER) diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc index e50dbf5e796..f8386522a5e 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc @@ -273,9 +273,7 @@ absl::Status PosixEngineListenerImpl::HandleExternalConnection( (void)posix_interface.SetSocketNoSigpipeIfPossible(wrapped); auto peer_name = posix_interface.PeerAddressString(wrapped); if (!peer_name.ok()) { - if (grpc_core::IsGracefulExternalConnectionFailureEnabled()) { - posix_interface.Close(wrapped); - } + posix_interface.Close(wrapped); return absl::UnknownError( absl::StrCat("HandleExternalConnection: peer not connected: ", peer_name.status().ToString())); diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc index e8763713825..d3e6a7b895f 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc @@ -26,6 +26,7 @@ #include "src/core/lib/event_engine/posix_engine/posix_interface.h" #include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h" #include "src/core/lib/event_engine/tcp_socket_utils.h" +#include "src/core/lib/experiments/experiments.h" #include "src/core/lib/iomgr/port.h" #include "src/core/util/crash.h" // IWYU pragma: keep #include "src/core/util/grpc_check.h" @@ -63,10 +64,10 @@ bool SystemHasIfAddrs() { return false; } #endif // GRPC_HAVE_IFADDRS -// Prepare a recently-created socket for listening. -absl::Status PrepareSocket(EventEnginePosixInterface* posix_interface, - const PosixTcpOptions& options, - ListenerSocket& socket) { +// Prepare socket options for a recently-created socket for listening. +absl::Status PrepareListenerSocketOptions( + EventEnginePosixInterface* posix_interface, const PosixTcpOptions& options, + ListenerSocket& socket) { FileDescriptor fd = socket.sock; GRPC_CHECK(fd.ready()); bool close_fd = true; @@ -77,24 +78,119 @@ absl::Status PrepareSocket(EventEnginePosixInterface* posix_interface, posix_interface->Close(fd); } }); - auto listen_address = - posix_interface->PrepareListenerSocket(socket.sock, options, socket.addr); - if (!listen_address.ok()) { - return std::move(listen_address).status(); + auto status = posix_interface->PrepareListenerSocketOptions( + socket.sock, options, socket.addr); + if (!status.ok()) { + return status; } - socklen_t len = static_cast(sizeof(struct sockaddr_storage)); - socket.port = - ResolvedAddressGetPort(ResolvedAddress(listen_address->address(), len)); // No errors. Set close_fd to false to ensure the socket is not closed. close_fd = false; return absl::OkStatus(); } +absl::StatusOr NewListenerContainerAddWildcardAddresses( + EventEnginePosixInterface* posix_interface, + ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options, + int requested_port, + absl::AnyInvocable socket_filter) { + bool should_expand_wildcard_addrs = + SystemHasIfAddrs() && options.expand_wildcard_addrs; + if (should_expand_wildcard_addrs && socket_filter == nullptr) { + // If there is no socket filter, we can just expand all local addresses. + return ListenerContainerAddAllLocalAddresses( + posix_interface, listener_sockets, options, requested_port); + } + + ResolvedAddress wild4 = ResolvedAddressMakeWild4(requested_port); + ResolvedAddress wild6 = ResolvedAddressMakeWild6(requested_port); + absl::StatusOr v6_sock = absl::InternalError("init"); + absl::StatusOr v4_sock = absl::InternalError("init"); + bool add_v4_sock = true; + + // Try creating IPv6 socket first. + v6_sock = CreateListenerSocketWithoutBinding(posix_interface, options, wild6); + if (v6_sock.ok()) { + if (v6_sock->dsmode == EventEnginePosixInterface::DSMODE_DUALSTACK || + v6_sock->dsmode == EventEnginePosixInterface::DSMODE_IPV4) { + add_v4_sock = false; + } + } + if (add_v4_sock) { + // If we got a v6-only socket or nothing, try creating IPv4 socket. + v4_sock = + CreateListenerSocketWithoutBinding(posix_interface, options, wild4); + } + + // If there is a socket filter, we only expand the wildcard addresses if + // the socket filter returns true for either socket. + if (should_expand_wildcard_addrs && + ((v6_sock.ok() && socket_filter(*v6_sock)) || + (v4_sock.ok() && socket_filter(*v4_sock)))) { + // Close the wildcard sockets and expand all local addresses. + if (v6_sock.ok()) { + posix_interface->Close(v6_sock->sock); + } + if (v4_sock.ok()) { + posix_interface->Close(v4_sock->sock); + } + return ListenerContainerAddAllLocalAddresses( + posix_interface, listener_sockets, options, requested_port); + } + + if (!v6_sock.ok() && !v4_sock.ok()) { + return absl::FailedPreconditionError(absl::StrCat( + "Failed to add any wildcard listeners: ", v6_sock.status().message(), + v4_sock.status().message())); + } + + // If we are not expanding wildcard addresses, we now bind to each wildcard + // socket and add them to the listener sockets container. + int assigned_port = 0; + if (v6_sock.ok()) { + auto bind_status = + BindListenerSocket(posix_interface, v6_sock->addr, *v6_sock); + if (bind_status.ok()) { + assigned_port = v6_sock->port; + listener_sockets.Append(*v6_sock); + } else { + v6_sock = bind_status; + } + } + if (v4_sock.ok()) { + if (assigned_port != 0) { + ResolvedAddressSetPort(v4_sock->addr, assigned_port); + } + auto bind_status = + BindListenerSocket(posix_interface, v4_sock->addr, *v4_sock); + if (bind_status.ok()) { + assigned_port = v4_sock->port; + listener_sockets.Append(*v4_sock); + } else { + v4_sock = bind_status; + } + } + if (assigned_port > 0) return assigned_port; + return absl::FailedPreconditionError(absl::StrCat( + "Failed to add any wildcard listeners: ", v6_sock.status().message(), + v4_sock.status().message())); +} + } // namespace absl::StatusOr CreateAndPrepareListenerSocket( EventEnginePosixInterface* posix_interface, const PosixTcpOptions& options, const ResolvedAddress& addr) { + auto result = + CreateListenerSocketWithoutBinding(posix_interface, options, addr); + GRPC_RETURN_IF_ERROR(result.status()); + GRPC_RETURN_IF_ERROR( + BindListenerSocket(posix_interface, result->addr, *result)); + return result; +} + +absl::StatusOr CreateListenerSocketWithoutBinding( + EventEnginePosixInterface* posix_interface, const PosixTcpOptions& options, + const ResolvedAddress& addr) { ResolvedAddress addr4_copy; ListenerSocket socket; auto result = posix_interface->CreateDualStackSocket( @@ -109,11 +205,36 @@ absl::StatusOr CreateAndPrepareListenerSocket( } else { socket.addr = addr; } - GRPC_RETURN_IF_ERROR(PrepareSocket(posix_interface, options, socket)); - GRPC_CHECK_GT(socket.port, 0); + GRPC_RETURN_IF_ERROR( + PrepareListenerSocketOptions(posix_interface, options, socket)); return socket; } +absl::Status BindListenerSocket(EventEnginePosixInterface* posix_interface, + const ResolvedAddress& addr, + ListenerSocket& socket) { + FileDescriptor fd = socket.sock; + GRPC_CHECK(fd.ready()); + bool close_fd = true; + socket.port = 0; + auto sock_cleanup = + absl::MakeCleanup([&close_fd, fd, posix_interface]() -> void { + if (close_fd && fd.ready()) { + posix_interface->Close(fd); + } + }); + auto listen_address = posix_interface->BindListenerSocket(socket.sock, addr); + if (!listen_address.ok()) { + return std::move(listen_address).status(); + } + socklen_t len = static_cast(sizeof(struct sockaddr_storage)); + socket.port = + ResolvedAddressGetPort(ResolvedAddress(listen_address->address(), len)); + close_fd = false; + GRPC_CHECK_GT(socket.port, 0); + return absl::OkStatus(); +} + bool IsSockAddrLinkLocal(const EventEngine::ResolvedAddress* resolved_addr) { const sockaddr* addr = resolved_addr->address(); if (addr->sa_family == AF_INET) { @@ -226,7 +347,13 @@ absl::StatusOr ListenerContainerAddAllLocalAddresses( absl::StatusOr ListenerContainerAddWildcardAddresses( EventEnginePosixInterface* posix_interface, ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options, - int requested_port) { + int requested_port, + absl::AnyInvocable socket_filter) { + if (grpc_core::IsWildcardIpExpansionRestrictionEnabled()) { + return NewListenerContainerAddWildcardAddresses( + posix_interface, listener_sockets, options, requested_port, + std::move(socket_filter)); + } ResolvedAddress wild4 = ResolvedAddressMakeWild4(requested_port); ResolvedAddress wild6 = ResolvedAddressMakeWild6(requested_port); absl::StatusOr v6_sock; diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h index 77099443ed1..8593cdd9110 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h @@ -51,6 +51,20 @@ class ListenerSocketsContainer { virtual ~ListenerSocketsContainer() = default; }; +// Creates a listener socket, and prepares it with specified options, but +// does not bind or listen on it. +absl::StatusOr +CreateListenerSocketWithoutBinding(EventEnginePosixInterface* posix_interface, + const PosixTcpOptions& options, + const EventEngine::ResolvedAddress& addr); + +// Binds and listens on a listener socket. The socket must have been created +// with `CreateListenerSocketWithoutBinding`. +absl::Status BindListenerSocket( + EventEnginePosixInterface* posix_interface, + const EventEngine::ResolvedAddress& addr, + ListenerSocketsContainer::ListenerSocket& socket); + // Creates and configures a socket to be used by the EventEngine Listener. The // type of the socket to create is determined by the by the passed address. The // socket configuration is specified by passed tcp options. If successful, it @@ -66,11 +80,14 @@ CreateAndPrepareListenerSocket( // server. The newly created socket is configured according to the passed // options and added to the passed ListenerSocketsContainer object. The function // returns the port at which the created socket listens for incoming -// connections. +// connections. The optional socket_filter is used to provide additional +// constraints on whether the wildcard address should be expanded. absl::StatusOr ListenerContainerAddWildcardAddresses( EventEnginePosixInterface* posix_interface, ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options, - int requested_port); + int requested_port, + absl::AnyInvocable + socket_filter = nullptr); // Get all addresses assigned to network interfaces on the machine and create // and add a socket for each local address. Each newly created socket is diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface.h b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface.h index 53c538e1114..21d3ac5ccc9 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface.h +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface.h @@ -161,6 +161,13 @@ class EventEnginePosixInterface { const FileDescriptor& fd); // Retrieves the peer address of a connected socket as a string. absl::StatusOr PeerAddressString(const FileDescriptor& fd); + // Prepares listener socket options, but does not bind or listen. + absl::Status PrepareListenerSocketOptions( + const FileDescriptor& fd, const PosixTcpOptions& options, + const EventEngine::ResolvedAddress& address); + // Bind and listen on a listener socket. + absl::StatusOr BindListenerSocket( + const FileDescriptor& fd, const EventEngine::ResolvedAddress& address); // Prepares a listener socket with specified options and address binding. absl::StatusOr PrepareListenerSocket( const FileDescriptor& fd, const PosixTcpOptions& options, diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc index 3890fece725..63d280835d8 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc @@ -804,12 +804,12 @@ absl::StatusOr EventEnginePosixInterface::PeerAddressString( return ResolvedAddressToNormalizedString((*status)); } -absl::StatusOr -EventEnginePosixInterface::PrepareListenerSocket( +absl::Status EventEnginePosixInterface::PrepareListenerSocketOptions( const FileDescriptor& fd, const PosixTcpOptions& options, const EventEngine::ResolvedAddress& address) { if (!IsCorrectGeneration(fd)) { - return absl::InternalError("PrepareListenerSocket: wrong generation"); + return absl::InternalError( + "PrepareListenerSocketOptions: wrong generation"); } int f = fd.fd(); if (IsSocketReusePortSupported() && options.allow_reuse_port && @@ -837,6 +837,16 @@ EventEnginePosixInterface::PrepareListenerSocket( // it's not fatal, so just log it. VLOG(2) << "Node does not support SO_ZEROCOPY, continuing."; } + return absl::OkStatus(); +} + +absl::StatusOr +EventEnginePosixInterface::BindListenerSocket( + const FileDescriptor& fd, const EventEngine::ResolvedAddress& address) { + if (!IsCorrectGeneration(fd)) { + return absl::InternalError("BindListenerSocket: wrong generation"); + } + int f = fd.fd(); if (bind(f, address.address(), address.size()) < 0) { auto sockaddr_str = ResolvedAddressToString(address); if (!sockaddr_str.ok()) { @@ -863,6 +873,14 @@ EventEnginePosixInterface::PrepareListenerSocket( return sockname_temp; } +absl::StatusOr +EventEnginePosixInterface::PrepareListenerSocket( + const FileDescriptor& fd, const PosixTcpOptions& options, + const EventEngine::ResolvedAddress& address) { + GRPC_RETURN_IF_ERROR(PrepareListenerSocketOptions(fd, options, address)); + return BindListenerSocket(fd, address); +} + // Set a socket using a grpc_socket_mutator absl::Status EventEnginePosixInterface::SetSocketMutator( const FileDescriptor& fd, grpc_fd_usage usage, diff --git a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc index 08037d9088e..f9832f7fe5f 100644 --- a/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +++ b/deps/grpc/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc @@ -126,6 +126,22 @@ absl::Status EventEnginePosixInterface::PrepareTcpClientSocket( "EventEnginePosixInterface::PrepareTcpClientSocket"); } +absl::Status EventEnginePosixInterface::PrepareListenerSocketOptions( + const FileDescriptor& fd, const PosixTcpOptions& options, + const EventEngine::ResolvedAddress& address) { + grpc_core::Crash( + "unimplemented on this platform: " + "EventEnginePosixInterface::PrepareListenerSocketOptions"); +} + +absl::StatusOr +EventEnginePosixInterface::BindListenerSocket( + const FileDescriptor& fd, const EventEngine::ResolvedAddress& address) { + grpc_core::Crash( + "unimplemented on this platform: " + "EventEnginePosixInterface::BindListenerSocket"); +} + absl::StatusOr EventEnginePosixInterface::PrepareListenerSocket( const FileDescriptor& fd, const PosixTcpOptions& options, diff --git a/deps/grpc/src/core/lib/event_engine/tcp_telemetry.h b/deps/grpc/src/core/lib/event_engine/tcp_telemetry.h index dc62e87bf83..b439c68788f 100644 --- a/deps/grpc/src/core/lib/event_engine/tcp_telemetry.h +++ b/deps/grpc/src/core/lib/event_engine/tcp_telemetry.h @@ -26,97 +26,101 @@ class TcpTelemetryDomain final : public InstrumentDomain { public: using Backend = HighContentionBackend; static constexpr absl::string_view kName = "tcp_connection_metrics"; - static constexpr auto kLabels = Labels( - "network.local.address", "network.local.port", "network.remote.address", - "network.remote.port", "is_control_endpoint"); + GRPC_INSTRUMENT_DOMAIN_LABELS("network.local.address", "network.local.port", + "network.remote.address", "network.remote.port", + "is_control_endpoint"); static inline const auto kMinRtt = RegisterHistogram( - "min_rtt", "Minimum round trip time of a connection in microseconds", - "{us}", 1 << 24, 100); // Max bucket is 16 seconds. + "grpc.tcp.min_rtt", + "Minimum round trip time of a connection in microseconds", "{us}", + 1 << 24, 100); // Max bucket is 16 seconds. static inline const auto kDeliveryRate = RegisterHistogram( - "delivery_rate", + "grpc.tcp.delivery_rate", "TCP's most recent measure of the connection's " "\"non-app-limited\" throughput.", "By/s", int64_t{1} << 34, 100); // Max bucket is 16 GiB/s. static inline const auto kPacketsSent = RegisterCounter( - "packets_sent", + "grpc.tcp.packets_sent", "Total packets sent by TCP including retransmissions and spurious " "retransmissions.", "{packet}"); static inline const auto kPacketsRetransmitted = RegisterCounter( - "packets_retransmitted", + "grpc.tcp.packets_retransmitted", "Total packets sent by TCP except those sent for the first time.", "{packet}"); static inline const auto kPacketsSpuriousRetransmitted = RegisterCounter( - "packets_spurious_retransmitted", + "grpc.tcp.packets_spurious_retransmitted", "Total packets retransmitted by TCP that were later found to be " "unnecessary.", "{packet}"); static inline const auto kRecurringRetransmits = RegisterCounter( - "recurring_retransmits", + "grpc.tcp.recurring_retransmits", "The number of times the latest TCP packet was retransmitted due to " "expiration of TCP retransmission timer (RTO), and not acknowledged at " "the time the connection was closed.", "{packet}"); static inline const auto kBytesSent = RegisterCounter( - "bytes_sent", + "grpc.tcp.bytes_sent", "Total bytes sent by TCP including retransmissions and spurious " "retransmissions.", "By"); static inline const auto kBytesRetransmitted = RegisterCounter( - "bytes_retransmitted", + "grpc.tcp.bytes_retransmitted", "Total bytes sent by TCP except those sent for the first time.", "By"); static inline const auto kConnectionCount = RegisterUpDownCounter( - "connection_count", "Number of active TCP connections.", "{connection}"); + "grpc.tcp.connection_count", "Number of active TCP connections.", + "{connection}"); static inline const auto kSyscallWrites = RegisterCounter( - "syscall_writes", + "grpc.tcp.syscall_writes", "The number of times we invoked the sendmsg (or sendmmsg) syscall and " "wrote data to the TCP socket.", "{syscall}"); static inline const auto kWriteSize = RegisterHistogram( - "write_size", "The number of bytes offered to each syscall_write.", - "By", 8 << 20, 20); + "grpc.tcp.write_size", + "The number of bytes offered to each syscall_write.", "By", 8 << 20, + 20); static inline const auto kSyscallReads = RegisterCounter( - "syscall_reads", + "grpc.tcp.syscall_reads", "The number of times we invoked the recvmsg (or recvmmsg or zero copy " "getsockopt) syscall and read data from the TCP socket.", "{syscall}"); static inline const auto kReadSize = RegisterHistogram( - "read_size", "The number of bytes received by each syscall_read.", - "By", 8 << 20, 20); + "grpc.tcp.read_size", + "The number of bytes received by each syscall_read.", "By", 8 << 20, + 20); static inline const auto kSenderLatency = RegisterHistogram( - "sender_latency", + "grpc.tcp.sender_latency", "Time taken by the TCP socket to write the first byte of a write " "onto the NIC.", "us", 1e6, 20); static inline const auto kTransferLatency1k = RegisterHistogram( - "transfer_latency_1k", + "grpc.tcp.transfer_latency_1k", "Time taken to transmit the first 1024 bytes of a write.", "us", 1e6, 20); static inline const auto kTransferLatency8k = RegisterHistogram( - "transfer_latency_8k", + "grpc.tcp.transfer_latency_8k", "Time taken to transmit the first 8196 bytes of a write.", "us", 1e6, 20); static inline const auto kTransferLatency64k = RegisterHistogram( - "transfer_latency_64k", + "grpc.tcp.transfer_latency_64k", "Time taken to transmit the first 65536 bytes of a write.", "us", 1e6, 20); static inline const auto kTransferLatency256k = RegisterHistogram( - "transfer_latency_256k", + "grpc.tcp.transfer_latency_256k", "Time taken to transmit the first 262144 bytes of a write.", "us", 1e6, 20); static inline const auto kTransferLatency2m = RegisterHistogram( - "transfer_latency_2m", + "grpc.tcp.transfer_latency_2m", "Time taken to transmit the first 2097152 bytes of a write.", "us", 1e6, 20); }; diff --git a/deps/grpc/src/core/lib/experiments/experiments.cc b/deps/grpc/src/core/lib/experiments/experiments.cc index 012d5a826bb..92c7f96030f 100644 --- a/deps/grpc/src/core/lib/experiments/experiments.cc +++ b/deps/grpc/src/core/lib/experiments/experiments.cc @@ -23,24 +23,34 @@ #if defined(GRPC_CFSTREAM) namespace { +const char* const description_buffer_list_deletion_prep = + "Gate the removal of old TCP timestamp collection mechanism."; +const char* const additional_constraints_buffer_list_deletion_prep = "{}"; const char* const description_call_tracer_in_transport = "Transport directly passes byte counts to CallTracer."; const char* const additional_constraints_call_tracer_in_transport = "{}"; -const char* const description_channelz_use_v2_for_v1_api = - "Use the v2 channelz API for the v1 channelz API."; -const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}"; -const char* const description_channelz_use_v2_for_v1_service = - "Use the v2 channelz service for the v1 channelz service."; -const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}"; +const char* const + description_call_tracer_send_initial_metadata_is_an_annotation = + "Use the new annotation-based CallTracer API."; +const char* const + additional_constraints_call_tracer_send_initial_metadata_is_an_annotation = + "{}"; +const char* const + description_call_tracer_send_trailing_metadata_is_an_annotation = + "Use the new annotation-based CallTracer API."; +const char* const + additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation = + "{}"; const char* const description_chaotic_good_connect_deadline = "Use the deadline from the connect args in chaotic good connector"; const char* const additional_constraints_chaotic_good_connect_deadline = "{}"; const char* const description_chaotic_good_framing_layer = "Enable the chaotic good framing layer."; const char* const additional_constraints_chaotic_good_framing_layer = "{}"; -const char* const description_chttp2_bound_write_size = - "Fix a bug where chttp2 can generate very large writes"; -const char* const additional_constraints_chttp2_bound_write_size = "{}"; +const char* const description_chaotic_good_send_supported_features = + "Send supported features in chaotic good settings frames."; +const char* const additional_constraints_chaotic_good_send_supported_features = + "{}"; const char* const description_error_flatten = "Flatten errors to ordinary absl::Status form."; const char* const additional_constraints_error_flatten = "{}"; @@ -82,9 +92,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = { const char* const description_event_engine_poller_for_python = "Enable event engine poller in gRPC Python"; const char* const additional_constraints_event_engine_poller_for_python = "{}"; -const char* const description_event_engine_secure_endpoint = - "Use EventEngine secure endpoint wrapper instead of iomgr when available"; -const char* const additional_constraints_event_engine_secure_endpoint = "{}"; const char* const description_fail_recv_metadata_on_deadline_exceeded = "Fail recv initial metadata when the deadline is exceeded."; const char* const @@ -95,10 +102,6 @@ const char* const additional_constraints_free_large_allocator = "{}"; const char* const description_fuse_filters = "If set, individual filters are merged into fused filters"; const char* const additional_constraints_fuse_filters = "{}"; -const char* const description_graceful_external_connection_failure = - "If set, handles external connection failures gracefully"; -const char* const additional_constraints_graceful_external_connection_failure = - "{}"; const char* const description_keep_alive_ping_timer_batch = "Avoid explicitly cancelling the keepalive timer. Instead adjust the " "callback to re-schedule itself to the next ping interval."; @@ -110,6 +113,9 @@ const char* const additional_constraints_local_connector_secure = "{}"; const char* const description_max_inflight_pings_strict_limit = "If set, the max inflight pings limit is strictly enforced."; const char* const additional_constraints_max_inflight_pings_strict_limit = "{}"; +const char* const description_metadata_publish_to_app_tag = + "Publish metadata to the app using the kPublishToApp metadata field."; +const char* const additional_constraints_metadata_publish_to_app_tag = "{}"; const char* const description_monitoring_experiment = "Placeholder experiment to prove/disprove our monitoring is working"; const char* const additional_constraints_monitoring_experiment = "{}"; @@ -131,8 +137,7 @@ const char* const description_pipelined_read_secure_endpoint = const char* const additional_constraints_pipelined_read_secure_endpoint = "{}"; const uint8_t required_experiments_pipelined_read_secure_endpoint[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_pollset_alternative = "Code outside iomgr that relies directly on pollsets will use non-pollset " "alternatives when enabled."; @@ -159,8 +164,16 @@ const char* const additional_constraints_promise_based_http2_server_transport = const char* const description_promise_based_inproc_transport = "Use promises for the in-process transport."; const char* const additional_constraints_promise_based_inproc_transport = "{}"; +const char* const description_promise_filter_send_cancel_metadata = + "Enables sending all trailing metadata fields from server side " + "promise-based filters upon stream cancellation."; +const char* const additional_constraints_promise_filter_send_cancel_metadata = + "{}"; const char* const description_retry_in_callv3 = "Support retries with call-v3"; const char* const additional_constraints_retry_in_callv3 = "{}"; +const char* const description_return_preexisting_errors = + "Return errors that exist before the start of the call in RunHandler."; +const char* const additional_constraints_return_preexisting_errors = "{}"; const char* const description_rr_wrr_connect_from_random_index = "RR and WRR LB policies start connecting from a random index in the " "address list."; @@ -176,16 +189,20 @@ const char* const additional_constraints_secure_endpoint_offload_large_reads = "{}"; const uint8_t required_experiments_secure_endpoint_offload_large_reads[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_secure_endpoint_offload_large_writes = "If a large read write to be encrypted, use a separate thread."; const char* const additional_constraints_secure_endpoint_offload_large_writes = "{}"; const uint8_t required_experiments_secure_endpoint_offload_large_writes[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; +const char* const description_secure_endpoint_read_coalescing = + "Coalesce decrypted bytes in SecureEndpoint if a read_hint is provided."; +const char* const additional_constraints_secure_endpoint_read_coalescing = "{}"; +const uint8_t required_experiments_secure_endpoint_read_coalescing[] = { + static_cast(grpc_core::kExperimentIdEventEngineClient), + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_skip_clear_peer_on_cancellation = "If set, skips clearing of peer string on call cancellation."; const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}"; @@ -195,6 +212,9 @@ const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}"; const char* const description_sleep_use_non_owning_waker = "If set, the sleep promise uses a non-owning waker."; const char* const additional_constraints_sleep_use_non_owning_waker = "{}"; +const char* const description_subchannel_connection_scaling = + "Subchannel connection scaling support."; +const char* const additional_constraints_subchannel_connection_scaling = "{}"; const char* const description_subchannel_wrapper_cleanup_on_orphan = "Fixes the subchannel wrapper to drop any non-cancelled watchers when it " "gets orphaned."; @@ -209,18 +229,6 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}"; const char* const description_tcp_rcv_lowat = "Use SO_RCVLOWAT to avoid wakeups on the read path."; const char* const additional_constraints_tcp_rcv_lowat = "{}"; -const char* const description_track_writes_in_resource_quota = - "Track the Write memory in Resource Quota."; -const char* const additional_constraints_track_writes_in_resource_quota = "{}"; -const char* const description_track_zero_copy_allocations_in_resource_quota = - "Track the memory allocattions under the zero copy path in Resource Quota. " - "This includes the encryption / decryption for privacy-and-integrity " - "payloads."; -const char* const - additional_constraints_track_zero_copy_allocations_in_resource_quota = "{}"; -const char* const description_transport_state_watcher = - "New state watcher API between transport and subchannel."; -const char* const additional_constraints_transport_state_watcher = "{}"; const char* const description_tsi_frame_protector_without_locks = "Do not hold locks while using the tsi_frame_protector."; const char* const additional_constraints_tsi_frame_protector_without_locks = @@ -229,28 +237,45 @@ const char* const description_unconstrained_max_quota_buffer_size = "Discard the cap on the max free pool size for one memory allocator"; const char* const additional_constraints_unconstrained_max_quota_buffer_size = "{}"; +const char* const description_use_call_event_engine_in_completion_queue = + "Use the call event engine to run callbacks in completion queue."; +const char* const + additional_constraints_use_call_event_engine_in_completion_queue = "{}"; +const char* const description_wildcard_ip_expansion_restriction = + "If set, adds optional restriction on when to expand wildcard IPs."; +const char* const additional_constraints_wildcard_ip_expansion_restriction = + "{}"; +const char* const description_xds_channel_filter_chain_per_route = + "xDS channels use a separate filter chain for each route."; +const char* const additional_constraints_xds_channel_filter_chain_per_route = + "{}"; } // namespace namespace grpc_core { const ExperimentMetadata g_experiment_metadata[] = { + {"buffer_list_deletion_prep", description_buffer_list_deletion_prep, + additional_constraints_buffer_list_deletion_prep, nullptr, 0, false, true}, {"call_tracer_in_transport", description_call_tracer_in_transport, additional_constraints_call_tracer_in_transport, nullptr, 0, true, false}, - {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api, - additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false, - true}, - {"channelz_use_v2_for_v1_service", - description_channelz_use_v2_for_v1_service, - additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false, - true}, + {"call_tracer_send_initial_metadata_is_an_annotation", + description_call_tracer_send_initial_metadata_is_an_annotation, + additional_constraints_call_tracer_send_initial_metadata_is_an_annotation, + nullptr, 0, true, true}, + {"call_tracer_send_trailing_metadata_is_an_annotation", + description_call_tracer_send_trailing_metadata_is_an_annotation, + additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation, + nullptr, 0, false, true}, {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline, additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true, true}, {"chaotic_good_framing_layer", description_chaotic_good_framing_layer, additional_constraints_chaotic_good_framing_layer, nullptr, 0, true, false}, - {"chttp2_bound_write_size", description_chttp2_bound_write_size, - additional_constraints_chttp2_bound_write_size, nullptr, 0, false, true}, + {"chaotic_good_send_supported_features", + description_chaotic_good_send_supported_features, + additional_constraints_chaotic_good_send_supported_features, nullptr, 0, + false, true}, {"error_flatten", description_error_flatten, additional_constraints_error_flatten, nullptr, 0, false, false}, {"event_engine_client", description_event_engine_client, @@ -262,7 +287,7 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_event_engine_dns_non_client_channel, nullptr, 0, true, false}, {"event_engine_fork", description_event_engine_fork, - additional_constraints_event_engine_fork, nullptr, 0, false, false}, + additional_constraints_event_engine_fork, nullptr, 0, true, false}, {"event_engine_listener", description_event_engine_listener, additional_constraints_event_engine_listener, nullptr, 0, true, false}, {"event_engine_callback_cq", description_event_engine_callback_cq, @@ -274,11 +299,8 @@ const ExperimentMetadata g_experiment_metadata[] = { required_experiments_event_engine_for_all_other_endpoints, 4, true, false}, {"event_engine_poller_for_python", description_event_engine_poller_for_python, - additional_constraints_event_engine_poller_for_python, nullptr, 0, false, + additional_constraints_event_engine_poller_for_python, nullptr, 0, true, true}, - {"event_engine_secure_endpoint", description_event_engine_secure_endpoint, - additional_constraints_event_engine_secure_endpoint, nullptr, 0, true, - false}, {"fail_recv_metadata_on_deadline_exceeded", description_fail_recv_metadata_on_deadline_exceeded, additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0, @@ -287,10 +309,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_free_large_allocator, nullptr, 0, false, true}, {"fuse_filters", description_fuse_filters, additional_constraints_fuse_filters, nullptr, 0, false, false}, - {"graceful_external_connection_failure", - description_graceful_external_connection_failure, - additional_constraints_graceful_external_connection_failure, nullptr, 0, - true, false}, {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch, additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false, true}, @@ -300,6 +318,9 @@ const ExperimentMetadata g_experiment_metadata[] = { description_max_inflight_pings_strict_limit, additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true, true}, + {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag, + additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true, + true}, {"monitoring_experiment", description_monitoring_experiment, additional_constraints_monitoring_experiment, nullptr, 0, true, true}, {"multiping", description_multiping, additional_constraints_multiping, @@ -313,12 +334,12 @@ const ExperimentMetadata g_experiment_metadata[] = { true}, {"pick_first_ready_to_connecting", description_pick_first_ready_to_connecting, - additional_constraints_pick_first_ready_to_connecting, nullptr, 0, false, + additional_constraints_pick_first_ready_to_connecting, nullptr, 0, true, true}, {"pipelined_read_secure_endpoint", description_pipelined_read_secure_endpoint, additional_constraints_pipelined_read_secure_endpoint, - required_experiments_pipelined_read_secure_endpoint, 3, false, false}, + required_experiments_pipelined_read_secure_endpoint, 2, false, false}, {"pollset_alternative", description_pollset_alternative, additional_constraints_pollset_alternative, required_experiments_pollset_alternative, 2, false, false}, @@ -337,11 +358,17 @@ const ExperimentMetadata g_experiment_metadata[] = { description_promise_based_inproc_transport, additional_constraints_promise_based_inproc_transport, nullptr, 0, false, false}, + {"promise_filter_send_cancel_metadata", + description_promise_filter_send_cancel_metadata, + additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0, + false, true}, {"retry_in_callv3", description_retry_in_callv3, additional_constraints_retry_in_callv3, nullptr, 0, false, true}, + {"return_preexisting_errors", description_return_preexisting_errors, + additional_constraints_return_preexisting_errors, nullptr, 0, false, true}, {"rr_wrr_connect_from_random_index", description_rr_wrr_connect_from_random_index, - additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false, + additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, true, true}, {"schedule_cancellation_over_write", description_schedule_cancellation_over_write, @@ -350,11 +377,15 @@ const ExperimentMetadata g_experiment_metadata[] = { {"secure_endpoint_offload_large_reads", description_secure_endpoint_offload_large_reads, additional_constraints_secure_endpoint_offload_large_reads, - required_experiments_secure_endpoint_offload_large_reads, 3, false, true}, + required_experiments_secure_endpoint_offload_large_reads, 2, false, true}, {"secure_endpoint_offload_large_writes", description_secure_endpoint_offload_large_writes, additional_constraints_secure_endpoint_offload_large_writes, - required_experiments_secure_endpoint_offload_large_writes, 3, false, true}, + required_experiments_secure_endpoint_offload_large_writes, 2, false, true}, + {"secure_endpoint_read_coalescing", + description_secure_endpoint_read_coalescing, + additional_constraints_secure_endpoint_read_coalescing, + required_experiments_secure_endpoint_read_coalescing, 2, false, true}, {"skip_clear_peer_on_cancellation", description_skip_clear_peer_on_cancellation, additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false, @@ -365,6 +396,9 @@ const ExperimentMetadata g_experiment_metadata[] = { true}, {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker, additional_constraints_sleep_use_non_owning_waker, nullptr, 0, true, true}, + {"subchannel_connection_scaling", description_subchannel_connection_scaling, + additional_constraints_subchannel_connection_scaling, nullptr, 0, false, + true}, {"subchannel_wrapper_cleanup_on_orphan", description_subchannel_wrapper_cleanup_on_orphan, additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0, @@ -373,16 +407,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true}, {"tcp_rcv_lowat", description_tcp_rcv_lowat, additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true}, - {"track_writes_in_resource_quota", - description_track_writes_in_resource_quota, - additional_constraints_track_writes_in_resource_quota, nullptr, 0, false, - true}, - {"track_zero_copy_allocations_in_resource_quota", - description_track_zero_copy_allocations_in_resource_quota, - additional_constraints_track_zero_copy_allocations_in_resource_quota, - nullptr, 0, false, true}, - {"transport_state_watcher", description_transport_state_watcher, - additional_constraints_transport_state_watcher, nullptr, 0, false, true}, {"tsi_frame_protector_without_locks", description_tsi_frame_protector_without_locks, additional_constraints_tsi_frame_protector_without_locks, nullptr, 0, @@ -391,30 +415,52 @@ const ExperimentMetadata g_experiment_metadata[] = { description_unconstrained_max_quota_buffer_size, additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0, false, true}, + {"use_call_event_engine_in_completion_queue", + description_use_call_event_engine_in_completion_queue, + additional_constraints_use_call_event_engine_in_completion_queue, nullptr, + 0, false, true}, + {"wildcard_ip_expansion_restriction", + description_wildcard_ip_expansion_restriction, + additional_constraints_wildcard_ip_expansion_restriction, nullptr, 0, + false, true}, + {"xds_channel_filter_chain_per_route", + description_xds_channel_filter_chain_per_route, + additional_constraints_xds_channel_filter_chain_per_route, nullptr, 0, + true, true}, }; } // namespace grpc_core #elif defined(GPR_WINDOWS) namespace { +const char* const description_buffer_list_deletion_prep = + "Gate the removal of old TCP timestamp collection mechanism."; +const char* const additional_constraints_buffer_list_deletion_prep = "{}"; const char* const description_call_tracer_in_transport = "Transport directly passes byte counts to CallTracer."; const char* const additional_constraints_call_tracer_in_transport = "{}"; -const char* const description_channelz_use_v2_for_v1_api = - "Use the v2 channelz API for the v1 channelz API."; -const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}"; -const char* const description_channelz_use_v2_for_v1_service = - "Use the v2 channelz service for the v1 channelz service."; -const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}"; +const char* const + description_call_tracer_send_initial_metadata_is_an_annotation = + "Use the new annotation-based CallTracer API."; +const char* const + additional_constraints_call_tracer_send_initial_metadata_is_an_annotation = + "{}"; +const char* const + description_call_tracer_send_trailing_metadata_is_an_annotation = + "Use the new annotation-based CallTracer API."; +const char* const + additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation = + "{}"; const char* const description_chaotic_good_connect_deadline = "Use the deadline from the connect args in chaotic good connector"; const char* const additional_constraints_chaotic_good_connect_deadline = "{}"; const char* const description_chaotic_good_framing_layer = "Enable the chaotic good framing layer."; const char* const additional_constraints_chaotic_good_framing_layer = "{}"; -const char* const description_chttp2_bound_write_size = - "Fix a bug where chttp2 can generate very large writes"; -const char* const additional_constraints_chttp2_bound_write_size = "{}"; +const char* const description_chaotic_good_send_supported_features = + "Send supported features in chaotic good settings frames."; +const char* const additional_constraints_chaotic_good_send_supported_features = + "{}"; const char* const description_error_flatten = "Flatten errors to ordinary absl::Status form."; const char* const additional_constraints_error_flatten = "{}"; @@ -456,9 +502,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = { const char* const description_event_engine_poller_for_python = "Enable event engine poller in gRPC Python"; const char* const additional_constraints_event_engine_poller_for_python = "{}"; -const char* const description_event_engine_secure_endpoint = - "Use EventEngine secure endpoint wrapper instead of iomgr when available"; -const char* const additional_constraints_event_engine_secure_endpoint = "{}"; const char* const description_fail_recv_metadata_on_deadline_exceeded = "Fail recv initial metadata when the deadline is exceeded."; const char* const @@ -469,10 +512,6 @@ const char* const additional_constraints_free_large_allocator = "{}"; const char* const description_fuse_filters = "If set, individual filters are merged into fused filters"; const char* const additional_constraints_fuse_filters = "{}"; -const char* const description_graceful_external_connection_failure = - "If set, handles external connection failures gracefully"; -const char* const additional_constraints_graceful_external_connection_failure = - "{}"; const char* const description_keep_alive_ping_timer_batch = "Avoid explicitly cancelling the keepalive timer. Instead adjust the " "callback to re-schedule itself to the next ping interval."; @@ -484,6 +523,9 @@ const char* const additional_constraints_local_connector_secure = "{}"; const char* const description_max_inflight_pings_strict_limit = "If set, the max inflight pings limit is strictly enforced."; const char* const additional_constraints_max_inflight_pings_strict_limit = "{}"; +const char* const description_metadata_publish_to_app_tag = + "Publish metadata to the app using the kPublishToApp metadata field."; +const char* const additional_constraints_metadata_publish_to_app_tag = "{}"; const char* const description_monitoring_experiment = "Placeholder experiment to prove/disprove our monitoring is working"; const char* const additional_constraints_monitoring_experiment = "{}"; @@ -505,8 +547,7 @@ const char* const description_pipelined_read_secure_endpoint = const char* const additional_constraints_pipelined_read_secure_endpoint = "{}"; const uint8_t required_experiments_pipelined_read_secure_endpoint[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_pollset_alternative = "Code outside iomgr that relies directly on pollsets will use non-pollset " "alternatives when enabled."; @@ -533,8 +574,16 @@ const char* const additional_constraints_promise_based_http2_server_transport = const char* const description_promise_based_inproc_transport = "Use promises for the in-process transport."; const char* const additional_constraints_promise_based_inproc_transport = "{}"; +const char* const description_promise_filter_send_cancel_metadata = + "Enables sending all trailing metadata fields from server side " + "promise-based filters upon stream cancellation."; +const char* const additional_constraints_promise_filter_send_cancel_metadata = + "{}"; const char* const description_retry_in_callv3 = "Support retries with call-v3"; const char* const additional_constraints_retry_in_callv3 = "{}"; +const char* const description_return_preexisting_errors = + "Return errors that exist before the start of the call in RunHandler."; +const char* const additional_constraints_return_preexisting_errors = "{}"; const char* const description_rr_wrr_connect_from_random_index = "RR and WRR LB policies start connecting from a random index in the " "address list."; @@ -550,16 +599,20 @@ const char* const additional_constraints_secure_endpoint_offload_large_reads = "{}"; const uint8_t required_experiments_secure_endpoint_offload_large_reads[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_secure_endpoint_offload_large_writes = "If a large read write to be encrypted, use a separate thread."; const char* const additional_constraints_secure_endpoint_offload_large_writes = "{}"; const uint8_t required_experiments_secure_endpoint_offload_large_writes[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; +const char* const description_secure_endpoint_read_coalescing = + "Coalesce decrypted bytes in SecureEndpoint if a read_hint is provided."; +const char* const additional_constraints_secure_endpoint_read_coalescing = "{}"; +const uint8_t required_experiments_secure_endpoint_read_coalescing[] = { + static_cast(grpc_core::kExperimentIdEventEngineClient), + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_skip_clear_peer_on_cancellation = "If set, skips clearing of peer string on call cancellation."; const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}"; @@ -569,6 +622,9 @@ const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}"; const char* const description_sleep_use_non_owning_waker = "If set, the sleep promise uses a non-owning waker."; const char* const additional_constraints_sleep_use_non_owning_waker = "{}"; +const char* const description_subchannel_connection_scaling = + "Subchannel connection scaling support."; +const char* const additional_constraints_subchannel_connection_scaling = "{}"; const char* const description_subchannel_wrapper_cleanup_on_orphan = "Fixes the subchannel wrapper to drop any non-cancelled watchers when it " "gets orphaned."; @@ -583,18 +639,6 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}"; const char* const description_tcp_rcv_lowat = "Use SO_RCVLOWAT to avoid wakeups on the read path."; const char* const additional_constraints_tcp_rcv_lowat = "{}"; -const char* const description_track_writes_in_resource_quota = - "Track the Write memory in Resource Quota."; -const char* const additional_constraints_track_writes_in_resource_quota = "{}"; -const char* const description_track_zero_copy_allocations_in_resource_quota = - "Track the memory allocattions under the zero copy path in Resource Quota. " - "This includes the encryption / decryption for privacy-and-integrity " - "payloads."; -const char* const - additional_constraints_track_zero_copy_allocations_in_resource_quota = "{}"; -const char* const description_transport_state_watcher = - "New state watcher API between transport and subchannel."; -const char* const additional_constraints_transport_state_watcher = "{}"; const char* const description_tsi_frame_protector_without_locks = "Do not hold locks while using the tsi_frame_protector."; const char* const additional_constraints_tsi_frame_protector_without_locks = @@ -603,28 +647,45 @@ const char* const description_unconstrained_max_quota_buffer_size = "Discard the cap on the max free pool size for one memory allocator"; const char* const additional_constraints_unconstrained_max_quota_buffer_size = "{}"; +const char* const description_use_call_event_engine_in_completion_queue = + "Use the call event engine to run callbacks in completion queue."; +const char* const + additional_constraints_use_call_event_engine_in_completion_queue = "{}"; +const char* const description_wildcard_ip_expansion_restriction = + "If set, adds optional restriction on when to expand wildcard IPs."; +const char* const additional_constraints_wildcard_ip_expansion_restriction = + "{}"; +const char* const description_xds_channel_filter_chain_per_route = + "xDS channels use a separate filter chain for each route."; +const char* const additional_constraints_xds_channel_filter_chain_per_route = + "{}"; } // namespace namespace grpc_core { const ExperimentMetadata g_experiment_metadata[] = { + {"buffer_list_deletion_prep", description_buffer_list_deletion_prep, + additional_constraints_buffer_list_deletion_prep, nullptr, 0, false, true}, {"call_tracer_in_transport", description_call_tracer_in_transport, additional_constraints_call_tracer_in_transport, nullptr, 0, true, false}, - {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api, - additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false, - true}, - {"channelz_use_v2_for_v1_service", - description_channelz_use_v2_for_v1_service, - additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false, - true}, + {"call_tracer_send_initial_metadata_is_an_annotation", + description_call_tracer_send_initial_metadata_is_an_annotation, + additional_constraints_call_tracer_send_initial_metadata_is_an_annotation, + nullptr, 0, true, true}, + {"call_tracer_send_trailing_metadata_is_an_annotation", + description_call_tracer_send_trailing_metadata_is_an_annotation, + additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation, + nullptr, 0, false, true}, {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline, additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true, true}, {"chaotic_good_framing_layer", description_chaotic_good_framing_layer, additional_constraints_chaotic_good_framing_layer, nullptr, 0, true, false}, - {"chttp2_bound_write_size", description_chttp2_bound_write_size, - additional_constraints_chttp2_bound_write_size, nullptr, 0, false, true}, + {"chaotic_good_send_supported_features", + description_chaotic_good_send_supported_features, + additional_constraints_chaotic_good_send_supported_features, nullptr, 0, + false, true}, {"error_flatten", description_error_flatten, additional_constraints_error_flatten, nullptr, 0, false, false}, {"event_engine_client", description_event_engine_client, @@ -636,7 +697,7 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_event_engine_dns_non_client_channel, nullptr, 0, true, false}, {"event_engine_fork", description_event_engine_fork, - additional_constraints_event_engine_fork, nullptr, 0, false, false}, + additional_constraints_event_engine_fork, nullptr, 0, true, false}, {"event_engine_listener", description_event_engine_listener, additional_constraints_event_engine_listener, nullptr, 0, true, false}, {"event_engine_callback_cq", description_event_engine_callback_cq, @@ -648,11 +709,8 @@ const ExperimentMetadata g_experiment_metadata[] = { required_experiments_event_engine_for_all_other_endpoints, 4, true, false}, {"event_engine_poller_for_python", description_event_engine_poller_for_python, - additional_constraints_event_engine_poller_for_python, nullptr, 0, false, + additional_constraints_event_engine_poller_for_python, nullptr, 0, true, true}, - {"event_engine_secure_endpoint", description_event_engine_secure_endpoint, - additional_constraints_event_engine_secure_endpoint, nullptr, 0, true, - false}, {"fail_recv_metadata_on_deadline_exceeded", description_fail_recv_metadata_on_deadline_exceeded, additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0, @@ -661,10 +719,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_free_large_allocator, nullptr, 0, false, true}, {"fuse_filters", description_fuse_filters, additional_constraints_fuse_filters, nullptr, 0, false, false}, - {"graceful_external_connection_failure", - description_graceful_external_connection_failure, - additional_constraints_graceful_external_connection_failure, nullptr, 0, - true, false}, {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch, additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false, true}, @@ -674,6 +728,9 @@ const ExperimentMetadata g_experiment_metadata[] = { description_max_inflight_pings_strict_limit, additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true, true}, + {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag, + additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true, + true}, {"monitoring_experiment", description_monitoring_experiment, additional_constraints_monitoring_experiment, nullptr, 0, true, true}, {"multiping", description_multiping, additional_constraints_multiping, @@ -687,12 +744,12 @@ const ExperimentMetadata g_experiment_metadata[] = { true}, {"pick_first_ready_to_connecting", description_pick_first_ready_to_connecting, - additional_constraints_pick_first_ready_to_connecting, nullptr, 0, false, + additional_constraints_pick_first_ready_to_connecting, nullptr, 0, true, true}, {"pipelined_read_secure_endpoint", description_pipelined_read_secure_endpoint, additional_constraints_pipelined_read_secure_endpoint, - required_experiments_pipelined_read_secure_endpoint, 3, false, false}, + required_experiments_pipelined_read_secure_endpoint, 2, false, false}, {"pollset_alternative", description_pollset_alternative, additional_constraints_pollset_alternative, required_experiments_pollset_alternative, 2, false, false}, @@ -711,11 +768,17 @@ const ExperimentMetadata g_experiment_metadata[] = { description_promise_based_inproc_transport, additional_constraints_promise_based_inproc_transport, nullptr, 0, false, false}, + {"promise_filter_send_cancel_metadata", + description_promise_filter_send_cancel_metadata, + additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0, + false, true}, {"retry_in_callv3", description_retry_in_callv3, additional_constraints_retry_in_callv3, nullptr, 0, false, true}, + {"return_preexisting_errors", description_return_preexisting_errors, + additional_constraints_return_preexisting_errors, nullptr, 0, false, true}, {"rr_wrr_connect_from_random_index", description_rr_wrr_connect_from_random_index, - additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false, + additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, true, true}, {"schedule_cancellation_over_write", description_schedule_cancellation_over_write, @@ -724,11 +787,15 @@ const ExperimentMetadata g_experiment_metadata[] = { {"secure_endpoint_offload_large_reads", description_secure_endpoint_offload_large_reads, additional_constraints_secure_endpoint_offload_large_reads, - required_experiments_secure_endpoint_offload_large_reads, 3, false, true}, + required_experiments_secure_endpoint_offload_large_reads, 2, false, true}, {"secure_endpoint_offload_large_writes", description_secure_endpoint_offload_large_writes, additional_constraints_secure_endpoint_offload_large_writes, - required_experiments_secure_endpoint_offload_large_writes, 3, false, true}, + required_experiments_secure_endpoint_offload_large_writes, 2, false, true}, + {"secure_endpoint_read_coalescing", + description_secure_endpoint_read_coalescing, + additional_constraints_secure_endpoint_read_coalescing, + required_experiments_secure_endpoint_read_coalescing, 2, false, true}, {"skip_clear_peer_on_cancellation", description_skip_clear_peer_on_cancellation, additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false, @@ -739,6 +806,9 @@ const ExperimentMetadata g_experiment_metadata[] = { true}, {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker, additional_constraints_sleep_use_non_owning_waker, nullptr, 0, true, true}, + {"subchannel_connection_scaling", description_subchannel_connection_scaling, + additional_constraints_subchannel_connection_scaling, nullptr, 0, false, + true}, {"subchannel_wrapper_cleanup_on_orphan", description_subchannel_wrapper_cleanup_on_orphan, additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0, @@ -747,16 +817,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true}, {"tcp_rcv_lowat", description_tcp_rcv_lowat, additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true}, - {"track_writes_in_resource_quota", - description_track_writes_in_resource_quota, - additional_constraints_track_writes_in_resource_quota, nullptr, 0, false, - true}, - {"track_zero_copy_allocations_in_resource_quota", - description_track_zero_copy_allocations_in_resource_quota, - additional_constraints_track_zero_copy_allocations_in_resource_quota, - nullptr, 0, false, true}, - {"transport_state_watcher", description_transport_state_watcher, - additional_constraints_transport_state_watcher, nullptr, 0, false, true}, {"tsi_frame_protector_without_locks", description_tsi_frame_protector_without_locks, additional_constraints_tsi_frame_protector_without_locks, nullptr, 0, @@ -765,30 +825,52 @@ const ExperimentMetadata g_experiment_metadata[] = { description_unconstrained_max_quota_buffer_size, additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0, false, true}, + {"use_call_event_engine_in_completion_queue", + description_use_call_event_engine_in_completion_queue, + additional_constraints_use_call_event_engine_in_completion_queue, nullptr, + 0, false, true}, + {"wildcard_ip_expansion_restriction", + description_wildcard_ip_expansion_restriction, + additional_constraints_wildcard_ip_expansion_restriction, nullptr, 0, + false, true}, + {"xds_channel_filter_chain_per_route", + description_xds_channel_filter_chain_per_route, + additional_constraints_xds_channel_filter_chain_per_route, nullptr, 0, + true, true}, }; } // namespace grpc_core #else namespace { +const char* const description_buffer_list_deletion_prep = + "Gate the removal of old TCP timestamp collection mechanism."; +const char* const additional_constraints_buffer_list_deletion_prep = "{}"; const char* const description_call_tracer_in_transport = "Transport directly passes byte counts to CallTracer."; const char* const additional_constraints_call_tracer_in_transport = "{}"; -const char* const description_channelz_use_v2_for_v1_api = - "Use the v2 channelz API for the v1 channelz API."; -const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}"; -const char* const description_channelz_use_v2_for_v1_service = - "Use the v2 channelz service for the v1 channelz service."; -const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}"; +const char* const + description_call_tracer_send_initial_metadata_is_an_annotation = + "Use the new annotation-based CallTracer API."; +const char* const + additional_constraints_call_tracer_send_initial_metadata_is_an_annotation = + "{}"; +const char* const + description_call_tracer_send_trailing_metadata_is_an_annotation = + "Use the new annotation-based CallTracer API."; +const char* const + additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation = + "{}"; const char* const description_chaotic_good_connect_deadline = "Use the deadline from the connect args in chaotic good connector"; const char* const additional_constraints_chaotic_good_connect_deadline = "{}"; const char* const description_chaotic_good_framing_layer = "Enable the chaotic good framing layer."; const char* const additional_constraints_chaotic_good_framing_layer = "{}"; -const char* const description_chttp2_bound_write_size = - "Fix a bug where chttp2 can generate very large writes"; -const char* const additional_constraints_chttp2_bound_write_size = "{}"; +const char* const description_chaotic_good_send_supported_features = + "Send supported features in chaotic good settings frames."; +const char* const additional_constraints_chaotic_good_send_supported_features = + "{}"; const char* const description_error_flatten = "Flatten errors to ordinary absl::Status form."; const char* const additional_constraints_error_flatten = "{}"; @@ -830,9 +912,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = { const char* const description_event_engine_poller_for_python = "Enable event engine poller in gRPC Python"; const char* const additional_constraints_event_engine_poller_for_python = "{}"; -const char* const description_event_engine_secure_endpoint = - "Use EventEngine secure endpoint wrapper instead of iomgr when available"; -const char* const additional_constraints_event_engine_secure_endpoint = "{}"; const char* const description_fail_recv_metadata_on_deadline_exceeded = "Fail recv initial metadata when the deadline is exceeded."; const char* const @@ -843,10 +922,6 @@ const char* const additional_constraints_free_large_allocator = "{}"; const char* const description_fuse_filters = "If set, individual filters are merged into fused filters"; const char* const additional_constraints_fuse_filters = "{}"; -const char* const description_graceful_external_connection_failure = - "If set, handles external connection failures gracefully"; -const char* const additional_constraints_graceful_external_connection_failure = - "{}"; const char* const description_keep_alive_ping_timer_batch = "Avoid explicitly cancelling the keepalive timer. Instead adjust the " "callback to re-schedule itself to the next ping interval."; @@ -858,6 +933,9 @@ const char* const additional_constraints_local_connector_secure = "{}"; const char* const description_max_inflight_pings_strict_limit = "If set, the max inflight pings limit is strictly enforced."; const char* const additional_constraints_max_inflight_pings_strict_limit = "{}"; +const char* const description_metadata_publish_to_app_tag = + "Publish metadata to the app using the kPublishToApp metadata field."; +const char* const additional_constraints_metadata_publish_to_app_tag = "{}"; const char* const description_monitoring_experiment = "Placeholder experiment to prove/disprove our monitoring is working"; const char* const additional_constraints_monitoring_experiment = "{}"; @@ -879,8 +957,7 @@ const char* const description_pipelined_read_secure_endpoint = const char* const additional_constraints_pipelined_read_secure_endpoint = "{}"; const uint8_t required_experiments_pipelined_read_secure_endpoint[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_pollset_alternative = "Code outside iomgr that relies directly on pollsets will use non-pollset " "alternatives when enabled."; @@ -907,8 +984,16 @@ const char* const additional_constraints_promise_based_http2_server_transport = const char* const description_promise_based_inproc_transport = "Use promises for the in-process transport."; const char* const additional_constraints_promise_based_inproc_transport = "{}"; +const char* const description_promise_filter_send_cancel_metadata = + "Enables sending all trailing metadata fields from server side " + "promise-based filters upon stream cancellation."; +const char* const additional_constraints_promise_filter_send_cancel_metadata = + "{}"; const char* const description_retry_in_callv3 = "Support retries with call-v3"; const char* const additional_constraints_retry_in_callv3 = "{}"; +const char* const description_return_preexisting_errors = + "Return errors that exist before the start of the call in RunHandler."; +const char* const additional_constraints_return_preexisting_errors = "{}"; const char* const description_rr_wrr_connect_from_random_index = "RR and WRR LB policies start connecting from a random index in the " "address list."; @@ -924,16 +1009,20 @@ const char* const additional_constraints_secure_endpoint_offload_large_reads = "{}"; const uint8_t required_experiments_secure_endpoint_offload_large_reads[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_secure_endpoint_offload_large_writes = "If a large read write to be encrypted, use a separate thread."; const char* const additional_constraints_secure_endpoint_offload_large_writes = "{}"; const uint8_t required_experiments_secure_endpoint_offload_large_writes[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), - static_cast(grpc_core::kExperimentIdEventEngineListener), - static_cast(grpc_core::kExperimentIdEventEngineSecureEndpoint)}; + static_cast(grpc_core::kExperimentIdEventEngineListener)}; +const char* const description_secure_endpoint_read_coalescing = + "Coalesce decrypted bytes in SecureEndpoint if a read_hint is provided."; +const char* const additional_constraints_secure_endpoint_read_coalescing = "{}"; +const uint8_t required_experiments_secure_endpoint_read_coalescing[] = { + static_cast(grpc_core::kExperimentIdEventEngineClient), + static_cast(grpc_core::kExperimentIdEventEngineListener)}; const char* const description_skip_clear_peer_on_cancellation = "If set, skips clearing of peer string on call cancellation."; const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}"; @@ -943,6 +1032,9 @@ const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}"; const char* const description_sleep_use_non_owning_waker = "If set, the sleep promise uses a non-owning waker."; const char* const additional_constraints_sleep_use_non_owning_waker = "{}"; +const char* const description_subchannel_connection_scaling = + "Subchannel connection scaling support."; +const char* const additional_constraints_subchannel_connection_scaling = "{}"; const char* const description_subchannel_wrapper_cleanup_on_orphan = "Fixes the subchannel wrapper to drop any non-cancelled watchers when it " "gets orphaned."; @@ -957,18 +1049,6 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}"; const char* const description_tcp_rcv_lowat = "Use SO_RCVLOWAT to avoid wakeups on the read path."; const char* const additional_constraints_tcp_rcv_lowat = "{}"; -const char* const description_track_writes_in_resource_quota = - "Track the Write memory in Resource Quota."; -const char* const additional_constraints_track_writes_in_resource_quota = "{}"; -const char* const description_track_zero_copy_allocations_in_resource_quota = - "Track the memory allocattions under the zero copy path in Resource Quota. " - "This includes the encryption / decryption for privacy-and-integrity " - "payloads."; -const char* const - additional_constraints_track_zero_copy_allocations_in_resource_quota = "{}"; -const char* const description_transport_state_watcher = - "New state watcher API between transport and subchannel."; -const char* const additional_constraints_transport_state_watcher = "{}"; const char* const description_tsi_frame_protector_without_locks = "Do not hold locks while using the tsi_frame_protector."; const char* const additional_constraints_tsi_frame_protector_without_locks = @@ -977,28 +1057,45 @@ const char* const description_unconstrained_max_quota_buffer_size = "Discard the cap on the max free pool size for one memory allocator"; const char* const additional_constraints_unconstrained_max_quota_buffer_size = "{}"; +const char* const description_use_call_event_engine_in_completion_queue = + "Use the call event engine to run callbacks in completion queue."; +const char* const + additional_constraints_use_call_event_engine_in_completion_queue = "{}"; +const char* const description_wildcard_ip_expansion_restriction = + "If set, adds optional restriction on when to expand wildcard IPs."; +const char* const additional_constraints_wildcard_ip_expansion_restriction = + "{}"; +const char* const description_xds_channel_filter_chain_per_route = + "xDS channels use a separate filter chain for each route."; +const char* const additional_constraints_xds_channel_filter_chain_per_route = + "{}"; } // namespace namespace grpc_core { const ExperimentMetadata g_experiment_metadata[] = { + {"buffer_list_deletion_prep", description_buffer_list_deletion_prep, + additional_constraints_buffer_list_deletion_prep, nullptr, 0, false, true}, {"call_tracer_in_transport", description_call_tracer_in_transport, additional_constraints_call_tracer_in_transport, nullptr, 0, true, false}, - {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api, - additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false, - true}, - {"channelz_use_v2_for_v1_service", - description_channelz_use_v2_for_v1_service, - additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false, - true}, + {"call_tracer_send_initial_metadata_is_an_annotation", + description_call_tracer_send_initial_metadata_is_an_annotation, + additional_constraints_call_tracer_send_initial_metadata_is_an_annotation, + nullptr, 0, true, true}, + {"call_tracer_send_trailing_metadata_is_an_annotation", + description_call_tracer_send_trailing_metadata_is_an_annotation, + additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation, + nullptr, 0, false, true}, {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline, additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true, true}, {"chaotic_good_framing_layer", description_chaotic_good_framing_layer, additional_constraints_chaotic_good_framing_layer, nullptr, 0, true, false}, - {"chttp2_bound_write_size", description_chttp2_bound_write_size, - additional_constraints_chttp2_bound_write_size, nullptr, 0, false, true}, + {"chaotic_good_send_supported_features", + description_chaotic_good_send_supported_features, + additional_constraints_chaotic_good_send_supported_features, nullptr, 0, + false, true}, {"error_flatten", description_error_flatten, additional_constraints_error_flatten, nullptr, 0, false, false}, {"event_engine_client", description_event_engine_client, @@ -1010,7 +1107,7 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_event_engine_dns_non_client_channel, nullptr, 0, true, false}, {"event_engine_fork", description_event_engine_fork, - additional_constraints_event_engine_fork, nullptr, 0, false, false}, + additional_constraints_event_engine_fork, nullptr, 0, true, false}, {"event_engine_listener", description_event_engine_listener, additional_constraints_event_engine_listener, nullptr, 0, true, false}, {"event_engine_callback_cq", description_event_engine_callback_cq, @@ -1022,11 +1119,8 @@ const ExperimentMetadata g_experiment_metadata[] = { required_experiments_event_engine_for_all_other_endpoints, 4, true, false}, {"event_engine_poller_for_python", description_event_engine_poller_for_python, - additional_constraints_event_engine_poller_for_python, nullptr, 0, false, + additional_constraints_event_engine_poller_for_python, nullptr, 0, true, true}, - {"event_engine_secure_endpoint", description_event_engine_secure_endpoint, - additional_constraints_event_engine_secure_endpoint, nullptr, 0, true, - false}, {"fail_recv_metadata_on_deadline_exceeded", description_fail_recv_metadata_on_deadline_exceeded, additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0, @@ -1035,10 +1129,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_free_large_allocator, nullptr, 0, false, true}, {"fuse_filters", description_fuse_filters, additional_constraints_fuse_filters, nullptr, 0, false, false}, - {"graceful_external_connection_failure", - description_graceful_external_connection_failure, - additional_constraints_graceful_external_connection_failure, nullptr, 0, - true, false}, {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch, additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false, true}, @@ -1048,6 +1138,9 @@ const ExperimentMetadata g_experiment_metadata[] = { description_max_inflight_pings_strict_limit, additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true, true}, + {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag, + additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true, + true}, {"monitoring_experiment", description_monitoring_experiment, additional_constraints_monitoring_experiment, nullptr, 0, true, true}, {"multiping", description_multiping, additional_constraints_multiping, @@ -1061,12 +1154,12 @@ const ExperimentMetadata g_experiment_metadata[] = { true}, {"pick_first_ready_to_connecting", description_pick_first_ready_to_connecting, - additional_constraints_pick_first_ready_to_connecting, nullptr, 0, false, + additional_constraints_pick_first_ready_to_connecting, nullptr, 0, true, true}, {"pipelined_read_secure_endpoint", description_pipelined_read_secure_endpoint, additional_constraints_pipelined_read_secure_endpoint, - required_experiments_pipelined_read_secure_endpoint, 3, false, false}, + required_experiments_pipelined_read_secure_endpoint, 2, false, false}, {"pollset_alternative", description_pollset_alternative, additional_constraints_pollset_alternative, required_experiments_pollset_alternative, 2, false, false}, @@ -1085,11 +1178,17 @@ const ExperimentMetadata g_experiment_metadata[] = { description_promise_based_inproc_transport, additional_constraints_promise_based_inproc_transport, nullptr, 0, false, false}, + {"promise_filter_send_cancel_metadata", + description_promise_filter_send_cancel_metadata, + additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0, + false, true}, {"retry_in_callv3", description_retry_in_callv3, additional_constraints_retry_in_callv3, nullptr, 0, false, true}, + {"return_preexisting_errors", description_return_preexisting_errors, + additional_constraints_return_preexisting_errors, nullptr, 0, false, true}, {"rr_wrr_connect_from_random_index", description_rr_wrr_connect_from_random_index, - additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false, + additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, true, true}, {"schedule_cancellation_over_write", description_schedule_cancellation_over_write, @@ -1098,11 +1197,15 @@ const ExperimentMetadata g_experiment_metadata[] = { {"secure_endpoint_offload_large_reads", description_secure_endpoint_offload_large_reads, additional_constraints_secure_endpoint_offload_large_reads, - required_experiments_secure_endpoint_offload_large_reads, 3, false, true}, + required_experiments_secure_endpoint_offload_large_reads, 2, false, true}, {"secure_endpoint_offload_large_writes", description_secure_endpoint_offload_large_writes, additional_constraints_secure_endpoint_offload_large_writes, - required_experiments_secure_endpoint_offload_large_writes, 3, false, true}, + required_experiments_secure_endpoint_offload_large_writes, 2, false, true}, + {"secure_endpoint_read_coalescing", + description_secure_endpoint_read_coalescing, + additional_constraints_secure_endpoint_read_coalescing, + required_experiments_secure_endpoint_read_coalescing, 2, false, true}, {"skip_clear_peer_on_cancellation", description_skip_clear_peer_on_cancellation, additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false, @@ -1113,6 +1216,9 @@ const ExperimentMetadata g_experiment_metadata[] = { true}, {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker, additional_constraints_sleep_use_non_owning_waker, nullptr, 0, true, true}, + {"subchannel_connection_scaling", description_subchannel_connection_scaling, + additional_constraints_subchannel_connection_scaling, nullptr, 0, false, + true}, {"subchannel_wrapper_cleanup_on_orphan", description_subchannel_wrapper_cleanup_on_orphan, additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0, @@ -1121,16 +1227,6 @@ const ExperimentMetadata g_experiment_metadata[] = { additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true}, {"tcp_rcv_lowat", description_tcp_rcv_lowat, additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true}, - {"track_writes_in_resource_quota", - description_track_writes_in_resource_quota, - additional_constraints_track_writes_in_resource_quota, nullptr, 0, false, - true}, - {"track_zero_copy_allocations_in_resource_quota", - description_track_zero_copy_allocations_in_resource_quota, - additional_constraints_track_zero_copy_allocations_in_resource_quota, - nullptr, 0, false, true}, - {"transport_state_watcher", description_transport_state_watcher, - additional_constraints_transport_state_watcher, nullptr, 0, false, true}, {"tsi_frame_protector_without_locks", description_tsi_frame_protector_without_locks, additional_constraints_tsi_frame_protector_without_locks, nullptr, 0, @@ -1139,6 +1235,18 @@ const ExperimentMetadata g_experiment_metadata[] = { description_unconstrained_max_quota_buffer_size, additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0, false, true}, + {"use_call_event_engine_in_completion_queue", + description_use_call_event_engine_in_completion_queue, + additional_constraints_use_call_event_engine_in_completion_queue, nullptr, + 0, false, true}, + {"wildcard_ip_expansion_restriction", + description_wildcard_ip_expansion_restriction, + additional_constraints_wildcard_ip_expansion_restriction, nullptr, 0, + false, true}, + {"xds_channel_filter_chain_per_route", + description_xds_channel_filter_chain_per_route, + additional_constraints_xds_channel_filter_chain_per_route, nullptr, 0, + true, true}, }; } // namespace grpc_core diff --git a/deps/grpc/src/core/lib/experiments/experiments.h b/deps/grpc/src/core/lib/experiments/experiments.h index c78344f8b0f..8232bc366ae 100644 --- a/deps/grpc/src/core/lib/experiments/experiments.h +++ b/deps/grpc/src/core/lib/experiments/experiments.h @@ -57,15 +57,21 @@ namespace grpc_core { #ifdef GRPC_EXPERIMENTS_ARE_FINAL #if defined(GRPC_CFSTREAM) +inline bool IsBufferListDeletionPrepEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT inline bool IsCallTracerInTransportEnabled() { return true; } -inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; } -inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION +inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() { + return true; +} +inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() { + return false; +} #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER inline bool IsChaoticGoodFramingLayerEnabled() { return true; } -inline bool IsChttp2BoundWriteSizeEnabled() { return false; } +inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return false; } inline bool IsErrorFlattenEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT inline bool IsEventEngineClientEnabled() { return true; } @@ -73,65 +79,78 @@ inline bool IsEventEngineClientEnabled() { return true; } inline bool IsEventEngineDnsEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; } -inline bool IsEventEngineForkEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK +inline bool IsEventEngineForkEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER inline bool IsEventEngineListenerEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CALLBACK_CQ inline bool IsEventEngineCallbackCqEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; } -inline bool IsEventEnginePollerForPythonEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT -inline bool IsEventEngineSecureEndpointEnabled() { return true; } +#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_POLLER_FOR_PYTHON +inline bool IsEventEnginePollerForPythonEnabled() { return true; } inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; } inline bool IsFreeLargeAllocatorEnabled() { return false; } inline bool IsFuseFiltersEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE -inline bool IsGracefulExternalConnectionFailureEnabled() { return true; } inline bool IsKeepAlivePingTimerBatchEnabled() { return false; } inline bool IsLocalConnectorSecureEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; } +#define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG +inline bool IsMetadataPublishToAppTagEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT inline bool IsMonitoringExperimentEnabled() { return true; } inline bool IsMultipingEnabled() { return false; } inline bool IsOtelExportTelemetryDomainsEnabled() { return false; } inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; } -inline bool IsPickFirstReadyToConnectingEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_READY_TO_CONNECTING +inline bool IsPickFirstReadyToConnectingEnabled() { return true; } inline bool IsPipelinedReadSecureEndpointEnabled() { return false; } inline bool IsPollsetAlternativeEnabled() { return false; } inline bool IsPrioritizeFinishedRequestsEnabled() { return false; } inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; } inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; } inline bool IsPromiseBasedInprocTransportEnabled() { return false; } +inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; } inline bool IsRetryInCallv3Enabled() { return false; } -inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; } +inline bool IsReturnPreexistingErrorsEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX +inline bool IsRrWrrConnectFromRandomIndexEnabled() { return true; } inline bool IsScheduleCancellationOverWriteEnabled() { return false; } inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; } inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; } +inline bool IsSecureEndpointReadCoalescingEnabled() { return false; } inline bool IsSkipClearPeerOnCancellationEnabled() { return false; } inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_USE_NON_OWNING_WAKER inline bool IsSleepUseNonOwningWakerEnabled() { return true; } +inline bool IsSubchannelConnectionScalingEnabled() { return false; } inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; } inline bool IsTcpFrameSizeTuningEnabled() { return false; } inline bool IsTcpRcvLowatEnabled() { return false; } -inline bool IsTrackWritesInResourceQuotaEnabled() { return false; } -inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() { return false; } -inline bool IsTransportStateWatcherEnabled() { return false; } inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; } inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; } +inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; } +inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE +inline bool IsXdsChannelFilterChainPerRouteEnabled() { return true; } #elif defined(GPR_WINDOWS) +inline bool IsBufferListDeletionPrepEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT inline bool IsCallTracerInTransportEnabled() { return true; } -inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; } -inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION +inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() { + return true; +} +inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() { + return false; +} #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER inline bool IsChaoticGoodFramingLayerEnabled() { return true; } -inline bool IsChttp2BoundWriteSizeEnabled() { return false; } +inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return false; } inline bool IsErrorFlattenEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT inline bool IsEventEngineClientEnabled() { return true; } @@ -139,65 +158,78 @@ inline bool IsEventEngineClientEnabled() { return true; } inline bool IsEventEngineDnsEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; } -inline bool IsEventEngineForkEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK +inline bool IsEventEngineForkEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER inline bool IsEventEngineListenerEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CALLBACK_CQ inline bool IsEventEngineCallbackCqEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; } -inline bool IsEventEnginePollerForPythonEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT -inline bool IsEventEngineSecureEndpointEnabled() { return true; } +#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_POLLER_FOR_PYTHON +inline bool IsEventEnginePollerForPythonEnabled() { return true; } inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; } inline bool IsFreeLargeAllocatorEnabled() { return false; } inline bool IsFuseFiltersEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE -inline bool IsGracefulExternalConnectionFailureEnabled() { return true; } inline bool IsKeepAlivePingTimerBatchEnabled() { return false; } inline bool IsLocalConnectorSecureEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; } +#define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG +inline bool IsMetadataPublishToAppTagEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT inline bool IsMonitoringExperimentEnabled() { return true; } inline bool IsMultipingEnabled() { return false; } inline bool IsOtelExportTelemetryDomainsEnabled() { return false; } inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; } -inline bool IsPickFirstReadyToConnectingEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_READY_TO_CONNECTING +inline bool IsPickFirstReadyToConnectingEnabled() { return true; } inline bool IsPipelinedReadSecureEndpointEnabled() { return false; } inline bool IsPollsetAlternativeEnabled() { return false; } inline bool IsPrioritizeFinishedRequestsEnabled() { return false; } inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; } inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; } inline bool IsPromiseBasedInprocTransportEnabled() { return false; } +inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; } inline bool IsRetryInCallv3Enabled() { return false; } -inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; } +inline bool IsReturnPreexistingErrorsEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX +inline bool IsRrWrrConnectFromRandomIndexEnabled() { return true; } inline bool IsScheduleCancellationOverWriteEnabled() { return false; } inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; } inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; } +inline bool IsSecureEndpointReadCoalescingEnabled() { return false; } inline bool IsSkipClearPeerOnCancellationEnabled() { return false; } inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_USE_NON_OWNING_WAKER inline bool IsSleepUseNonOwningWakerEnabled() { return true; } +inline bool IsSubchannelConnectionScalingEnabled() { return false; } inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; } inline bool IsTcpFrameSizeTuningEnabled() { return false; } inline bool IsTcpRcvLowatEnabled() { return false; } -inline bool IsTrackWritesInResourceQuotaEnabled() { return false; } -inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() { return false; } -inline bool IsTransportStateWatcherEnabled() { return false; } inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; } inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; } +inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; } +inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE +inline bool IsXdsChannelFilterChainPerRouteEnabled() { return true; } #else +inline bool IsBufferListDeletionPrepEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT inline bool IsCallTracerInTransportEnabled() { return true; } -inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; } -inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION +inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() { + return true; +} +inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() { + return false; +} #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER inline bool IsChaoticGoodFramingLayerEnabled() { return true; } -inline bool IsChttp2BoundWriteSizeEnabled() { return false; } +inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return false; } inline bool IsErrorFlattenEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT inline bool IsEventEngineClientEnabled() { return true; } @@ -205,64 +237,72 @@ inline bool IsEventEngineClientEnabled() { return true; } inline bool IsEventEngineDnsEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; } -inline bool IsEventEngineForkEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK +inline bool IsEventEngineForkEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER inline bool IsEventEngineListenerEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CALLBACK_CQ inline bool IsEventEngineCallbackCqEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; } -inline bool IsEventEnginePollerForPythonEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT -inline bool IsEventEngineSecureEndpointEnabled() { return true; } +#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_POLLER_FOR_PYTHON +inline bool IsEventEnginePollerForPythonEnabled() { return true; } inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; } inline bool IsFreeLargeAllocatorEnabled() { return false; } inline bool IsFuseFiltersEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE -inline bool IsGracefulExternalConnectionFailureEnabled() { return true; } inline bool IsKeepAlivePingTimerBatchEnabled() { return false; } inline bool IsLocalConnectorSecureEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; } +#define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG +inline bool IsMetadataPublishToAppTagEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT inline bool IsMonitoringExperimentEnabled() { return true; } inline bool IsMultipingEnabled() { return false; } inline bool IsOtelExportTelemetryDomainsEnabled() { return false; } inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; } -inline bool IsPickFirstReadyToConnectingEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_READY_TO_CONNECTING +inline bool IsPickFirstReadyToConnectingEnabled() { return true; } inline bool IsPipelinedReadSecureEndpointEnabled() { return false; } inline bool IsPollsetAlternativeEnabled() { return false; } inline bool IsPrioritizeFinishedRequestsEnabled() { return false; } inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; } inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; } inline bool IsPromiseBasedInprocTransportEnabled() { return false; } +inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; } inline bool IsRetryInCallv3Enabled() { return false; } -inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; } +inline bool IsReturnPreexistingErrorsEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX +inline bool IsRrWrrConnectFromRandomIndexEnabled() { return true; } inline bool IsScheduleCancellationOverWriteEnabled() { return false; } inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; } inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; } +inline bool IsSecureEndpointReadCoalescingEnabled() { return false; } inline bool IsSkipClearPeerOnCancellationEnabled() { return false; } inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_USE_NON_OWNING_WAKER inline bool IsSleepUseNonOwningWakerEnabled() { return true; } +inline bool IsSubchannelConnectionScalingEnabled() { return false; } inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; } inline bool IsTcpFrameSizeTuningEnabled() { return false; } inline bool IsTcpRcvLowatEnabled() { return false; } -inline bool IsTrackWritesInResourceQuotaEnabled() { return false; } -inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() { return false; } -inline bool IsTransportStateWatcherEnabled() { return false; } inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; } inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; } +inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; } +inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE +inline bool IsXdsChannelFilterChainPerRouteEnabled() { return true; } #endif #else enum ExperimentIds { + kExperimentIdBufferListDeletionPrep, kExperimentIdCallTracerInTransport, - kExperimentIdChannelzUseV2ForV1Api, - kExperimentIdChannelzUseV2ForV1Service, + kExperimentIdCallTracerSendInitialMetadataIsAnAnnotation, + kExperimentIdCallTracerSendTrailingMetadataIsAnAnnotation, kExperimentIdChaoticGoodConnectDeadline, kExperimentIdChaoticGoodFramingLayer, - kExperimentIdChttp2BoundWriteSize, + kExperimentIdChaoticGoodSendSupportedFeatures, kExperimentIdErrorFlatten, kExperimentIdEventEngineClient, kExperimentIdEventEngineDns, @@ -272,14 +312,13 @@ enum ExperimentIds { kExperimentIdEventEngineCallbackCq, kExperimentIdEventEngineForAllOtherEndpoints, kExperimentIdEventEnginePollerForPython, - kExperimentIdEventEngineSecureEndpoint, kExperimentIdFailRecvMetadataOnDeadlineExceeded, kExperimentIdFreeLargeAllocator, kExperimentIdFuseFilters, - kExperimentIdGracefulExternalConnectionFailure, kExperimentIdKeepAlivePingTimerBatch, kExperimentIdLocalConnectorSecure, kExperimentIdMaxInflightPingsStrictLimit, + kExperimentIdMetadataPublishToAppTag, kExperimentIdMonitoringExperiment, kExperimentIdMultiping, kExperimentIdOtelExportTelemetryDomains, @@ -291,35 +330,45 @@ enum ExperimentIds { kExperimentIdPromiseBasedHttp2ClientTransport, kExperimentIdPromiseBasedHttp2ServerTransport, kExperimentIdPromiseBasedInprocTransport, + kExperimentIdPromiseFilterSendCancelMetadata, kExperimentIdRetryInCallv3, + kExperimentIdReturnPreexistingErrors, kExperimentIdRrWrrConnectFromRandomIndex, kExperimentIdScheduleCancellationOverWrite, kExperimentIdSecureEndpointOffloadLargeReads, kExperimentIdSecureEndpointOffloadLargeWrites, + kExperimentIdSecureEndpointReadCoalescing, kExperimentIdSkipClearPeerOnCancellation, kExperimentIdSleepPromiseExecCtxRemoval, kExperimentIdSleepUseNonOwningWaker, + kExperimentIdSubchannelConnectionScaling, kExperimentIdSubchannelWrapperCleanupOnOrphan, kExperimentIdTcpFrameSizeTuning, kExperimentIdTcpRcvLowat, - kExperimentIdTrackWritesInResourceQuota, - kExperimentIdTrackZeroCopyAllocationsInResourceQuota, - kExperimentIdTransportStateWatcher, kExperimentIdTsiFrameProtectorWithoutLocks, kExperimentIdUnconstrainedMaxQuotaBufferSize, + kExperimentIdUseCallEventEngineInCompletionQueue, + kExperimentIdWildcardIpExpansionRestriction, + kExperimentIdXdsChannelFilterChainPerRoute, kNumExperiments }; +#define GRPC_EXPERIMENT_IS_INCLUDED_BUFFER_LIST_DELETION_PREP +inline bool IsBufferListDeletionPrepEnabled() { + return IsExperimentEnabled(); +} #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT inline bool IsCallTracerInTransportEnabled() { return IsExperimentEnabled(); } -#define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_API -inline bool IsChannelzUseV2ForV1ApiEnabled() { - return IsExperimentEnabled(); +#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION +inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() { + return IsExperimentEnabled< + kExperimentIdCallTracerSendInitialMetadataIsAnAnnotation>(); } -#define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_SERVICE -inline bool IsChannelzUseV2ForV1ServiceEnabled() { - return IsExperimentEnabled(); +#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_TRAILING_METADATA_IS_AN_ANNOTATION +inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() { + return IsExperimentEnabled< + kExperimentIdCallTracerSendTrailingMetadataIsAnAnnotation>(); } #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE inline bool IsChaoticGoodConnectDeadlineEnabled() { @@ -329,9 +378,9 @@ inline bool IsChaoticGoodConnectDeadlineEnabled() { inline bool IsChaoticGoodFramingLayerEnabled() { return IsExperimentEnabled(); } -#define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_BOUND_WRITE_SIZE -inline bool IsChttp2BoundWriteSizeEnabled() { - return IsExperimentEnabled(); +#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_SEND_SUPPORTED_FEATURES +inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { + return IsExperimentEnabled(); } #define GRPC_EXPERIMENT_IS_INCLUDED_ERROR_FLATTEN inline bool IsErrorFlattenEnabled() { @@ -369,10 +418,6 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() { inline bool IsEventEnginePollerForPythonEnabled() { return IsExperimentEnabled(); } -#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT -inline bool IsEventEngineSecureEndpointEnabled() { - return IsExperimentEnabled(); -} #define GRPC_EXPERIMENT_IS_INCLUDED_FAIL_RECV_METADATA_ON_DEADLINE_EXCEEDED inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return IsExperimentEnabled(); @@ -385,10 +430,6 @@ inline bool IsFreeLargeAllocatorEnabled() { inline bool IsFuseFiltersEnabled() { return IsExperimentEnabled(); } -#define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE -inline bool IsGracefulExternalConnectionFailureEnabled() { - return IsExperimentEnabled(); -} #define GRPC_EXPERIMENT_IS_INCLUDED_KEEP_ALIVE_PING_TIMER_BATCH inline bool IsKeepAlivePingTimerBatchEnabled() { return IsExperimentEnabled(); @@ -401,6 +442,10 @@ inline bool IsLocalConnectorSecureEnabled() { inline bool IsMaxInflightPingsStrictLimitEnabled() { return IsExperimentEnabled(); } +#define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG +inline bool IsMetadataPublishToAppTagEnabled() { + return IsExperimentEnabled(); +} #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT inline bool IsMonitoringExperimentEnabled() { return IsExperimentEnabled(); @@ -445,10 +490,18 @@ inline bool IsPromiseBasedHttp2ServerTransportEnabled() { inline bool IsPromiseBasedInprocTransportEnabled() { return IsExperimentEnabled(); } +#define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_FILTER_SEND_CANCEL_METADATA +inline bool IsPromiseFilterSendCancelMetadataEnabled() { + return IsExperimentEnabled(); +} #define GRPC_EXPERIMENT_IS_INCLUDED_RETRY_IN_CALLV3 inline bool IsRetryInCallv3Enabled() { return IsExperimentEnabled(); } +#define GRPC_EXPERIMENT_IS_INCLUDED_RETURN_PREEXISTING_ERRORS +inline bool IsReturnPreexistingErrorsEnabled() { + return IsExperimentEnabled(); +} #define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX inline bool IsRrWrrConnectFromRandomIndexEnabled() { return IsExperimentEnabled(); @@ -465,6 +518,10 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() { inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return IsExperimentEnabled(); } +#define GRPC_EXPERIMENT_IS_INCLUDED_SECURE_ENDPOINT_READ_COALESCING +inline bool IsSecureEndpointReadCoalescingEnabled() { + return IsExperimentEnabled(); +} #define GRPC_EXPERIMENT_IS_INCLUDED_SKIP_CLEAR_PEER_ON_CANCELLATION inline bool IsSkipClearPeerOnCancellationEnabled() { return IsExperimentEnabled(); @@ -477,6 +534,10 @@ inline bool IsSleepPromiseExecCtxRemovalEnabled() { inline bool IsSleepUseNonOwningWakerEnabled() { return IsExperimentEnabled(); } +#define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_CONNECTION_SCALING +inline bool IsSubchannelConnectionScalingEnabled() { + return IsExperimentEnabled(); +} #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_WRAPPER_CLEANUP_ON_ORPHAN inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return IsExperimentEnabled(); @@ -489,19 +550,6 @@ inline bool IsTcpFrameSizeTuningEnabled() { inline bool IsTcpRcvLowatEnabled() { return IsExperimentEnabled(); } -#define GRPC_EXPERIMENT_IS_INCLUDED_TRACK_WRITES_IN_RESOURCE_QUOTA -inline bool IsTrackWritesInResourceQuotaEnabled() { - return IsExperimentEnabled(); -} -#define GRPC_EXPERIMENT_IS_INCLUDED_TRACK_ZERO_COPY_ALLOCATIONS_IN_RESOURCE_QUOTA -inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() { - return IsExperimentEnabled< - kExperimentIdTrackZeroCopyAllocationsInResourceQuota>(); -} -#define GRPC_EXPERIMENT_IS_INCLUDED_TRANSPORT_STATE_WATCHER -inline bool IsTransportStateWatcherEnabled() { - return IsExperimentEnabled(); -} #define GRPC_EXPERIMENT_IS_INCLUDED_TSI_FRAME_PROTECTOR_WITHOUT_LOCKS inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return IsExperimentEnabled(); @@ -510,6 +558,19 @@ inline bool IsTsiFrameProtectorWithoutLocksEnabled() { inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return IsExperimentEnabled(); } +#define GRPC_EXPERIMENT_IS_INCLUDED_USE_CALL_EVENT_ENGINE_IN_COMPLETION_QUEUE +inline bool IsUseCallEventEngineInCompletionQueueEnabled() { + return IsExperimentEnabled< + kExperimentIdUseCallEventEngineInCompletionQueue>(); +} +#define GRPC_EXPERIMENT_IS_INCLUDED_WILDCARD_IP_EXPANSION_RESTRICTION +inline bool IsWildcardIpExpansionRestrictionEnabled() { + return IsExperimentEnabled(); +} +#define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE +inline bool IsXdsChannelFilterChainPerRouteEnabled() { + return IsExperimentEnabled(); +} extern const ExperimentMetadata g_experiment_metadata[kNumExperiments]; diff --git a/deps/grpc/src/core/lib/experiments/experiments.yaml b/deps/grpc/src/core/lib/experiments/experiments.yaml index 35ba6714f4c..1a5be6d7ec4 100644 --- a/deps/grpc/src/core/lib/experiments/experiments.yaml +++ b/deps/grpc/src/core/lib/experiments/experiments.yaml @@ -41,60 +41,65 @@ # This file only defines the experiments. Refer to rollouts.yaml for the rollout # state of each experiment. +- name: buffer_list_deletion_prep + description: Gate the removal of old TCP timestamp collection mechanism. + expiry: 2026/05/01 + owner: ctiller@google.com + test_tags: [core_end2end_test] - name: call_tracer_in_transport description: Transport directly passes byte counts to CallTracer. - expiry: 2026/02/01 + expiry: 2026/09/01 owner: roth@google.com test_tags: [] allow_in_fuzzing_config: false -- name: channelz_use_v2_for_v1_api - description: Use the v2 channelz API for the v1 channelz API. - expiry: 2026/02/01 +- name: call_tracer_send_initial_metadata_is_an_annotation + description: Use the new annotation-based CallTracer API. + expiry: 2026/06/01 owner: ctiller@google.com - test_tags: [channelz_test] -- name: channelz_use_v2_for_v1_service - description: Use the v2 channelz service for the v1 channelz service. - expiry: 2026/02/01 + test_tags: [] +- name: call_tracer_send_trailing_metadata_is_an_annotation + description: Use the new annotation-based CallTracer API. + expiry: 2026/06/01 owner: ctiller@google.com - test_tags: [channelz_test] + test_tags: [] - name: chaotic_good_connect_deadline description: Use the deadline from the connect args in chaotic good connector - expiry: 2026/02/01 + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [core_end2end_test] - name: chaotic_good_framing_layer description: Enable the chaotic good framing layer. - expiry: 2026/02/01 + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [core_end2end_test] allow_in_fuzzing_config: false -- name: chttp2_bound_write_size - description: Fix a bug where chttp2 can generate very large writes - expiry: 2026/02/01 +- name: chaotic_good_send_supported_features + description: Send supported features in chaotic good settings frames. + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [core_end2end_test] - name: error_flatten description: Flatten errors to ordinary absl::Status form. - expiry: 2026/02/01 + expiry: 2026/04/01 owner: roth@google.com test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "error_tests"] allow_in_fuzzing_config: false - name: event_engine_callback_cq description: Use EventEngine instead of the CallbackAlternativeCQ. - expiry: 2026/01/23 + expiry: 2026/04/23 owner: mlumish@google.com requires: ["event_engine_client", "event_engine_listener"] - name: event_engine_client description: Use EventEngine clients instead of iomgr's grpc_tcp_client - expiry: 2026/01/23 + expiry: 2026/04/23 owner: mlumish@google.com test_tags: ["core_end2end_test", "event_engine_client_test"] uses_polling: true allow_in_fuzzing_config: false - name: event_engine_dns description: If set, use EventEngine DNSResolver for client channel resolution - expiry: 2026/01/23 + expiry: 2026/04/23 owner: mlumish@google.com test_tags: ["cancel_ares_query_test", "resolver_component_tests_runner_invoker"] @@ -102,14 +107,14 @@ uses_polling: true - name: event_engine_dns_non_client_channel description: If set, use EventEngine DNSResolver in other places besides client channel. - expiry: 2026/01/23 + expiry: 2026/04/23 owner: mlumish@google.com test_tags: ["core_end2end_test"] allow_in_fuzzing_config: false uses_polling: true - name: event_engine_for_all_other_endpoints description: Use EventEngine endpoints for all call sites, including direct uses of grpc_tcp_create. - expiry: 2026/01/23 + expiry: 2026/04/23 owner: mlumish@google.com test_tags: ["core_end2end_test"] allow_in_fuzzing_config: false @@ -123,34 +128,27 @@ ] - name: event_engine_fork description: Enables event engine fork handling, including onfork events and file descriptor generations - expiry: 2026/01/23 + expiry: 2026/05/23 owner: mlumish@google.com test_tags: ["core_end2end_test", "event_engine_fork_test"] uses_polling: true allow_in_fuzzing_config: false - name: event_engine_listener description: Use EventEngine listeners instead of iomgr's grpc_tcp_server - expiry: 2026/02/01 + expiry: 2026/04/23 owner: mlumish@google.com test_tags: ["core_end2end_test", "event_engine_listener_test"] uses_polling: true allow_in_fuzzing_config: false - name: event_engine_poller_for_python description: "Enable event engine poller in gRPC Python" - expiry: 2026/01/16 + expiry: 2026/03/16 owner: mlumish@google.com test_tags: [] uses_polling: true -- name: event_engine_secure_endpoint - description: Use EventEngine secure endpoint wrapper instead of iomgr when available - expiry: 2026/01/22 - owner: alishananda@google.com - test_tags: ["core_end2end_test", "secure_endpoint_test", "posix_endpoint_test"] - uses_polling: true - allow_in_fuzzing_config: false - name: fail_recv_metadata_on_deadline_exceeded description: Fail recv initial metadata when the deadline is exceeded. - expiry: 2026/01/22 + expiry: 2026/05/01 owner: vigneshbabu@google.com test_tags: [] allow_in_fuzzing_config: false @@ -161,33 +159,32 @@ test_tags: [resource_quota_test] - name: fuse_filters description: If set, individual filters are merged into fused filters - expiry: 2026/02/01 + expiry: 2026/05/01 owner: vigneshbabu@google.com test_tags: ["minimal_stack_test"] allow_in_fuzzing_config: false -- name: graceful_external_connection_failure - description: If set, handles external connection failures gracefully - expiry: 2026/02/01 - owner: vigneshbabu@google.com - test_tags: [] - allow_in_fuzzing_config: false - name: keep_alive_ping_timer_batch description: Avoid explicitly cancelling the keepalive timer. Instead adjust the callback to re-schedule itself to the next ping interval. - expiry: 2026/02/01 + expiry: 2026/05/01 owner: vigneshbabu@google.com test_tags: [] - name: local_connector_secure description: Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP connections. - expiry: 2026/02/01 + expiry: 2026/06/01 owner: mattstev@google.com test_tags: ["core_end2end_test"] - name: max_inflight_pings_strict_limit description: If set, the max inflight pings limit is strictly enforced. - expiry: 2026/02/01 + expiry: 2026/05/10 owner: akshitpatel@google.com test_tags: [] +- name: metadata_publish_to_app_tag + description: Publish metadata to the app using the kPublishToApp metadata field. + expiry: 2026/04/01 + owner: leonzz@google.com + test_tags: [] - name: monitoring_experiment description: Placeholder experiment to prove/disprove our monitoring is working expiry: never-ever @@ -195,23 +192,23 @@ test_tags: [] - name: multiping description: Allow more than one ping to be in flight at a time by default. - expiry: 2026/02/01 + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [flow_control_test] - name: otel_export_telemetry_domains description: Export telemetry domains in OpenTelemetry metrics. - expiry: 2026/02/01 + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [core_end2end_test] - name: pick_first_ignore_empty_updates description: Ignore empty resolutions in pick_first - expiry: 2026/02/02 + expiry: 2026/05/02 owner: ctiller@google.com - name: pick_first_ready_to_connecting description: When the subchannel goes from READY to CONNECTING or TRANSIENT_FAILURE, pick_first goes to CONNECTING and starts a new Happy Eyeballs pass. - expiry: 2026/02/01 + expiry: 2026/05/01 owner: roth@google.com test_tags: ["lb_unit_test", "cpp_lb_end2end_test"] - name: pipelined_read_secure_endpoint @@ -219,14 +216,14 @@ expiry: 2026/03/15 owner: alishananda@google.com test_tags: ["core_end2end_test", "secure_endpoint_test", "posix_endpoint_test"] - requires: ["event_engine_client", "event_engine_listener", "event_engine_secure_endpoint"] + requires: ["event_engine_client", "event_engine_listener"] uses_polling: true allow_in_fuzzing_config: false - name: pollset_alternative description: Code outside iomgr that relies directly on pollsets will use non-pollset alternatives when enabled. - expiry: 2026/01/23 + expiry: 2026/04/23 owner: mlumish@google.com test_tags: ["core_end2end_test"] requires: ["event_engine_client", "event_engine_listener"] @@ -234,7 +231,7 @@ - name: prioritize_finished_requests description: Prioritize flushing out finished requests over other in-flight requests during transport writes. - expiry: 2026/02/01 + expiry: 2026/05/01 owner: vigneshbabu@google.com test_tags: [] - name: promise_based_http2_client_transport @@ -242,84 +239,110 @@ Use promises for the http2 client transport. We have kept client and server transport experiments separate to help with smoother roll outs and also help with interop testing. - expiry: 2026/01/30 + expiry: 2027/01/16 owner: tjagtap@google.com - test_tags: ["core_end2end_test"] + test_tags: ["core_end2end_test", "cpp_end2end_test"] allow_in_fuzzing_config: true - name: promise_based_http2_server_transport description: Use promises for the http2 server transport. We have kept client and server transport experiments separate to help with smoother roll outs and also help with interop testing. - expiry: 2026/02/28 + expiry: 2027/01/16 owner: tjagtap@google.com test_tags: [] allow_in_fuzzing_config: true - name: promise_based_inproc_transport description: Use promises for the in-process transport. - expiry: 2026/02/01 + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [] allow_in_fuzzing_config: false # experiment currently crashes if enabled +- name: promise_filter_send_cancel_metadata + description: Enables sending all trailing metadata fields from server side promise-based filters + upon stream cancellation. + expiry: 2026/04/01 + owner: akshitpatel@google.com + test_tags: ["core_end2end_test"] + allow_in_fuzzing_config: true - name: retry_in_callv3 description: Support retries with call-v3 - expiry: 2026/02/01 + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [core_end2end_test] +- name: return_preexisting_errors + description: Return errors that exist before the start of the call in RunHandler. + expiry: 2026/06/30 + owner: aananthv@google.com + test_tags: [] - name: rr_wrr_connect_from_random_index description: RR and WRR LB policies start connecting from a random index in the address list. - expiry: 2026/02/01 + expiry: 2026/04/01 owner: roth@google.com test_tags: ["lb_unit_test", "cpp_lb_end2end_test"] - name: schedule_cancellation_over_write description: Allow cancellation op to be scheduled over a write - expiry: 2026/02/01 + expiry: 2026/05/01 owner: vigneshbabu@google.com test_tags: [] - name: secure_endpoint_offload_large_reads description: If a large read needs to be decrypted, use a separate thread. - expiry: 2026/02/01 + expiry: 2026/06/01 owner: alishananda@google.com test_tags: ["core_end2end_test"] requires: [ "event_engine_client", "event_engine_listener", - "event_engine_secure_endpoint", ] - name: secure_endpoint_offload_large_writes description: If a large read write to be encrypted, use a separate thread. - expiry: 2026/02/01 + expiry: 2026/06/01 owner: alishananda@google.com test_tags: ["core_end2end_test"] requires: [ "event_engine_client", "event_engine_listener", - "event_engine_secure_endpoint", + ] +- name: secure_endpoint_read_coalescing + description: + Coalesce decrypted bytes in SecureEndpoint if a read_hint is provided. + expiry: 2026/06/01 + owner: aananthv@google.com + test_tags: ["core_end2end_test"] + requires: + [ + "event_engine_client", + "event_engine_listener", ] - name: skip_clear_peer_on_cancellation description: If set, skips clearing of peer string on call cancellation. - expiry: 2026/03/01 + expiry: 2026/05/01 owner: vigneshbabu@google.com test_tags: [] - name: sleep_promise_exec_ctx_removal description: If set, polling the sleep promise does not rely on the ExecCtx. - expiry: 2026/02/01 + expiry: 2026/06/01 owner: akshitpatel@google.com test_tags: ["promise_test"] - name: sleep_use_non_owning_waker description: If set, the sleep promise uses a non-owning waker. - expiry: 2026/02/01 + expiry: 2026/04/01 owner: akshitpatel@google.com test_tags: ["promise_test"] +- name: subchannel_connection_scaling + description: Subchannel connection scaling support. + expiry: 2026/07/01 + owner: roth@google.com + test_tags: ["core_end2end_test", "cpp_lb_end2end_test", "chttp2_keepalive_tests"] - name: subchannel_wrapper_cleanup_on_orphan description: Fixes the subchannel wrapper to drop any non-cancelled watchers when it gets orphaned. - expiry: 2026/01/15 + expiry: 2026/05/15 owner: roth@google.com test_tags: ["cpp_end2end_test", "xds_end2end_test"] - name: tcp_frame_size_tuning @@ -328,39 +351,37 @@ TCP would not indicate completion of a read operation until a specified number of bytes have been read over the socket. Buffers are also allocated according to estimated RPC sizes. - expiry: 2026/02/01 + expiry: 2026/08/01 owner: vigneshbabu@google.com test_tags: ["endpoint_test", "flow_control_test"] - name: tcp_rcv_lowat description: Use SO_RCVLOWAT to avoid wakeups on the read path. - expiry: 2026/02/01 + expiry: 2026/08/01 owner: vigneshbabu@google.com test_tags: ["endpoint_test", "flow_control_test"] -- name: track_writes_in_resource_quota - description: Track the Write memory in Resource Quota. - expiry: 2026/02/01 - owner: snohria@google.com - test_tags: [resource_quota_test] -- name: track_zero_copy_allocations_in_resource_quota - description: - Track the memory allocattions under the zero copy path in - Resource Quota. This includes the encryption / decryption - for privacy-and-integrity payloads. - expiry: 2026/05/01 - owner: snohria@google.com - test_tags: [resource_quota_test] -- name: transport_state_watcher - description: New state watcher API between transport and subchannel. - expiry: 2026/02/01 - owner: roth@google.com - test_tags: ["cpp_lb_end2end_test", "chttp2_keepalive_tests"] - name: tsi_frame_protector_without_locks description: Do not hold locks while using the tsi_frame_protector. - expiry: 2026/02/01 + expiry: 2026/06/01 owner: mattstev@google.com test_tags: [] - name: unconstrained_max_quota_buffer_size description: Discard the cap on the max free pool size for one memory allocator - expiry: 2026/02/01 + expiry: 2026/05/01 owner: ctiller@google.com test_tags: [resource_quota_test] +- name: use_call_event_engine_in_completion_queue + description: Use the call event engine to run callbacks in completion queue. + expiry: 2026/06/01 + owner: aananthv@google.com + test_tags: ["core_end2end_test"] +- name: wildcard_ip_expansion_restriction + description: + If set, adds optional restriction on when to expand wildcard IPs. + expiry: 2026/07/01 + owner: alishananda@google.com + test_tags: ["core_end2end_test"] +- name: xds_channel_filter_chain_per_route + description: xDS channels use a separate filter chain for each route. + expiry: 2026/06/01 + owner: roth@google.com + test_tags: ["xds_end2end_test", "xds_test"] diff --git a/deps/grpc/src/core/lib/experiments/rollouts.yaml b/deps/grpc/src/core/lib/experiments/rollouts.yaml index cff515db116..e45a891bf54 100644 --- a/deps/grpc/src/core/lib/experiments/rollouts.yaml +++ b/deps/grpc/src/core/lib/experiments/rollouts.yaml @@ -42,6 +42,8 @@ - name: call_tracer_in_transport default: true +- name: call_tracer_send_initial_metadata_is_an_annotation + default: true - name: chaotic_good_connect_deadline default: true - name: chaotic_good_framing_layer @@ -59,10 +61,10 @@ - name: event_engine_for_all_other_endpoints default: true - name: event_engine_fork - default: false + default: true - name: event_engine_listener default: true -- name: event_engine_secure_endpoint +- name: event_engine_poller_for_python default: true - name: fail_recv_metadata_on_deadline_exceeded default: false @@ -70,16 +72,18 @@ default: false - name: fuse_filters default: false -- name: graceful_external_connection_failure - default: true - name: keep_alive_ping_timer_batch default: false - name: local_connector_secure default: false - name: max_inflight_pings_strict_limit default: true +- name: metadata_publish_to_app_tag + default: true - name: monitoring_experiment default: true +- name: pick_first_ready_to_connecting + default: true - name: pollset_alternative default: false - name: prioritize_finished_requests @@ -88,6 +92,10 @@ default: false - name: promise_based_http2_server_transport default: false +- name: promise_filter_send_cancel_metadata + default: false +- name: rr_wrr_connect_from_random_index + default: true - name: schedule_cancellation_over_write default: false - name: skip_clear_peer_on_cancellation @@ -100,11 +108,11 @@ default: false - name: tcp_rcv_lowat default: false -- name: track_writes_in_resource_quota - default: false -- name: track_zero_copy_allocations_in_resource_quota - default: false - name: tsi_frame_protector_without_locks default: false - name: unconstrained_max_quota_buffer_size default: false +- name: use_call_event_engine_in_completion_queue + default: false +- name: xds_channel_filter_chain_per_route + default: true diff --git a/deps/grpc/src/core/lib/iomgr/event_engine_shims/endpoint.cc b/deps/grpc/src/core/lib/iomgr/event_engine_shims/endpoint.cc index 63409393a75..f32f8b2996d 100644 --- a/deps/grpc/src/core/lib/iomgr/event_engine_shims/endpoint.cc +++ b/deps/grpc/src/core/lib/iomgr/event_engine_shims/endpoint.cc @@ -108,7 +108,7 @@ class EventEngineEndpointWrapper { read_buffer->Clear(); return endpoint_->Read( [this](absl::Status status) { FinishPendingRead(status); }, read_buffer, - std::move(args)); + args); } void FinishPendingRead(absl::Status status) { @@ -302,7 +302,7 @@ void EndpointRead(grpc_endpoint* ep, grpc_slice_buffer* slices, EventEngine::Endpoint::ReadArgs read_args; read_args.set_read_hint_bytes(min_progress_size); - if (eeep->wrapper->Read(cb, slices, std::move(read_args))) { + if (eeep->wrapper->Read(cb, slices, read_args)) { // Read succeeded immediately. Run the callback inline. eeep->wrapper->FinishPendingRead(absl::OkStatus()); } diff --git a/deps/grpc/src/core/lib/iomgr/resolve_address.h b/deps/grpc/src/core/lib/iomgr/resolve_address.h index 6b169b5a5e8..5c05cf8edd6 100644 --- a/deps/grpc/src/core/lib/iomgr/resolve_address.h +++ b/deps/grpc/src/core/lib/iomgr/resolve_address.h @@ -32,8 +32,6 @@ #include "absl/container/flat_hash_set.h" #include "absl/status/statusor.h" -#define GRPC_MAX_SOCKADDR_SIZE 128 - namespace grpc_core { extern const char* kDefaultSecurePort; constexpr int kDefaultSecurePortInt = 443; diff --git a/deps/grpc/src/core/lib/iomgr/resolved_address.h b/deps/grpc/src/core/lib/iomgr/resolved_address.h index c622bdb5126..7548a949c67 100644 --- a/deps/grpc/src/core/lib/iomgr/resolved_address.h +++ b/deps/grpc/src/core/lib/iomgr/resolved_address.h @@ -28,8 +28,6 @@ #include #endif -#define GRPC_MAX_SOCKADDR_SIZE 128 - struct grpc_resolved_address { char addr[GRPC_MAX_SOCKADDR_SIZE]; socklen_t len; diff --git a/deps/grpc/src/core/lib/iomgr/tcp_posix.cc b/deps/grpc/src/core/lib/iomgr/tcp_posix.cc index 00a8827516f..ace89981a52 100644 --- a/deps/grpc/src/core/lib/iomgr/tcp_posix.cc +++ b/deps/grpc/src/core/lib/iomgr/tcp_posix.cc @@ -53,6 +53,7 @@ #include "src/core/lib/event_engine/shim.h" #include "src/core/lib/experiments/experiments.h" #include "src/core/lib/iomgr/buffer_list.h" +#include "src/core/lib/iomgr/error.h" #include "src/core/lib/iomgr/ev_posix.h" #include "src/core/lib/iomgr/event_engine_shims/endpoint.h" #include "src/core/lib/iomgr/socket_utils_posix.h" @@ -753,8 +754,10 @@ static void tcp_free(grpc_tcp* tcp) { grpc_fd_orphan(tcp->em_fd, tcp->release_fd_cb, tcp->release_fd, "tcp_unref_orphan"); grpc_slice_buffer_destroy(&tcp->last_read_buffer); - tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg, - GRPC_ERROR_CREATE("endpoint destroyed")); + if (!grpc_core::IsBufferListDeletionPrepEnabled()) { + tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg, + GRPC_ERROR_CREATE("endpoint destroyed")); + } tcp->outgoing_buffer_arg = nullptr; delete tcp; } @@ -1278,8 +1281,11 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg, *sent_length = length; // Only save timestamps if all the bytes were taken by sendmsg. if (sending_length == static_cast(length)) { - tcp->tb_list.AddNewEntry(static_cast(tcp->bytes_counter + length), - tcp->fd, tcp->outgoing_buffer_arg); + if (!grpc_core::IsBufferListDeletionPrepEnabled()) { + tcp->tb_list.AddNewEntry( + static_cast(tcp->bytes_counter + length), tcp->fd, + tcp->outgoing_buffer_arg); + } tcp->outgoing_buffer_arg = nullptr; } return true; @@ -1367,7 +1373,9 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg, LOG(ERROR) << "Unexpected control message"; return cmsg; } - tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss); + if (!grpc_core::IsBufferListDeletionPrepEnabled()) { + tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss); + } return next_cmsg; } diff --git a/deps/grpc/src/core/lib/iomgr/tcp_server.cc b/deps/grpc/src/core/lib/iomgr/tcp_server.cc index dd05f629623..f55133b6e6c 100644 --- a/deps/grpc/src/core/lib/iomgr/tcp_server.cc +++ b/deps/grpc/src/core/lib/iomgr/tcp_server.cc @@ -65,11 +65,6 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s, grpc_tcp_server_impl->shutdown_starting_add(s, shutdown_starting); } -void grpc_tcp_server_shutdown_ending_add(grpc_tcp_server* s, - grpc_closure* shutdown_ending) { - grpc_tcp_server_impl->shutdown_ending_add(s, shutdown_ending); -} - void grpc_tcp_server_unref(grpc_tcp_server* s) { grpc_tcp_server_impl->unref(s); } diff --git a/deps/grpc/src/core/lib/iomgr/tcp_server.h b/deps/grpc/src/core/lib/iomgr/tcp_server.h index e447a8f96c0..5f5197bbc4f 100644 --- a/deps/grpc/src/core/lib/iomgr/tcp_server.h +++ b/deps/grpc/src/core/lib/iomgr/tcp_server.h @@ -78,8 +78,6 @@ typedef struct grpc_tcp_server_vtable { grpc_tcp_server* (*ref)(grpc_tcp_server* s); void (*shutdown_starting_add)(grpc_tcp_server* s, grpc_closure* shutdown_starting); - void (*shutdown_ending_add)(grpc_tcp_server* s, - grpc_closure* shutdown_ending); void (*unref)(grpc_tcp_server* s); void (*shutdown_listeners)(grpc_tcp_server* s); int (*pre_allocated_fd)(grpc_tcp_server* s); @@ -137,11 +135,6 @@ grpc_tcp_server* grpc_tcp_server_ref(grpc_tcp_server* s); void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s, grpc_closure* shutdown_starting); -// shutdown_ending is called when ref count has reached zero and the server -// has just been destroyed. Calling grpc_tcp_server_ref() from it has no effect. -void grpc_tcp_server_shutdown_ending_add(grpc_tcp_server* s, - grpc_closure* shutdown_ending); - // If the refcount drops to zero, enqueue calls on exec_ctx to // shutdown_listeners and delete s. void grpc_tcp_server_unref(grpc_tcp_server* s); diff --git a/deps/grpc/src/core/lib/iomgr/tcp_server_posix.cc b/deps/grpc/src/core/lib/iomgr/tcp_server_posix.cc index 75edd9bbe04..68c82f113b9 100644 --- a/deps/grpc/src/core/lib/iomgr/tcp_server_posix.cc +++ b/deps/grpc/src/core/lib/iomgr/tcp_server_posix.cc @@ -91,12 +91,6 @@ using ::grpc_event_engine::experimental::SliceBuffer; static void finish_shutdown(grpc_tcp_server* s) { gpr_mu_lock(&s->mu); GRPC_CHECK(s->shutdown); - if (grpc_core::ExecCtx::Get() == nullptr) { - grpc_core::ExecCtx exec_ctx; - grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending); - } else { - grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending); - } gpr_mu_unlock(&s->mu); if (s->shutdown_complete != nullptr) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete, @@ -285,8 +279,6 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, s->shutdown = false; s->shutdown_starting.head = nullptr; s->shutdown_starting.tail = nullptr; - s->shutdown_ending.head = nullptr; - s->shutdown_ending.tail = nullptr; if (!grpc_event_engine::experimental::UseEventEngineListener()) { s->shutdown_complete = shutdown_complete; } else { @@ -844,14 +836,6 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s, gpr_mu_unlock(&s->mu); } -static void tcp_server_shutdown_ending_add(grpc_tcp_server* s, - grpc_closure* shutdown_ending) { - gpr_mu_lock(&s->mu); - grpc_closure_list_append(&s->shutdown_ending, shutdown_ending, - absl::OkStatus()); - gpr_mu_unlock(&s->mu); -} - static void tcp_server_unref(grpc_tcp_server* s) { if (gpr_unref(&s->refs)) { grpc_tcp_server_shutdown_listeners(s); @@ -990,7 +974,6 @@ grpc_tcp_server_vtable grpc_posix_tcp_server_vtable = { tcp_server_port_fd, tcp_server_ref, tcp_server_shutdown_starting_add, - tcp_server_shutdown_ending_add, tcp_server_unref, tcp_server_shutdown_listeners, tcp_server_pre_allocated_fd, diff --git a/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h b/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h index 82c4a3f8e11..9b9fdd9df4d 100644 --- a/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h +++ b/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h @@ -90,9 +90,6 @@ struct grpc_tcp_server { // List of closures passed to shutdown_starting_add(). grpc_closure_list shutdown_starting{nullptr, nullptr}; - // List of closures passed to shutdown_ending_add(). - grpc_closure_list shutdown_ending{nullptr, nullptr}; - // shutdown callback grpc_closure* shutdown_complete = nullptr; diff --git a/deps/grpc/src/core/lib/iomgr/tcp_server_windows.cc b/deps/grpc/src/core/lib/iomgr/tcp_server_windows.cc index bca1d1378ea..77454abe707 100644 --- a/deps/grpc/src/core/lib/iomgr/tcp_server_windows.cc +++ b/deps/grpc/src/core/lib/iomgr/tcp_server_windows.cc @@ -123,9 +123,6 @@ struct grpc_tcp_server { // List of closures passed to shutdown_starting_add(). grpc_closure_list shutdown_starting; - // List of closures passed to shutdown_ending_add(). - grpc_closure_list shutdown_ending; - // shutdown callback grpc_closure* shutdown_complete; @@ -191,8 +188,6 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, s->tail = NULL; s->shutdown_starting.head = NULL; s->shutdown_starting.tail = NULL; - s->shutdown_ending.head = NULL; - s->shutdown_ending.tail = NULL; s->shutdown_complete = shutdown_complete; new (&s->ee_listener) std::unique_ptr(nullptr); *server = s; @@ -224,7 +219,6 @@ static void finish_shutdown_locked(grpc_tcp_server* s) { absl::OkStatus()); } - grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending); grpc_core::ExecCtx::Run( DEBUG_LOCATION, GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx), @@ -244,14 +238,6 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s, gpr_mu_unlock(&s->mu); } -static void tcp_server_shutdown_ending_add(grpc_tcp_server* s, - grpc_closure* shutdown_ending) { - gpr_mu_lock(&s->mu); - grpc_closure_list_append(&s->shutdown_ending, shutdown_ending, - absl::OkStatus()); - gpr_mu_unlock(&s->mu); -} - static void tcp_server_destroy(grpc_tcp_server* s) { grpc_tcp_listener* sp; gpr_mu_lock(&s->mu); @@ -651,19 +637,12 @@ static int tcp_pre_allocated_fd(grpc_tcp_server* /* s */) { return -1; } static void tcp_set_pre_allocated_fd(grpc_tcp_server* /* s */, int /* fd */) {} grpc_tcp_server_vtable grpc_windows_tcp_server_vtable = { - tcp_server_create, - tcp_server_start, - tcp_server_add_port, - tcp_server_create_fd_handler, - tcp_server_port_fd_count, - tcp_server_port_fd, - tcp_server_ref, - tcp_server_shutdown_starting_add, - tcp_server_shutdown_ending_add, - tcp_server_unref, - tcp_server_shutdown_listeners, - tcp_pre_allocated_fd, - tcp_set_pre_allocated_fd}; + tcp_server_create, tcp_server_start, + tcp_server_add_port, tcp_server_create_fd_handler, + tcp_server_port_fd_count, tcp_server_port_fd, + tcp_server_ref, tcp_server_shutdown_starting_add, + tcp_server_unref, tcp_server_shutdown_listeners, + tcp_pre_allocated_fd, tcp_set_pre_allocated_fd}; // ---- EventEngine shim ------------------------------------------------------ @@ -727,8 +706,6 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete, s->tail = nullptr; s->shutdown_starting.head = nullptr; s->shutdown_starting.tail = nullptr; - s->shutdown_ending.head = nullptr; - s->shutdown_ending.tail = nullptr; s->shutdown_complete = grpc_core::NewClosure([](absl::Status) { grpc_core::Crash("iomgr shutdown_complete callback should be unused"); }); @@ -790,7 +767,6 @@ static void event_engine_unref(grpc_tcp_server* s) { gpr_mu_unlock(&s->mu); gpr_mu_destroy(&s->mu); std::destroy_at(&s->ee_listener); - grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending); gpr_free(s); } } @@ -803,29 +779,14 @@ static void event_engine_shutdown_starting_add( gpr_mu_unlock(&s->mu); } -static void event_engine_shutdown_ending_add(grpc_tcp_server* s, - grpc_closure* shutdown_ending) { - gpr_mu_lock(&s->mu); - grpc_closure_list_append(&s->shutdown_ending, shutdown_ending, - absl::OkStatus()); - gpr_mu_unlock(&s->mu); -} - } // namespace grpc_tcp_server_vtable grpc_windows_event_engine_tcp_server_vtable = { - event_engine_create, - event_engine_start, - event_engine_add_port, - event_engine_create_fd_handler, - event_engine_port_fd_count, - event_engine_port_fd, - event_engine_ref, - event_engine_shutdown_starting_add, - event_engine_shutdown_ending_add, - event_engine_unref, - event_engine_shutdown_listeners, - tcp_pre_allocated_fd, - tcp_set_pre_allocated_fd}; + event_engine_create, event_engine_start, + event_engine_add_port, event_engine_create_fd_handler, + event_engine_port_fd_count, event_engine_port_fd, + event_engine_ref, event_engine_shutdown_starting_add, + event_engine_unref, event_engine_shutdown_listeners, + tcp_pre_allocated_fd, tcp_set_pre_allocated_fd}; #endif // GRPC_WINSOCK_SOCKET diff --git a/deps/grpc/src/core/lib/promise/all_ok.h b/deps/grpc/src/core/lib/promise/all_ok.h index 77b04382beb..94a653ebf04 100644 --- a/deps/grpc/src/core/lib/promise/all_ok.h +++ b/deps/grpc/src/core/lib/promise/all_ok.h @@ -17,17 +17,14 @@ #include -#include -#include +#include +#include #include "src/core/lib/promise/detail/join_state.h" #include "src/core/lib/promise/detail/promise_factory.h" -#include "src/core/lib/promise/map.h" #include "src/core/lib/promise/poll.h" #include "src/core/lib/promise/status_flag.h" -#include "absl/meta/type_traits.h" #include "absl/status/status.h" -#include "absl/status/statusor.h" namespace grpc_core { // AllOk promise combinator. @@ -93,12 +90,18 @@ struct AllOkTraits { template class AllOk { public: - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit AllOk(Promises... promises) - : state_(std::move(promises)...) {} + template + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit AllOk(Args&&... args) + : state_(std::forward(args)...) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto operator()() { return state_.PollOnce(); } + void ToProto(grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + state_.ToProto(grpc_channelz_v2_Promise_ALL_OK, promise_proto, arena); + } + private: JoinState, Promises...> state_; }; @@ -109,18 +112,20 @@ class AllOk { // If any fail, cancel the rest and return the failure. // If all succeed, return Ok. template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto AllOk(Promises... promises) { - return promise_detail::AllOk(std::move(promises)...); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto AllOk(Promises&&... promises) { + return promise_detail::AllOk...>( + std::forward(promises)...); } // Construct a promise for each element of the set, then run them all. // If any fail, cancel the rest and return the failure. // If all succeed, return Ok. template -inline auto AllOkIter(Iter begin, Iter end, FactoryFn factory_fn) { +inline auto AllOkIter(Iter begin, Iter end, FactoryFn&& factory_fn) { using Factory = - promise_detail::RepeatedPromiseFactory; - Factory factory(std::move(factory_fn)); + promise_detail::RepeatedPromiseFactory>; + Factory factory(std::forward(factory_fn)); using Promise = typename Factory::Promise; std::vector promises; std::vector done; diff --git a/deps/grpc/src/core/lib/promise/cancel_callback.h b/deps/grpc/src/core/lib/promise/cancel_callback.h index 9ff66231a47..863e905fc95 100644 --- a/deps/grpc/src/core/lib/promise/cancel_callback.h +++ b/deps/grpc/src/core/lib/promise/cancel_callback.h @@ -28,8 +28,8 @@ namespace cancel_callback_detail { template class Handler { public: - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Handler(Fn fn) - : fn_(std::move(fn)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Handler(Fn&& fn) + : fn_(std::forward(fn)) {} Handler(const Handler&) = delete; Handler& operator=(const Handler&) = delete; GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION ~Handler() { @@ -69,12 +69,12 @@ class Handler { // completion. // Returns a promise with the same result type as main_fn. template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto OnCancel(MainFn main_fn, - CancelFn cancel_fn) { - return [on_cancel = - cancel_callback_detail::Handler(std::move(cancel_fn)), +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto OnCancel( + MainFn&& main_fn, CancelFn&& cancel_fn) { + return [on_cancel = cancel_callback_detail::Handler( + std::forward(cancel_fn)), main_fn = promise_detail::PromiseLike( - std::move(main_fn))]() mutable { + std::forward(main_fn))]() mutable { auto r = main_fn(); if (r.ready()) { on_cancel.Done(); @@ -88,13 +88,12 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto OnCancel(MainFn main_fn, // is called. template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto OnCancelFactory( - MainFn main_fn, CancelFn cancel_fn) { - return [on_cancel = - cancel_callback_detail::Handler(std::move(cancel_fn)), - main_fn = std::move(main_fn)]() mutable { - auto r = main_fn(); + MainFn&& main_fn, CancelFn&& cancel_fn) { + return [on_cancel = cancel_callback_detail::Handler( + std::forward(cancel_fn)), + main_fn = std::forward(main_fn)]() mutable { on_cancel.Done(); - return r; + return main_fn(); }; }; diff --git a/deps/grpc/src/core/lib/promise/detail/join_state.h b/deps/grpc/src/core/lib/promise/detail/join_state.h index 6a01a393c59..858fcd6af62 100644 --- a/deps/grpc/src/core/lib/promise/detail/join_state.h +++ b/deps/grpc/src/core/lib/promise/detail/join_state.h @@ -29,6 +29,8 @@ #include "src/core/util/bitset.h" #include "src/core/util/construct_destruct.h" #include "src/core/util/grpc_check.h" +#include "src/core/util/upb_utils.h" +#include "src/proto/grpc/channelz/v2/promise.upb.h" #include "absl/log/log.h" namespace grpc_core { @@ -61,6 +63,42 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 2, arena); + for (int i = 0; i < 2; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); @@ -164,6 +202,54 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 3, arena); + for (int i = 0; i < 3; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[2], StdStringToUpbString(TypeName())); + if (ready.is_set(2)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[2], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise2, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[2], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); @@ -304,6 +390,66 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 4, arena); + for (int i = 0; i < 4; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[2], StdStringToUpbString(TypeName())); + if (ready.is_set(2)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[2], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise2, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[2], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[3], StdStringToUpbString(TypeName())); + if (ready.is_set(3)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[3], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise3, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[3], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); @@ -480,6 +626,78 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 5, arena); + for (int i = 0; i < 5; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[2], StdStringToUpbString(TypeName())); + if (ready.is_set(2)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[2], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise2, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[2], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[3], StdStringToUpbString(TypeName())); + if (ready.is_set(3)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[3], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise3, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[3], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[4], StdStringToUpbString(TypeName())); + if (ready.is_set(4)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[4], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise4, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[4], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); @@ -692,6 +910,90 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 6, arena); + for (int i = 0; i < 6; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[2], StdStringToUpbString(TypeName())); + if (ready.is_set(2)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[2], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise2, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[2], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[3], StdStringToUpbString(TypeName())); + if (ready.is_set(3)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[3], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise3, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[3], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[4], StdStringToUpbString(TypeName())); + if (ready.is_set(4)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[4], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise4, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[4], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[5], StdStringToUpbString(TypeName())); + if (ready.is_set(5)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[5], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise5, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[5], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); @@ -940,6 +1242,102 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 7, arena); + for (int i = 0; i < 7; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[2], StdStringToUpbString(TypeName())); + if (ready.is_set(2)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[2], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise2, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[2], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[3], StdStringToUpbString(TypeName())); + if (ready.is_set(3)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[3], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise3, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[3], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[4], StdStringToUpbString(TypeName())); + if (ready.is_set(4)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[4], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise4, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[4], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[5], StdStringToUpbString(TypeName())); + if (ready.is_set(5)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[5], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise5, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[5], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[6], StdStringToUpbString(TypeName())); + if (ready.is_set(6)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[6], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise6, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[6], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); @@ -1224,6 +1622,114 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 8, arena); + for (int i = 0; i < 8; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[2], StdStringToUpbString(TypeName())); + if (ready.is_set(2)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[2], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise2, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[2], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[3], StdStringToUpbString(TypeName())); + if (ready.is_set(3)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[3], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise3, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[3], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[4], StdStringToUpbString(TypeName())); + if (ready.is_set(4)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[4], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise4, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[4], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[5], StdStringToUpbString(TypeName())); + if (ready.is_set(5)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[5], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise5, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[5], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[6], StdStringToUpbString(TypeName())); + if (ready.is_set(6)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[6], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise6, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[6], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[7], StdStringToUpbString(TypeName())); + if (ready.is_set(7)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[7], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise7, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[7], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); @@ -1543,6 +2049,126 @@ struct JoinState { delete; JoinState& operator=(const JoinState& other) = delete; JoinState& operator=(JoinState&& other) = delete; + void ToProto(grpc_channelz_v2_Promise_CompositionKind kind, + grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* join_promise = + grpc_channelz_v2_Promise_mutable_join_promise(promise_proto, arena); + grpc_channelz_v2_Promise_Join_set_kind(join_promise, kind); + auto** branches = + grpc_channelz_v2_Promise_Join_resize_branches(join_promise, 9, arena); + for (int i = 0; i < 9; i++) { + branches[i] = grpc_channelz_v2_Promise_JoinBranch_new(arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[0], StdStringToUpbString(TypeName())); + if (ready.is_set(0)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[0], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise0, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[0], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[1], StdStringToUpbString(TypeName())); + if (ready.is_set(1)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[1], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise1, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[1], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[2], StdStringToUpbString(TypeName())); + if (ready.is_set(2)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[2], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise2, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[2], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[3], StdStringToUpbString(TypeName())); + if (ready.is_set(3)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[3], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise3, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[3], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[4], StdStringToUpbString(TypeName())); + if (ready.is_set(4)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[4], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise4, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[4], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[5], StdStringToUpbString(TypeName())); + if (ready.is_set(5)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[5], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise5, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[5], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[6], StdStringToUpbString(TypeName())); + if (ready.is_set(6)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[6], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise6, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[6], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[7], StdStringToUpbString(TypeName())); + if (ready.is_set(7)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[7], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise7, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[7], arena), + arena); + } + grpc_channelz_v2_Promise_JoinBranch_set_factory( + branches[8], StdStringToUpbString(TypeName())); + if (ready.is_set(8)) { + grpc_channelz_v2_Promise_JoinBranch_set_result( + branches[8], StdStringToUpbString("ready")); + } else { + PromiseAsProto( + promise8, + grpc_channelz_v2_Promise_JoinBranch_mutable_polling_promise( + branches[8], arena), + arena); + } + } GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION JoinState(JoinState&& other) noexcept { GRPC_DCHECK(other.ready.none()); Construct(&promise0, std::move(other.promise0)); diff --git a/deps/grpc/src/core/lib/promise/detail/promise_factory.h b/deps/grpc/src/core/lib/promise/detail/promise_factory.h index 5eb4e42c5bd..240817ad797 100644 --- a/deps/grpc/src/core/lib/promise/detail/promise_factory.h +++ b/deps/grpc/src/core/lib/promise/detail/promise_factory.h @@ -137,8 +137,8 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline absl::enable_if_t< !IsVoidCallable>::value, PromiseLike>> -PromiseFactoryImpl(OnceToken, F f, A&&) { - return PromiseLike(std::move(f)); +PromiseFactoryImpl(OnceToken, F&& f, A&&) { + return PromiseLike(std::forward>(f)); } // Promote a callable() -> Poll to a PromiseFactory() -> Promise @@ -147,8 +147,8 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline absl::enable_if_t< !IsVoidCallable>::value && PollTraits>::is_poll(), PromiseLike>> -PromiseFactoryImpl(OnceToken, F f) { - return PromiseLike(std::move(f)); +PromiseFactoryImpl(OnceToken, F&& f) { + return PromiseLike>(std::forward(f)); } // Promote a callable() -> T to a PromiseFactory() -> Immediate @@ -158,7 +158,7 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto PromiseFactoryImpl( !PollTraits>::is_poll() && !std::is_same_v, void>, OnceToken>, - F f) { + F&& f) { auto f2 = [x = f()]() mutable { return std::move(x); }; return PromiseLike(std::move(f2)); } @@ -168,7 +168,7 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto PromiseFactoryImpl( !PollTraits>::is_poll() && std::is_same_v, void>, OnceToken>, - F f) { + F&& f) { f(); auto f2 = []() { return Empty{}; }; return PromiseLike(std::move(f2)); @@ -225,8 +225,8 @@ class OncePromiseFactory { std::declval())); using UnderlyingFactory = F; - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit OncePromiseFactory(F f) - : f_(std::move(f)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit OncePromiseFactory(F&& f) + : f_(std::forward(f)) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Promise Make(Arg&& a) { return PromiseFactoryImpl(OnceToken{}, std::move(f_), std::forward(a)); @@ -243,8 +243,8 @@ class OncePromiseFactory { using Promise = decltype(PromiseFactoryImpl(OnceToken{}, std::move(f_))); using UnderlyingFactory = F; - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit OncePromiseFactory(F f) - : f_(std::move(f)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit OncePromiseFactory(F&& f) + : f_(std::forward(f)) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Promise Make() { return PromiseFactoryImpl(OnceToken{}, std::move(f_)); @@ -265,8 +265,8 @@ class RepeatedPromiseFactory { using Promise = decltype(PromiseFactoryImpl(RepeatableToken{}, f_, std::declval())); - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit RepeatedPromiseFactory(F f) - : f_(std::move(f)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit RepeatedPromiseFactory(F&& f) + : f_(std::forward(f)) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Promise Make(Arg&& a) const { return PromiseFactoryImpl(RepeatableToken{}, f_, std::forward(a)); @@ -293,8 +293,8 @@ class RepeatedPromiseFactory { using Arg = void; using Promise = decltype(PromiseFactoryImpl(RepeatableToken{}, f_)); - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit RepeatedPromiseFactory(F f) - : f_(std::move(f)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit RepeatedPromiseFactory(F&& f) + : f_(std::forward(f)) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Promise Make() const { return PromiseFactoryImpl(RepeatableToken{}, f_); diff --git a/deps/grpc/src/core/lib/promise/for_each.h b/deps/grpc/src/core/lib/promise/for_each.h index d9c18c8a9ad..7b9436b7a5a 100644 --- a/deps/grpc/src/core/lib/promise/for_each.h +++ b/deps/grpc/src/core/lib/promise/for_each.h @@ -19,6 +19,7 @@ #include #include +#include #include #include "src/core/lib/debug/trace.h" @@ -124,10 +125,10 @@ class ForEach { public: using Result = decltype(Done::Make(false)); - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION ForEach(Reader reader, Action action, + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION ForEach(Reader&& reader, Action&& action, DebugLocation whence = {}) - : reader_(std::move(reader)), - action_factory_(std::move(action)), + : reader_(std::forward(reader)), + action_factory_(std::forward(action)), whence_(whence) { Construct(&reader_next_, reader_.Next()); } @@ -164,10 +165,33 @@ class ForEach { return PollAction(); } + void ToProto(grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + auto* for_each_promise = + grpc_channelz_v2_Promise_mutable_for_each_promise(promise_proto, arena); + + grpc_channelz_v2_Promise_ForEach_set_reader_factory( + for_each_promise, StdStringToUpbString(TypeName())); + grpc_channelz_v2_Promise_ForEach_set_action_factory( + for_each_promise, StdStringToUpbString(TypeName())); + if (reading_next_) { + PromiseAsProto(reader_next_, + grpc_channelz_v2_Promise_ForEach_mutable_reader_promise( + for_each_promise, arena), + arena); + } else { + PromiseAsProto(in_action_.promise, + grpc_channelz_v2_Promise_ForEach_mutable_action_promise( + for_each_promise, arena), + arena); + } + } + private: struct InAction { - InAction(ActionPromise promise, ReaderResult result) - : promise(std::move(promise)), result(std::move(result)) {} + InAction(ActionPromise&& promise, ReaderResult&& result) + : promise(std::forward(promise)), + result(std::forward(result)) {} ActionPromise promise; ReaderResult result; }; @@ -240,9 +264,9 @@ class ForEach { template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline for_each_detail::ForEach -ForEach(Reader reader, Action action, DebugLocation whence = {}) { - return for_each_detail::ForEach(std::move(reader), - std::move(action), whence); +ForEach(Reader&& reader, Action&& action, DebugLocation whence = {}) { + return for_each_detail::ForEach, std::decay_t>( + std::forward(reader), std::forward(action), whence); } } // namespace grpc_core diff --git a/deps/grpc/src/core/lib/promise/if.h b/deps/grpc/src/core/lib/promise/if.h index 66bc15d727f..4683d2cd431 100644 --- a/deps/grpc/src/core/lib/promise/if.h +++ b/deps/grpc/src/core/lib/promise/if.h @@ -113,10 +113,11 @@ class If { typename PollTraits()())>::Type; public: - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION If(C condition, T if_true, F if_false) - : state_(Evaluating{ConditionPromise(std::move(condition)), - TrueFactory(std::move(if_true)), - FalseFactory(std::move(if_false))}) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION If(C&& condition, T&& if_true, + F&& if_false) + : state_(Evaluating{ConditionPromise(std::forward(condition)), + TrueFactory(std::forward(if_true)), + FalseFactory(std::forward(if_false))}) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Poll operator()() { return std::visit(CallPoll{this}, state_); @@ -173,10 +174,11 @@ class If { typename PollTraits()())>::Type; public: - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION If(bool condition, T if_true, F if_false) + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION If(bool condition, T&& if_true, + F&& if_false) : condition_(condition) { - TrueFactory true_factory(std::move(if_true)); - FalseFactory false_factory(std::move(if_false)); + TrueFactory true_factory(std::forward(if_true)); + FalseFactory false_factory(std::forward(if_false)); if (condition_) { Construct(&if_true_, true_factory.Make()); } else { diff --git a/deps/grpc/src/core/lib/promise/join.h b/deps/grpc/src/core/lib/promise/join.h index 17123945966..070cea7e3bf 100644 --- a/deps/grpc/src/core/lib/promise/join.h +++ b/deps/grpc/src/core/lib/promise/join.h @@ -19,6 +19,8 @@ #include #include +#include +#include #include "src/core/lib/promise/detail/join_state.h" #include "src/core/lib/promise/detail/promise_factory.h" @@ -131,6 +133,11 @@ class Join { return state_.PollOnce(); } + void ToProto(grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + state_.ToProto(grpc_channelz_v2_Promise_NORMAL, promise_proto, arena); + } + private: JoinState state_; }; @@ -145,21 +152,22 @@ struct WrapInTuple { } // namespace promise_detail template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Join -Join(Promise... promises) { - return promise_detail::Join(std::move(promises)...); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Join(Promise&&... promises) { + return promise_detail::Join...>( + std::forward(promises)...); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Join(F promise) { - return Map(std::move(promise), promise_detail::WrapInTuple{}); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Join(F&& promise) { + return Map(std::forward(promise), promise_detail::WrapInTuple{}); } template -inline auto JoinIter(Iter begin, Iter end, FactoryFn factory_fn) { +inline auto JoinIter(Iter begin, Iter end, FactoryFn&& factory_fn) { using Factory = - promise_detail::RepeatedPromiseFactory; - Factory factory(std::move(factory_fn)); + promise_detail::RepeatedPromiseFactory>; + Factory factory(std::forward(factory_fn)); using Promise = typename Factory::Promise; using Result = typename Promise::Result; using State = std::variant; diff --git a/deps/grpc/src/core/lib/promise/loop.h b/deps/grpc/src/core/lib/promise/loop.h index 925a369a523..9154c5892f4 100644 --- a/deps/grpc/src/core/lib/promise/loop.h +++ b/deps/grpc/src/core/lib/promise/loop.h @@ -17,6 +17,7 @@ #include +#include #include #include @@ -137,8 +138,8 @@ class Loop { public: using Result = typename promise_detail::LoopTraits::Result; - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Loop(F f) - : factory_(std::move(f)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Loop(F&& f) + : factory_(std::forward(f)) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION ~Loop() { if (started_) Destruct(&promise_); } @@ -223,18 +224,18 @@ Loop(F) -> Loop; // A version of Loop that yields the activity to another promise once per // iteration. template -auto YieldingLoop(F f) { - return Loop(std::move(f)); +auto YieldingLoop(F&& f) { + return Loop(std::forward(f)); } template -auto NTimes(size_t times, PromiseFactory promise_factory) { +auto NTimes(size_t times, PromiseFactory&& promise_factory) { DCHECK_GT(times, 1u); return Loop( [i = size_t{0}, times, promise_factory = promise_detail::RepeatedPromiseFactory( - std::move(promise_factory))]() mutable { + std::forward(promise_factory))]() mutable { return Seq(promise_factory.Make(i), [&i, times](auto result) { using Result = decltype(result); LoopCtl lc = std::move(result); @@ -246,16 +247,17 @@ auto NTimes(size_t times, PromiseFactory promise_factory) { } template -auto WhilstSuccessful(PromiseFactory promise_factory) { - return Loop([promise_factory = - promise_detail::RepeatedPromiseFactory( - std::move(promise_factory))]() mutable { - return Seq(promise_factory.Make(), [](auto result) { - using Result = decltype(result); - if (result.ok()) return LoopCtl(Continue()); - return LoopCtl(std::move(result)); - }); - }); +auto WhilstSuccessful(PromiseFactory&& promise_factory) { + return Loop( + [promise_factory = + promise_detail::RepeatedPromiseFactory( + std::forward(promise_factory))]() mutable { + return Seq(promise_factory.Make(), [](auto result) { + using Result = decltype(result); + if (result.ok()) return LoopCtl(Continue()); + return LoopCtl(std::move(result)); + }); + }); } } // namespace grpc_core diff --git a/deps/grpc/src/core/lib/promise/map.h b/deps/grpc/src/core/lib/promise/map.h index e3443b5cb73..7d2de4a5bee 100644 --- a/deps/grpc/src/core/lib/promise/map.h +++ b/deps/grpc/src/core/lib/promise/map.h @@ -135,8 +135,8 @@ class Map { using PromiseType = promise_detail::PromiseLike; public: - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Map(Promise promise, Fn fn) - : promise_(std::move(promise)), fn_(std::move(fn)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Map(Promise&& promise, Fn&& fn) + : promise_(std::forward(promise)), fn_(std::forward(fn)) {} Map(const Map&) = delete; Map& operator=(const Map&) = delete; @@ -185,9 +185,9 @@ class Map, Fn1> { using PromiseType = typename Map::PromiseType; public: - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Map(Map map, Fn1 fn1) + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Map(Map map, Fn1&& fn1) : promise_(std::move(map.promise_)), - fn_(FusedFn(std::move(map.fn_), std::move(fn1))) {} + fn_(FusedFn(std::move(map.fn_), std::forward(fn1))) {} Map(const Map&) = delete; Map& operator=(const Map&) = delete; @@ -228,23 +228,25 @@ class Map, Fn1> { }; template -Map(Promise, Fn) -> Map; +Map(Promise&&, Fn&&) -> Map, std::decay_t>; // Maps a promise to a new promise that returns a tuple of the original result // and a bool indicating whether there was ever a Pending{} value observed from // polling. template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto CheckDelayed(Promise promise) { - using P = promise_detail::PromiseLike; - return [delayed = false, promise = P(std::move(promise))]() mutable - -> Poll> { - auto r = promise(); - if (r.pending()) { - delayed = true; - return Pending{}; - } - return std::tuple(std::move(r.value()), delayed); - }; +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto CheckDelayed( + Promise&& promise) { + using P = promise_detail::PromiseLike>; + return + [delayed = false, promise = P(std::forward(promise))]() mutable + -> Poll> { + auto r = promise(); + if (r.pending()) { + delayed = true; + return Pending{}; + } + return std::tuple(std::move(r.value()), delayed); + }; } // Callable that takes a tuple and returns one element @@ -266,7 +268,7 @@ namespace promise_detail { template class MapError { public: - explicit MapError(Fn fn) : fn_(std::move(fn)) {} + explicit MapError(Fn&& fn) : fn_(std::forward(fn)) {} absl::Status operator()(absl::Status status) { if (status.ok()) return status; return fn_(std::move(status)); @@ -284,33 +286,37 @@ class MapError { // Map status->better status in the case of errors template -auto MapErrors(Promise promise, Fn fn) { - return Map(std::move(promise), promise_detail::MapError(std::move(fn))); +auto MapErrors(Promise&& promise, Fn&& fn) { + return Map(std::forward(promise), + promise_detail::MapError>(std::forward(fn))); } // Simple mapper to add a prefix to the message of an error template -auto AddErrorPrefix(absl::string_view prefix, Promise promise) { - return MapErrors(std::move(promise), [prefix](absl::Status status) { - absl::Status out(status.code(), absl::StrCat(prefix, status.message())); - status.ForEachPayload( - [&out](absl::string_view name, const absl::Cord& value) { - out.SetPayload(name, value); - }); - return out; - }); +auto AddErrorPrefix(absl::string_view prefix, Promise&& promise) { + return MapErrors( + std::forward(promise), [prefix](absl::Status status) { + absl::Status out(status.code(), absl::StrCat(prefix, status.message())); + status.ForEachPayload( + [&out](absl::string_view name, const absl::Cord& value) { + out.SetPayload(name, value); + }); + return out; + }); } template -auto AddGeneratedErrorPrefix(Gen prefix, Promise promise) { - return MapErrors(std::move(promise), [prefix](absl::Status status) { - absl::Status out(status.code(), absl::StrCat(prefix(), status.message())); - status.ForEachPayload( - [&out](absl::string_view name, const absl::Cord& value) { - out.SetPayload(name, value); - }); - return out; - }); +auto AddGeneratedErrorPrefix(Gen&& prefix, Promise&& promise) { + return MapErrors(std::forward(promise), + [prefix = std::forward(prefix)](absl::Status status) { + absl::Status out(status.code(), + absl::StrCat(prefix(), status.message())); + status.ForEachPayload([&out](absl::string_view name, + const absl::Cord& value) { + out.SetPayload(name, value); + }); + return out; + }); } // Input : A promise that resolves to Type T @@ -321,26 +327,27 @@ auto AddGeneratedErrorPrefix(Gen prefix, Promise promise) { // gives an error. DiscardResult helps to discard the return value of the // promise. template -auto DiscardResult(Promise promise) { - return Map(std::move(promise), [](auto) {}); +auto DiscardResult(Promise&& promise) { + return Map(std::forward(promise), [](auto) {}); } // Given a promise, and N values, return a tuple with the resolved promise // first, and then the N values stapled to it. template -auto Staple(Promise promise, Values&&... values) { - return Map(std::move(promise), [values = std::tuple(std::forward( - values)...)](auto first_value) mutable { - return std::tuple_cat(std::tuple(std::move(first_value)), - std::move(values)); - }); +auto Staple(Promise&& promise, Values&&... values) { + return Map(std::forward(promise), + [values = std::tuple(std::forward(values)...)]( + auto first_value) mutable { + return std::tuple_cat(std::tuple(std::move(first_value)), + std::move(values)); + }); } // Same as Staple, but assumes a StatusOr, and returns X, Values. template -auto TryStaple(Promise promise, Values&&... values) { +auto TryStaple(Promise&& promise, Values&&... values) { return Map( - std::move(promise), + std::forward(promise), [values = std::tuple(std::forward>( values)...)](auto first_value) mutable -> absl::StatusOr< diff --git a/deps/grpc/src/core/lib/promise/mpsc.h b/deps/grpc/src/core/lib/promise/mpsc.h index cfd014969c7..bd04c954645 100644 --- a/deps/grpc/src/core/lib/promise/mpsc.h +++ b/deps/grpc/src/core/lib/promise/mpsc.h @@ -264,8 +264,8 @@ template class Center : public RefCounted, NonPolymorphicRefCount> { private: struct Node final : public Mpsc::Node { - explicit Node(uint32_t tokens, T value) - : Mpsc::Node(tokens), value(std::move(value)) {} + explicit Node(uint32_t tokens, T&& value) + : Mpsc::Node(tokens), value(std::forward(value)) {} T value; }; @@ -316,12 +316,13 @@ class Center : public RefCounted, NonPolymorphicRefCount> { RefCountedPtr> center_; }; - auto Send(T value, uint32_t tokens) { - return mpsc_.Send(new Node(tokens, std::move(value))); + auto Send(T&& value, uint32_t tokens) { + return mpsc_.Send(new Node(tokens, std::forward(value))); } - StatusFlag UnbufferedImmediateSend(T value, uint32_t tokens) { - return mpsc_.UnbufferedImmediateSend(new Node(tokens, std::move(value))); + StatusFlag UnbufferedImmediateSend(T&& value, uint32_t tokens) { + return mpsc_.UnbufferedImmediateSend( + new Node(tokens, std::forward(value))); } auto Next() { @@ -392,13 +393,13 @@ class MpscSender { // The promise returned is thread safe. We can use multiple send calls // in parallel to generate multiple such send promises and these promises can // be run in parallel in a thread safe way. - auto Send(T t, uint32_t tokens) { - return Map(center_->Send(std::move(t), tokens), + auto Send(T&& t, uint32_t tokens) { + return Map(center_->Send(std::forward(t), tokens), [c = center_](auto x) { return x; }); } - StatusFlag UnbufferedImmediateSend(T t, uint32_t tokens) { - return center_->UnbufferedImmediateSend(std::move(t), tokens); + StatusFlag UnbufferedImmediateSend(T&& t, uint32_t tokens) { + return center_->UnbufferedImmediateSend(std::forward(t), tokens); } private: diff --git a/deps/grpc/src/core/lib/promise/observable.h b/deps/grpc/src/core/lib/promise/observable.h index bf761943f7a..c1eddacbd65 100644 --- a/deps/grpc/src/core/lib/promise/observable.h +++ b/deps/grpc/src/core/lib/promise/observable.h @@ -31,8 +31,8 @@ template class Observable { public: // We need to assign a value initially. - explicit Observable(T initial) - : state_(MakeRefCounted(std::move(initial))) {} + explicit Observable(T&& initial) + : state_(MakeRefCounted(std::forward(initial))) {} // Update the value to something new. Awakes any waiters. void Set(T value) { state_->Set(std::move(value)); } @@ -41,8 +41,8 @@ class Observable { // that value. // is_acceptable is any invocable that takes a `const T&` and returns a bool. template - auto NextWhen(F is_acceptable) { - return ObserverWhen(state_, std::move(is_acceptable)); + auto NextWhen(F&& is_acceptable) { + return ObserverWhen(state_, std::forward(is_acceptable)); } // Returns a promise that resolves to a T when the value becomes != current. @@ -157,9 +157,9 @@ class Observable { template class ObserverWhen : public Observer { public: - ObserverWhen(RefCountedPtr state, F is_acceptable) + ObserverWhen(RefCountedPtr state, F&& is_acceptable) : Observer(std::move(state)), - is_acceptable_(std::move(is_acceptable)) {} + is_acceptable_(std::forward(is_acceptable)) {} ObserverWhen(ObserverWhen&& other) noexcept : Observer(std::move(other)), diff --git a/deps/grpc/src/core/lib/promise/party.h b/deps/grpc/src/core/lib/promise/party.h index b54696c400e..a682cb081cd 100644 --- a/deps/grpc/src/core/lib/promise/party.h +++ b/deps/grpc/src/core/lib/promise/party.h @@ -280,10 +280,12 @@ class Party : public Activity, private Wakeable { // spawning of promises is expected to be serialized by some external entity // (usually this is a Seq running on a different party). template - void Spawn(Factory factory) { + void Spawn(Factory&& factory) { auto empty_completion = [](Empty) {}; - next_.Push(new ParticipantImpl( - "SpawnSerializer", std::move(factory), empty_completion)); + next_.Push(new ParticipantImpl, + decltype(empty_completion)>( + "SpawnSerializer", std::forward(factory), + std::move(empty_completion))); party_->WakeupFromState( party_->state_.load(std::memory_order_relaxed), wakeup_mask_); } @@ -338,11 +340,11 @@ class Party : public Activity, private Wakeable { // A party can hold upto 16 unresolved promises at a time. However, this // number might change in the future. template - void Spawn(absl::string_view name, Factory promise_factory, - OnComplete on_complete); + void Spawn(absl::string_view name, Factory&& promise_factory, + OnComplete&& on_complete); template - auto SpawnWaitable(absl::string_view name, Factory factory); + auto SpawnWaitable(absl::string_view name, Factory&& factory); void Orphan() final { Crash("unused"); } @@ -430,10 +432,10 @@ class Party : public Activity, private Wakeable { using Promise = typename Factory::Promise; public: - ParticipantImpl(absl::string_view, SuppliedFactory promise_factory, - OnComplete on_complete) - : on_complete_(std::move(on_complete)) { - Construct(&factory_, std::move(promise_factory)); + ParticipantImpl(absl::string_view, SuppliedFactory&& promise_factory, + OnComplete&& on_complete) + : on_complete_(std::forward(on_complete)) { + Construct(&factory_, std::forward(promise_factory)); } ~ParticipantImpl() { if (!started_) { @@ -492,8 +494,9 @@ class Party : public Activity, private Wakeable { using Result = typename Promise::Result; public: - PromiseParticipantImpl(absl::string_view, SuppliedFactory promise_factory) { - Construct(&factory_, std::move(promise_factory)); + PromiseParticipantImpl(absl::string_view, + SuppliedFactory&& promise_factory) { + Construct(&factory_, std::forward(promise_factory)); } ~PromiseParticipantImpl() { @@ -716,18 +719,21 @@ struct ContextSubclass { }; template -void Party::Spawn(absl::string_view name, Factory promise_factory, - OnComplete on_complete) { +void Party::Spawn(absl::string_view name, Factory&& promise_factory, + OnComplete&& on_complete) { GRPC_TRACE_LOG(party_state, INFO) << "PARTY[" << this << "]: spawn " << name; - MaybeAsyncAddParticipant(new ParticipantImpl( - name, std::move(promise_factory), std::move(on_complete))); + MaybeAsyncAddParticipant( + new ParticipantImpl, std::decay_t>( + name, std::forward(promise_factory), + std::forward(on_complete))); } template -auto Party::SpawnWaitable(absl::string_view name, Factory promise_factory) { +auto Party::SpawnWaitable(absl::string_view name, Factory&& promise_factory) { GRPC_TRACE_LOG(party_state, INFO) << "PARTY[" << this << "]: spawn " << name; - auto participant = MakeRefCounted>( - name, std::move(promise_factory)); + auto participant = + MakeRefCounted>>( + name, std::forward(promise_factory)); Participant* p = participant->Ref().release(); MaybeAsyncAddParticipant(p); return [participant = std::move(participant)]() mutable { diff --git a/deps/grpc/src/core/lib/promise/poll.h b/deps/grpc/src/core/lib/promise/poll.h index f26a5bd55de..30b4592093a 100644 --- a/deps/grpc/src/core/lib/promise/poll.h +++ b/deps/grpc/src/core/lib/promise/poll.h @@ -248,27 +248,27 @@ struct PollCastImpl> { template struct PollCastImpl::is_poll()>> { GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll Cast(U&& poll) { - return Poll(T(std::move(poll))); + return Poll(T(std::forward(poll))); } }; template struct PollCastImpl { GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll Cast(T&& poll) { - return Poll(std::move(poll)); + return Poll(std::forward(poll)); } }; template struct PollCastImpl> { GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll Cast(Poll&& poll) { - return std::move(poll); + return std::forward>(poll); } }; template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll poll_cast(U poll) { - return PollCastImpl::Cast(std::move(poll)); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll poll_cast(U&& poll) { + return PollCastImpl::Cast(std::forward(poll)); } template diff --git a/deps/grpc/src/core/lib/promise/prioritized_race.h b/deps/grpc/src/core/lib/promise/prioritized_race.h index 885fad3d6ea..ce7c86e344d 100644 --- a/deps/grpc/src/core/lib/promise/prioritized_race.h +++ b/deps/grpc/src/core/lib/promise/prioritized_race.h @@ -28,8 +28,8 @@ class TwoPartyPrioritizedRace { public: using Result = decltype(std::declval()()); - explicit TwoPartyPrioritizedRace(A a, B b) - : a_(std::move(a)), b_(std::move(b)) {} + explicit TwoPartyPrioritizedRace(A&& a, B&& b) + : a_(std::forward(a)), b_(std::forward(b)) {} Result operator()() { // Check the priority promise. @@ -63,17 +63,20 @@ class PrioritizedRace : public TwoPartyPrioritizedRace> { public: using Result = decltype(std::declval()()); - explicit PrioritizedRace(Promise promise, Promises... promises) - : TwoPartyPrioritizedRace>( - std::move(promise), - PrioritizedRace(std::move(promises)...)) {} + explicit PrioritizedRace(Promise&& promise, Promises&&... promises) + : TwoPartyPrioritizedRace, + std::decay_t>>( + std::forward(promise), + PrioritizedRace...>( + std::forward(promises)...)) {} }; template class PrioritizedRace { public: using Result = decltype(std::declval()()); - explicit PrioritizedRace(Promise promise) : promise_(std::move(promise)) {} + explicit PrioritizedRace(Promise&& promise) + : promise_(std::forward(promise)) {} Result operator()() { return promise_(); } private: diff --git a/deps/grpc/src/core/lib/promise/promise.h b/deps/grpc/src/core/lib/promise/promise.h index 7aded4bca0e..6cc155478e9 100644 --- a/deps/grpc/src/core/lib/promise/promise.h +++ b/deps/grpc/src/core/lib/promise/promise.h @@ -36,9 +36,10 @@ using Promise = absl::AnyInvocable()>; // Helper to execute a promise immediately and return either the result or // nothing. template -auto NowOrNever(Promise promise) - -> std::optional::Result> { - auto r = promise_detail::PromiseLike(std::move(promise))(); +auto NowOrNever(Promise&& promise) -> std::optional< + typename promise_detail::PromiseLike>::Result> { + auto r = promise_detail::PromiseLike>( + std::forward(promise))(); if (auto* p = r.value_if_ready()) { return std::move(*p); } @@ -56,9 +57,13 @@ namespace promise_detail { template class Immediate { public: - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Immediate(T value) + template + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Immediate(U value) : value_(std::move(value)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Immediate(T&& value) + : value_(std::forward(value)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Poll operator()() { return std::move(value_); } @@ -70,9 +75,10 @@ class Immediate { // Return \a value immediately template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Immediate -Immediate(T value) { - return promise_detail::Immediate(std::move(value)); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Immediate< + std::decay_t> +Immediate(T&& value) { + return promise_detail::Immediate>(std::forward(value)); } // Return status Ok immediately @@ -88,10 +94,9 @@ struct ImmediateOkStatus { // should fail to compile. When modifying this code these should be uncommented // and their miscompilation verified. template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto AssertResultType(F f) -> - typename std::enable_if>::value, - F>::type { - return f; +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto AssertResultType(F&& f) -> + typename std::enable_if_t>, F> { + return std::forward(f); } template diff --git a/deps/grpc/src/core/lib/promise/race.h b/deps/grpc/src/core/lib/promise/race.h index 968c515df5d..f05007562bc 100644 --- a/deps/grpc/src/core/lib/promise/race.h +++ b/deps/grpc/src/core/lib/promise/race.h @@ -35,9 +35,10 @@ class Race { public: using Result = decltype(std::declval()()); - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise promise, - Promises... promises) - : promise_(std::move(promise)), next_(std::move(promises)...) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise&& promise, + Promises&&... promises) + : promise_(std::forward(promise)), + next_(std::forward(promises)...) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Result operator()() { // Check our own promise. @@ -79,8 +80,8 @@ template class Race { public: using Result = decltype(std::declval()()); - GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise promise) - : promise_(std::move(promise)) {} + GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise&& promise) + : promise_(std::forward(promise)) {} GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Result operator()() { return promise_(); } diff --git a/deps/grpc/src/core/lib/promise/seq.h b/deps/grpc/src/core/lib/promise/seq.h index 2a8970a4ff7..930495e39d3 100644 --- a/deps/grpc/src/core/lib/promise/seq.h +++ b/deps/grpc/src/core/lib/promise/seq.h @@ -90,8 +90,8 @@ struct SeqTraits { } template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll - CheckResultAndRunNext(PriorResult prior, RunNext run_next) { - return run_next(std::move(prior)); + CheckResultAndRunNext(PriorResult&& prior, RunNext run_next) { + return run_next(std::forward(prior)); } }; @@ -128,113 +128,146 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline F Seq(F functor) { } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Seq Seq( - F0 f0, F1 f1, DebugLocation whence = {}) { - return promise_detail::Seq(std::move(f0), std::move(f1), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq( + F0&& f0, F1&& f1, DebugLocation whence = {}) { + return promise_detail::Seq, std::decay_t>( + std::forward(f0), std::forward(f1), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Seq Seq( - F0 f0, F1 f1, F2 f2, DebugLocation whence = {}) { - return promise_detail::Seq(std::move(f0), std::move(f1), - std::move(f2), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq( + F0&& f0, F1&& f1, F2&& f2, DebugLocation whence = {}) { + return promise_detail::Seq, std::decay_t, + std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Seq -Seq(F0 f0, F1 f1, F2 f2, F3 f3, DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq( + F0&& f0, F1&& f1, F2&& f2, F3&& f3, DebugLocation whence = {}) { + return promise_detail::Seq, std::decay_t, + std::decay_t, std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Seq -Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, DebugLocation whence = {}) { - return promise_detail::Seq(std::move(f0), std::move(f1), - std::move(f2), std::move(f3), - std::move(f4), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq( + F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4, DebugLocation whence = {}) { + return promise_detail::Seq, std::decay_t, + std::decay_t, std::decay_t, + std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Seq -Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), std::move(f4), - std::move(f5), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq( + F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4, F5&& f5, + DebugLocation whence = {}) { + return promise_detail::Seq, std::decay_t, + std::decay_t, std::decay_t, + std::decay_t, std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), std::forward(f5), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION - promise_detail::Seq - Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, - DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), std::move(f4), - std::move(f5), std::move(f6), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2, + F3&& f3, F4&& f4, F5&& f5, + F6&& f6, + DebugLocation whence = {}) { + return promise_detail::Seq< + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), std::forward(f5), + std::forward(f6), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION - promise_detail::Seq - Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7, - DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), std::move(f4), - std::move(f5), std::move(f6), std::move(f7), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2, + F3&& f3, F4&& f4, F5&& f5, + F6&& f6, F7&& f7, + DebugLocation whence = {}) { + return promise_detail::Seq< + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t, std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), std::forward(f5), + std::forward(f6), std::forward(f7), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION - promise_detail::Seq - Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7, F8 f8, - DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), std::move(f4), - std::move(f5), std::move(f6), std::move(f7), std::move(f8), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2, + F3&& f3, F4&& f4, F5&& f5, + F6&& f6, F7&& f7, F8&& f8, + DebugLocation whence = {}) { + return promise_detail::Seq< + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), std::forward(f5), + std::forward(f6), std::forward(f7), std::forward(f8), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION - promise_detail::Seq - Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7, F8 f8, F9 f9, - DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), std::move(f4), - std::move(f5), std::move(f6), std::move(f7), std::move(f8), std::move(f9), - whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2, + F3&& f3, F4&& f4, F5&& f5, + F6&& f6, F7&& f7, F8&& f8, + F9&& f9, + DebugLocation whence = {}) { + return promise_detail::Seq< + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), std::forward(f5), + std::forward(f6), std::forward(f7), std::forward(f8), + std::forward(f9), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION - promise_detail::Seq - Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7, F8 f8, F9 f9, - F10 f10, DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), std::move(f4), - std::move(f5), std::move(f6), std::move(f7), std::move(f8), std::move(f9), - std::move(f10), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2, + F3&& f3, F4&& f4, F5&& f5, + F6&& f6, F7&& f7, F8&& f8, + F9&& f9, F10&& f10, + DebugLocation whence = {}) { + return promise_detail::Seq< + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), std::forward(f5), + std::forward(f6), std::forward(f7), std::forward(f8), + std::forward(f9), std::forward(f10), whence); } template -GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION - promise_detail::Seq - Seq(F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7, F8 f8, F9 f9, - F10 f10, F11 f11, DebugLocation whence = {}) { - return promise_detail::Seq( - std::move(f0), std::move(f1), std::move(f2), std::move(f3), std::move(f4), - std::move(f5), std::move(f6), std::move(f7), std::move(f8), std::move(f9), - std::move(f10), std::move(f11), whence); +GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2, + F3&& f3, F4&& f4, F5&& f5, + F6&& f6, F7&& f7, F8&& f8, + F9&& f9, F10&& f10, F11&& f11, + DebugLocation whence = {}) { + return promise_detail::Seq< + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t, std::decay_t, + std::decay_t, std::decay_t, std::decay_t, std::decay_t>( + std::forward(f0), std::forward(f1), std::forward(f2), + std::forward(f3), std::forward(f4), std::forward(f5), + std::forward(f6), std::forward(f7), std::forward(f8), + std::forward(f9), std::forward(f10), std::forward(f11), + whence); } // Execute a sequence of operations of unknown length. @@ -245,10 +278,12 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION // return argument; template GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto SeqIter(Iter begin, Iter end, - Argument argument, - Factory factory) { - return promise_detail::SeqIter( - begin, end, std::move(factory), std::move(argument)); + Argument&& argument, + Factory&& factory) { + return promise_detail::SeqIter, + std::decay_t>( + begin, end, std::forward(factory), + std::forward(argument)); } } // namespace grpc_core diff --git a/deps/grpc/src/core/lib/promise/try_join.h b/deps/grpc/src/core/lib/promise/try_join.h index d82bcad7c3c..c0cc87f7f6a 100644 --- a/deps/grpc/src/core/lib/promise/try_join.h +++ b/deps/grpc/src/core/lib/promise/try_join.h @@ -18,6 +18,8 @@ #include #include +#include +#include #include #include "src/core/lib/promise/detail/join_state.h" @@ -231,6 +233,11 @@ class TryJoin { return state_.PollOnce(); } + void ToProto(grpc_channelz_v2_Promise* promise_proto, + upb_Arena* arena) const { + state_.ToProto(grpc_channelz_v2_Promise_TRY, promise_proto, arena); + } + private: JoinState, Promises...> state_; }; @@ -247,15 +254,16 @@ struct WrapInStatusOrTuple { } // namespace promise_detail template