diff --git a/c-deps/libroach/protos/roachpb/api.pb.cc b/c-deps/libroach/protos/roachpb/api.pb.cc index 02c983e9dcaf..d0de91fa9459 100644 --- a/c-deps/libroach/protos/roachpb/api.pb.cc +++ b/c-deps/libroach/protos/roachpb/api.pb.cc @@ -10352,6 +10352,7 @@ const int EndTxnRequest::kInternalCommitTriggerFieldNumber; const int EndTxnRequest::kLockSpansFieldNumber; const int EndTxnRequest::kInFlightWritesFieldNumber; const int EndTxnRequest::kRequire1PcFieldNumber; +const int EndTxnRequest::kDeprecatedCanCommitAtHigherTimestampFieldNumber; const int EndTxnRequest::kPoisonFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 @@ -10530,6 +10531,20 @@ bool EndTxnRequest::MergePartialFromCodedStream( break; } + // bool deprecated_can_commit_at_higher_timestamp = 8; + case 8: { + if (static_cast< ::google::protobuf::uint8>(tag) == + static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &deprecated_can_commit_at_higher_timestamp_))); + } else { + goto handle_unusual; + } + break; + } + // bool poison = 9; case 9: { if (static_cast< ::google::protobuf::uint8>(tag) == @@ -10615,6 +10630,11 @@ void EndTxnRequest::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->require_1pc(), output); } + // bool deprecated_can_commit_at_higher_timestamp = 8; + if (this->deprecated_can_commit_at_higher_timestamp() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->deprecated_can_commit_at_higher_timestamp(), output); + } + // bool poison = 9; if (this->poison() != 0) { ::google::protobuf::internal::WireFormatLite::WriteBool(9, this->poison(), output); @@ -10688,6 +10708,11 @@ size_t EndTxnRequest::ByteSizeLong() const { total_size += 1 + 1; } + // bool deprecated_can_commit_at_higher_timestamp = 8; + if (this->deprecated_can_commit_at_higher_timestamp() != 0) { + total_size += 1 + 1; + } + // bool poison = 9; if (this->poison() != 0) { total_size += 1 + 1; @@ -10727,6 +10752,9 @@ void EndTxnRequest::MergeFrom(const EndTxnRequest& from) { if (from.require_1pc() != 0) { set_require_1pc(from.require_1pc()); } + if (from.deprecated_can_commit_at_higher_timestamp() != 0) { + set_deprecated_can_commit_at_higher_timestamp(from.deprecated_can_commit_at_higher_timestamp()); + } if (from.poison() != 0) { set_poison(from.poison()); } @@ -10756,6 +10784,7 @@ void EndTxnRequest::InternalSwap(EndTxnRequest* other) { swap(internal_commit_trigger_, other->internal_commit_trigger_); swap(commit_, other->commit_); swap(require_1pc_, other->require_1pc_); + swap(deprecated_can_commit_at_higher_timestamp_, other->deprecated_can_commit_at_higher_timestamp_); swap(poison_, other->poison_); _internal_metadata_.Swap(&other->_internal_metadata_); } diff --git a/c-deps/libroach/protos/roachpb/api.pb.h b/c-deps/libroach/protos/roachpb/api.pb.h index 4dc5e17c903d..08a6da200ba5 100644 --- a/c-deps/libroach/protos/roachpb/api.pb.h +++ b/c-deps/libroach/protos/roachpb/api.pb.h @@ -4421,6 +4421,12 @@ class EndTxnRequest : public ::google::protobuf::MessageLite /* @@protoc_inserti bool require_1pc() const; void set_require_1pc(bool value); + // bool deprecated_can_commit_at_higher_timestamp = 8; + void clear_deprecated_can_commit_at_higher_timestamp(); + static const int kDeprecatedCanCommitAtHigherTimestampFieldNumber = 8; + bool deprecated_can_commit_at_higher_timestamp() const; + void set_deprecated_can_commit_at_higher_timestamp(bool value); + // bool poison = 9; void clear_poison(); static const int kPoisonFieldNumber = 9; @@ -4438,6 +4444,7 @@ class EndTxnRequest : public ::google::protobuf::MessageLite /* @@protoc_inserti ::cockroach::roachpb::InternalCommitTrigger* internal_commit_trigger_; bool commit_; bool require_1pc_; + bool deprecated_can_commit_at_higher_timestamp_; bool poison_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::protobuf_roachpb_2fapi_2eproto::TableStruct; @@ -20820,6 +20827,20 @@ inline void EndTxnRequest::set_require_1pc(bool value) { // @@protoc_insertion_point(field_set:cockroach.roachpb.EndTxnRequest.require_1pc) } +// bool deprecated_can_commit_at_higher_timestamp = 8; +inline void EndTxnRequest::clear_deprecated_can_commit_at_higher_timestamp() { + deprecated_can_commit_at_higher_timestamp_ = false; +} +inline bool EndTxnRequest::deprecated_can_commit_at_higher_timestamp() const { + // @@protoc_insertion_point(field_get:cockroach.roachpb.EndTxnRequest.deprecated_can_commit_at_higher_timestamp) + return deprecated_can_commit_at_higher_timestamp_; +} +inline void EndTxnRequest::set_deprecated_can_commit_at_higher_timestamp(bool value) { + + deprecated_can_commit_at_higher_timestamp_ = value; + // @@protoc_insertion_point(field_set:cockroach.roachpb.EndTxnRequest.deprecated_can_commit_at_higher_timestamp) +} + // bool poison = 9; inline void EndTxnRequest::clear_poison() { poison_ = false; diff --git a/docs/generated/http/full.md b/docs/generated/http/full.md index 2fb9bb9ff7db..ec72a8deb2a0 100644 --- a/docs/generated/http/full.md +++ b/docs/generated/http/full.md @@ -1431,7 +1431,9 @@ information about the resources on a node used by that table. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| node_id | [string](#cockroach.server.serverpb.HotRangesRequest-string) | | If left empty, hot ranges for all nodes/stores will be returned. | +| node_id | [string](#cockroach.server.serverpb.HotRangesRequest-string) | | NodeID indicates which node to query for a hot range report. It is posssible to populate any node ID; if the node receiving the request is not the target node, it will forward the request to the target node. + +If left empty, the request is forwarded to every node in the cluster. | @@ -1446,8 +1448,8 @@ information about the resources on a node used by that table. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| node_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | NodeID is the node that submitted all the requests. | -| hot_ranges_by_node_id | [HotRangesResponse.HotRangesByNodeIdEntry](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRangesByNodeIdEntry) | repeated | | +| node_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | NodeID is the node that received the HotRangesRequest and forwarded requests to the selected target node(s). | +| hot_ranges_by_node_id | [HotRangesResponse.HotRangesByNodeIdEntry](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRangesByNodeIdEntry) | repeated | HotRangesByNodeID contains a hot range report for each selected target node ID in the HotRangesRequest. | @@ -1471,8 +1473,10 @@ information about the resources on a node used by that table. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| error_message | [string](#cockroach.server.serverpb.HotRangesResponse-string) | | | -| stores | [HotRangesResponse.StoreResponse](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.StoreResponse) | repeated | | +| error_message | [string](#cockroach.server.serverpb.HotRangesResponse-string) | | ErrorMessage is set to a non-empty string if this target node was unable to produce a hot range report. + +The contents of this string indicates the cause of the failure. | +| stores | [HotRangesResponse.StoreResponse](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.StoreResponse) | repeated | Stores contains the hot ranges report if no error was encountered. There is one part to the report for each store in the target node. | @@ -1483,8 +1487,8 @@ information about the resources on a node used by that table. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| store_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | | -| hot_ranges | [HotRangesResponse.HotRange](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRange) | repeated | | +| store_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | StoreID identifies the store for which the report was produced. | +| hot_ranges | [HotRangesResponse.HotRange](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRange) | repeated | HotRanges is the hot ranges report for this store on the target node. | @@ -1495,8 +1499,10 @@ information about the resources on a node used by that table. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| desc | [cockroach.roachpb.RangeDescriptor](#cockroach.server.serverpb.HotRangesResponse-cockroach.roachpb.RangeDescriptor) | | | -| queries_per_second | [double](#cockroach.server.serverpb.HotRangesResponse-double) | | | +| desc | [cockroach.roachpb.RangeDescriptor](#cockroach.server.serverpb.HotRangesResponse-cockroach.roachpb.RangeDescriptor) | | Desc is the descriptor of the range for which the report was produced. + +Note: this field is generally RESERVED and will likely be removed or replaced in a later version. See: https://github.com/cockroachdb/cockroach/issues/53212 | +| queries_per_second | [double](#cockroach.server.serverpb.HotRangesResponse-double) | | QueriesPerSecond is the recent number of queries per second on this range. | diff --git a/docs/generated/http/hotranges.md b/docs/generated/http/hotranges.md index 77a609489733..b9680d7cc005 100644 --- a/docs/generated/http/hotranges.md +++ b/docs/generated/http/hotranges.md @@ -7,7 +7,9 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| node_id | [string](#cockroach.server.serverpb.HotRangesRequest-string) | | If left empty, hot ranges for all nodes/stores will be returned. | +| node_id | [string](#cockroach.server.serverpb.HotRangesRequest-string) | | NodeID indicates which node to query for a hot range report. It is posssible to populate any node ID; if the node receiving the request is not the target node, it will forward the request to the target node. + +If left empty, the request is forwarded to every node in the cluster. | @@ -22,8 +24,8 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| node_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | NodeID is the node that submitted all the requests. | -| hot_ranges_by_node_id | [HotRangesResponse.HotRangesByNodeIdEntry](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRangesByNodeIdEntry) | repeated | | +| node_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | NodeID is the node that received the HotRangesRequest and forwarded requests to the selected target node(s). | +| hot_ranges_by_node_id | [HotRangesResponse.HotRangesByNodeIdEntry](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRangesByNodeIdEntry) | repeated | HotRangesByNodeID contains a hot range report for each selected target node ID in the HotRangesRequest. | @@ -47,8 +49,10 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| error_message | [string](#cockroach.server.serverpb.HotRangesResponse-string) | | | -| stores | [HotRangesResponse.StoreResponse](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.StoreResponse) | repeated | | +| error_message | [string](#cockroach.server.serverpb.HotRangesResponse-string) | | ErrorMessage is set to a non-empty string if this target node was unable to produce a hot range report. + +The contents of this string indicates the cause of the failure. | +| stores | [HotRangesResponse.StoreResponse](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.StoreResponse) | repeated | Stores contains the hot ranges report if no error was encountered. There is one part to the report for each store in the target node. | @@ -59,8 +63,8 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| store_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | | -| hot_ranges | [HotRangesResponse.HotRange](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRange) | repeated | | +| store_id | [int32](#cockroach.server.serverpb.HotRangesResponse-int32) | | StoreID identifies the store for which the report was produced. | +| hot_ranges | [HotRangesResponse.HotRange](#cockroach.server.serverpb.HotRangesResponse-cockroach.server.serverpb.HotRangesResponse.HotRange) | repeated | HotRanges is the hot ranges report for this store on the target node. | @@ -71,8 +75,10 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| desc | [cockroach.roachpb.RangeDescriptor](#cockroach.server.serverpb.HotRangesResponse-cockroach.roachpb.RangeDescriptor) | | | -| queries_per_second | [double](#cockroach.server.serverpb.HotRangesResponse-double) | | | +| desc | [cockroach.roachpb.RangeDescriptor](#cockroach.server.serverpb.HotRangesResponse-cockroach.roachpb.RangeDescriptor) | | Desc is the descriptor of the range for which the report was produced. + +Note: this field is generally RESERVED and will likely be removed or replaced in a later version. See: https://github.com/cockroachdb/cockroach/issues/53212 | +| queries_per_second | [double](#cockroach.server.serverpb.HotRangesResponse-double) | | QueriesPerSecond is the recent number of queries per second on this range. | diff --git a/go.mod b/go.mod index f8bb10ac1685..544576476e81 100644 --- a/go.mod +++ b/go.mod @@ -35,13 +35,13 @@ require ( github.com/cockroachdb/cmux v0.0.0-20170110192607-30d10be49292 github.com/cockroachdb/cockroach-go v0.0.0-20200504194139-73ffeee90b62 github.com/cockroachdb/crlfmt v0.0.0-20200116191136-a78e1c207bc0 - github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5 + github.com/cockroachdb/datadriven v1.0.0 github.com/cockroachdb/errors v1.6.1 github.com/cockroachdb/go-test-teamcity v0.0.0-20191211140407-cff980ad0a55 github.com/cockroachdb/gostdlib v1.13.0 github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f - github.com/cockroachdb/pebble v0.0.0-20200814004841-77c18adb0ee3 - github.com/cockroachdb/redact v0.0.0-20200622112456-cd282804bbd3 + github.com/cockroachdb/pebble v0.0.0-20200817204059-a24bc6c83054 + github.com/cockroachdb/redact v1.0.2 github.com/cockroachdb/returncheck v0.0.0-20200612231554-92cdbca611dd github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 github.com/cockroachdb/stress v0.0.0-20170808184505-29b5d31b4c3a @@ -98,7 +98,7 @@ require ( github.com/kisielk/gotool v1.0.0 github.com/knz/go-libedit v1.10.1 github.com/knz/strtime v0.0.0-20200318182718-be999391ffa9 - github.com/kr/pretty v0.2.0 + github.com/kr/pretty v0.2.1 github.com/kr/text v0.2.0 github.com/leanovate/gopter v0.2.5-0.20190402064358-634a59d12406 github.com/lib/pq v1.8.0 @@ -146,14 +146,14 @@ require ( github.com/zabawaba99/go-gitignore v0.0.0-20200117185801-39e6bddfb292 go.etcd.io/etcd v0.0.0-00010101000000-000000000000 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 - golang.org/x/exp v0.0.0-20200513190911-00229845015e + golang.org/x/exp v0.0.0-20200819202907-27b6b2ade93b golang.org/x/lint v0.0.0-20200130185559-910be7a94367 golang.org/x/mod v0.3.0 // indirect golang.org/x/net v0.0.0-20200602114024-627f9648deb9 golang.org/x/oauth2 v0.0.0-20190115181402-5dab4167f31c golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e - golang.org/x/sys v0.0.0-20200817155316-9781c653f443 + golang.org/x/sys v0.0.0-20200821140526-fda516888d29 golang.org/x/text v0.3.3 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 golang.org/x/tools v0.0.0-20200702044944-0cc1aa72b347 diff --git a/go.sum b/go.sum index 2bf2f7210632..6bbff9befb7d 100644 --- a/go.sum +++ b/go.sum @@ -122,7 +122,6 @@ github.com/broady/gogeohash v0.0.0-20120525094510-7b2c40d64042/go.mod h1:f1L9YvX github.com/cenkalti/backoff v2.1.1+incompatible h1:tKJnvO2kl0zmb/jA5UKAt4VoEVw1qxKWjE/Bpp46npY= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 h1:JLaf/iINcLyjwbtTsCJjc6rtlASgHeIJPrB6QmwURnA= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= @@ -141,8 +140,8 @@ github.com/cockroachdb/cockroach-go v0.0.0-20200504194139-73ffeee90b62/go.mod h1 github.com/cockroachdb/crlfmt v0.0.0-20200116191136-a78e1c207bc0 h1:O4yb+RtkmDaXFlHSBpZodXaghfTd3Prdea0nk0eZCT4= github.com/cockroachdb/crlfmt v0.0.0-20200116191136-a78e1c207bc0/go.mod h1:uY/PY/C5c2cIFaeWGjdZSd0eptkmXiX5vd92GMZZ50M= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5 h1:xD/lrqdvwsc+O2bjSSi3YqY73Ke3LAiSCx49aCesA0E= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/datadriven v1.0.0 h1:uhZrAfEayBecH2w2tZmhe20HJ7hDvrrA4x2Bg9YdZKM= +github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= github.com/cockroachdb/errors v1.2.4 h1:Lap807SXTH5tri2TivECb/4abUkMZC9zRoLarvcKDqs= github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/errors v1.6.1 h1:GqOx5BYPdco9HPaoUuy8W53kZsSEbPu5P/d4WLhanmM= @@ -159,10 +158,12 @@ github.com/cockroachdb/grpc-gateway v1.14.6-0.20200519165156-52697fc4a249 h1:pZu github.com/cockroachdb/grpc-gateway v1.14.6-0.20200519165156-52697fc4a249/go.mod h1:UJ0EZAp832vCd54Wev9N1BMKEyvcZ5+IM0AwDrnlkEc= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/cockroachdb/pebble v0.0.0-20200814004841-77c18adb0ee3 h1:ldllxzWS2OC6KatCsBBxrzKxx6LwKnO2jS0/2glSecM= -github.com/cockroachdb/pebble v0.0.0-20200814004841-77c18adb0ee3/go.mod h1:hU7vhtrqonEphNF+xt8/lHdaBprxmV1h8BOGrd9XwmQ= +github.com/cockroachdb/pebble v0.0.0-20200817204059-a24bc6c83054 h1:ofiweQN/jGUZxD3zMGT4YFMpsHoinTfWLN7YCjLxiA4= +github.com/cockroachdb/pebble v0.0.0-20200817204059-a24bc6c83054/go.mod h1:hU7vhtrqonEphNF+xt8/lHdaBprxmV1h8BOGrd9XwmQ= github.com/cockroachdb/redact v0.0.0-20200622112456-cd282804bbd3 h1:2+dpIJzYMSbLi0587YXpi8tOJT52qCOI/1I0UNThc/I= github.com/cockroachdb/redact v0.0.0-20200622112456-cd282804bbd3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/redact v1.0.2 h1:bRktqHBXPqI+9bkOx0ikn9RS09G9k83oAdLx6rXRVTQ= +github.com/cockroachdb/redact v1.0.2/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/returncheck v0.0.0-20200612231554-92cdbca611dd h1:KFOt5I9nEKZgCnOSmy8r4Oykh8BYQO8bFOTgHDS8YZA= github.com/cockroachdb/returncheck v0.0.0-20200612231554-92cdbca611dd/go.mod h1:AN708GD2FFeLgUHMbD58YPe4Nw8GG//3rwgyG4L9gR0= github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 h1:IKgmqgMQlVJIZj19CdocBeSfSaiCbEBZGKODaixqtHM= @@ -490,8 +491,8 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -767,6 +768,8 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200513190911-00229845015e h1:rMqLP+9XLy+LdbCXHjJHAmTfXCr93W7oruWA6Hq1Alc= golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20200819202907-27b6b2ade93b h1:mG6QmvvjXuINUadc3FD3LA1TR4tpjWHocTUZHD86KIw= +golang.org/x/exp v0.0.0-20200819202907-27b6b2ade93b/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -848,8 +851,8 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443 h1:X18bCaipMcoJGm27Nv7zr4XYPKGUy92GtqboKC2Hxaw= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200821140526-fda516888d29 h1:mNuhGagCf3lDDm5C0376C/sxh6V7fy9WbdEu/YDNA04= +golang.org/x/sys v0.0.0-20200821140526-fda516888d29/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= diff --git a/pkg/kv/kvclient/kvcoord/dist_sender.go b/pkg/kv/kvclient/kvcoord/dist_sender.go index 5c0f57a037f2..6ad957168f62 100644 --- a/pkg/kv/kvclient/kvcoord/dist_sender.go +++ b/pkg/kv/kvclient/kvcoord/dist_sender.go @@ -640,6 +640,17 @@ func splitBatchAndCheckForRefreshSpans( }() if hasRefreshSpans { ba.CanForwardReadTimestamp = false + + // If the final part contains an EndTxn request, unset its + // DeprecatedCanCommitAtHigherTimestamp flag as well. + lastPart := parts[len(parts)-1] + if et := lastPart[len(lastPart)-1].GetEndTxn(); et != nil { + etCopy := *et + etCopy.DeprecatedCanCommitAtHigherTimestamp = false + lastPart = append([]roachpb.RequestUnion(nil), lastPart...) + lastPart[len(lastPart)-1].MustSetInner(&etCopy) + parts[len(parts)-1] = lastPart + } } } return parts @@ -662,6 +673,19 @@ func unsetCanForwardReadTimestampFlag(ctx context.Context, ba *roachpb.BatchRequ if roachpb.NeedsRefresh(req.GetInner()) { // Unset the flag. ba.CanForwardReadTimestamp = false + + // We would need to also unset the DeprecatedCanCommitAtHigherTimestamp + // flag on any EndTxn request in the batch, but it turns out that + // because we call this function when a batch is split across + // ranges, we'd already have bailed if the EndTxn wasn't a parallel + // commit — and if it was a parallel commit then we must not have + // any requests that need to refresh (see + // txnCommitter.canCommitInParallel). Assert this for our own + // sanity. + if _, ok := ba.GetArg(roachpb.EndTxn); ok { + log.Fatalf(ctx, "batch unexpected contained requests "+ + "that need to refresh and an EndTxn request: %s", ba.String()) + } return } } diff --git a/pkg/kv/kvclient/kvcoord/txn_interceptor_committer.go b/pkg/kv/kvclient/kvcoord/txn_interceptor_committer.go index 8cb8dab9ebaf..efbf7f87d1ea 100644 --- a/pkg/kv/kvclient/kvcoord/txn_interceptor_committer.go +++ b/pkg/kv/kvclient/kvcoord/txn_interceptor_committer.go @@ -467,8 +467,10 @@ func makeTxnCommitExplicitLocked( // Construct a new batch with just an EndTxn request. ba := roachpb.BatchRequest{} ba.Header = roachpb.Header{Txn: txn, CanForwardReadTimestamp: canFwdRTS} - et := roachpb.EndTxnRequest{Commit: true, LockSpans: lockSpans} + et := roachpb.EndTxnRequest{Commit: true} et.Key = txn.Key + et.LockSpans = lockSpans + et.DeprecatedCanCommitAtHigherTimestamp = canFwdRTS ba.Add(&et) _, pErr := s.SendLocked(ctx, ba) diff --git a/pkg/kv/kvclient/kvcoord/txn_interceptor_committer_test.go b/pkg/kv/kvclient/kvcoord/txn_interceptor_committer_test.go index 5938c35db665..ac77ff0d3407 100644 --- a/pkg/kv/kvclient/kvcoord/txn_interceptor_committer_test.go +++ b/pkg/kv/kvclient/kvcoord/txn_interceptor_committer_test.go @@ -354,9 +354,11 @@ func TestTxnCommitterAsyncExplicitCommitTask(t *testing.T) { etArgs.InFlightWrites = []roachpb.SequencedWrite{{Key: keyA, Sequence: 1}} ba.Add(&putArgs, &etArgs) - // Set the CanForwardReadTimestamp flag so we can make sure that these are - // propagated to the async explicit commit task. + // Set the CanForwardReadTimestamp and DeprecatedCanCommitAtHigherTimestamp + // flags so we can make sure that these are propagated to the async explicit + // commit task. ba.Header.CanForwardReadTimestamp = true + etArgs.DeprecatedCanCommitAtHigherTimestamp = true explicitCommitCh := make(chan struct{}) mockSender.MockSend(func(ba roachpb.BatchRequest) (*roachpb.BatchResponse, *roachpb.Error) { @@ -367,6 +369,7 @@ func TestTxnCommitterAsyncExplicitCommitTask(t *testing.T) { et := ba.Requests[1].GetInner().(*roachpb.EndTxnRequest) require.True(t, et.Commit) + require.True(t, et.DeprecatedCanCommitAtHigherTimestamp) require.Len(t, et.InFlightWrites, 1) require.Equal(t, roachpb.SequencedWrite{Key: keyA, Sequence: 1}, et.InFlightWrites[0]) @@ -385,6 +388,7 @@ func TestTxnCommitterAsyncExplicitCommitTask(t *testing.T) { et := ba.Requests[0].GetInner().(*roachpb.EndTxnRequest) require.True(t, et.Commit) + require.True(t, et.DeprecatedCanCommitAtHigherTimestamp) require.Len(t, et.InFlightWrites, 0) br = ba.CreateReply() diff --git a/pkg/kv/kvclient/kvcoord/txn_interceptor_pipeliner_test.go b/pkg/kv/kvclient/kvcoord/txn_interceptor_pipeliner_test.go index e3c25be71d3f..d11fcb12d9af 100644 --- a/pkg/kv/kvclient/kvcoord/txn_interceptor_pipeliner_test.go +++ b/pkg/kv/kvclient/kvcoord/txn_interceptor_pipeliner_test.go @@ -52,6 +52,11 @@ func (m *mockLockedSender) MockSend( m.mockFn = fn } +// Reset resets the mockLockedSender mocking function to a no-op. +func (m *mockLockedSender) Reset() { + m.mockFn = nil +} + // ChainMockSend sets a series of mocking functions on the mockLockedSender. // The provided mocking functions are set in the order that they are provided // and a given mocking function is set after the previous one has been called. diff --git a/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher.go b/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher.go index 996c9b579734..5737f6a4c387 100644 --- a/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher.go +++ b/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher.go @@ -164,6 +164,10 @@ func (sr *txnSpanRefresher) SendLocked( // Set the batch's CanForwardReadTimestamp flag. ba.CanForwardReadTimestamp = sr.canForwardReadTimestampWithoutRefresh(ba.Txn) + if rArgs, hasET := ba.GetArg(roachpb.EndTxn); hasET { + et := rArgs.(*roachpb.EndTxnRequest) + et.DeprecatedCanCommitAtHigherTimestamp = ba.CanForwardReadTimestamp + } // Attempt a refresh before sending the batch. ba, pErr := sr.maybeRefreshPreemptively(ctx, ba) diff --git a/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher_test.go b/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher_test.go index 405441fd43ce..3639c01cbe45 100644 --- a/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher_test.go +++ b/pkg/kv/kvclient/kvcoord/txn_interceptor_span_refresher_test.go @@ -1070,6 +1070,151 @@ func TestTxnSpanRefresherAssignsCanForwardReadTimestamp(t *testing.T) { require.False(t, tsr.refreshInvalid) } +// TestTxnSpanRefresherAssignsCanCommitAtHigherTimestamp tests that the +// txnSpanRefresher assigns the CanCommitAtHigherTimestamp flag on EndTxn +// requests, along with the CanForwardReadTimestamp on Batch headers. +func TestTxnSpanRefresherAssignsCanCommitAtHigherTimestamp(t *testing.T) { + defer leaktest.AfterTest(t)() + defer log.Scope(t).Close(t) + ctx := context.Background() + tsr, mockSender := makeMockTxnSpanRefresher() + + txn := makeTxnProto() + keyA, keyB := roachpb.Key("a"), roachpb.Key("b") + keyC, keyD := roachpb.Key("c"), roachpb.Key("d") + + // Send an EndTxn request. Should set DeprecatedCanCommitAtHigherTimestamp + // and CanForwardReadTimestamp flags. + var ba roachpb.BatchRequest + ba.Header = roachpb.Header{Txn: &txn} + ba.Add(&roachpb.EndTxnRequest{}) + + mockSender.MockSend(func(ba roachpb.BatchRequest) (*roachpb.BatchResponse, *roachpb.Error) { + require.Len(t, ba.Requests, 1) + require.True(t, ba.CanForwardReadTimestamp) + require.IsType(t, &roachpb.EndTxnRequest{}, ba.Requests[0].GetInner()) + require.True(t, ba.Requests[0].GetEndTxn().DeprecatedCanCommitAtHigherTimestamp) + + br := ba.CreateReply() + br.Txn = ba.Txn + return br, nil + }) + + br, pErr := tsr.SendLocked(ctx, ba) + require.Nil(t, pErr) + require.NotNil(t, br) + + // Send an EndTxn request for a transaction with a fixed commit timestamp. + // Should NOT set DeprecatedCanCommitAtHigherTimestamp and + // CanForwardReadTimestamp flags. + txnFixed := txn.Clone() + txnFixed.CommitTimestampFixed = true + var baFixed roachpb.BatchRequest + baFixed.Header = roachpb.Header{Txn: txnFixed} + baFixed.Add(&roachpb.EndTxnRequest{}) + + mockSender.MockSend(func(ba roachpb.BatchRequest) (*roachpb.BatchResponse, *roachpb.Error) { + require.Len(t, ba.Requests, 1) + require.False(t, ba.CanForwardReadTimestamp) + require.IsType(t, &roachpb.EndTxnRequest{}, ba.Requests[0].GetInner()) + require.False(t, ba.Requests[0].GetEndTxn().DeprecatedCanCommitAtHigherTimestamp) + + br = ba.CreateReply() + br.Txn = ba.Txn + return br, nil + }) + + br, pErr = tsr.SendLocked(ctx, baFixed) + require.Nil(t, pErr) + require.NotNil(t, br) + + // Send a batch below the limit to collect refresh spans. + ba.Requests = nil + scanArgs := roachpb.ScanRequest{RequestHeader: roachpb.RequestHeader{Key: keyA, EndKey: keyB}} + ba.Add(&scanArgs) + + mockSender.Reset() + br, pErr = tsr.SendLocked(ctx, ba) + require.Nil(t, pErr) + require.NotNil(t, br) + require.Equal(t, []roachpb.Span{scanArgs.Span()}, tsr.refreshFootprint.asSlice()) + require.False(t, tsr.refreshInvalid) + + // Send another EndTxn request. Should NOT set + // DeprecatedCanCommitAtHigherTimestamp and CanForwardReadTimestamp flags. + ba.Requests = nil + ba.Add(&roachpb.EndTxnRequest{}) + + mockSender.MockSend(func(ba roachpb.BatchRequest) (*roachpb.BatchResponse, *roachpb.Error) { + require.Len(t, ba.Requests, 1) + require.False(t, ba.CanForwardReadTimestamp) + require.IsType(t, &roachpb.EndTxnRequest{}, ba.Requests[0].GetInner()) + require.False(t, ba.Requests[0].GetEndTxn().DeprecatedCanCommitAtHigherTimestamp) + + br = ba.CreateReply() + br.Txn = ba.Txn + return br, nil + }) + + br, pErr = tsr.SendLocked(ctx, ba) + require.Nil(t, pErr) + require.NotNil(t, br) + + // Send another batch. + ba.Requests = nil + scanArgs2 := roachpb.ScanRequest{RequestHeader: roachpb.RequestHeader{Key: keyC, EndKey: keyD}} + ba.Add(&scanArgs2) + + mockSender.Reset() + br, pErr = tsr.SendLocked(ctx, ba) + require.Nil(t, pErr) + require.NotNil(t, br) + + // Send another EndTxn request. Still should NOT set + // DeprecatedCanCommitAtHigherTimestamp and CanForwardReadTimestamp flags. + ba.Requests = nil + ba.Add(&roachpb.EndTxnRequest{}) + + mockSender.MockSend(func(ba roachpb.BatchRequest) (*roachpb.BatchResponse, *roachpb.Error) { + require.Len(t, ba.Requests, 1) + require.False(t, ba.CanForwardReadTimestamp) + require.IsType(t, &roachpb.EndTxnRequest{}, ba.Requests[0].GetInner()) + require.False(t, ba.Requests[0].GetEndTxn().DeprecatedCanCommitAtHigherTimestamp) + + br = ba.CreateReply() + br.Txn = ba.Txn + return br, nil + }) + + br, pErr = tsr.SendLocked(ctx, ba) + require.Nil(t, pErr) + require.NotNil(t, br) + + // Increment the transaction's epoch and send another EndTxn request. Should + // set DeprecatedCanCommitAtHigherTimestamp and CanForwardReadTimestamp + // flags. + ba.Requests = nil + ba.Add(&roachpb.EndTxnRequest{}) + + mockSender.MockSend(func(ba roachpb.BatchRequest) (*roachpb.BatchResponse, *roachpb.Error) { + require.Len(t, ba.Requests, 1) + require.True(t, ba.CanForwardReadTimestamp) + require.IsType(t, &roachpb.EndTxnRequest{}, ba.Requests[0].GetInner()) + require.True(t, ba.Requests[0].GetEndTxn().DeprecatedCanCommitAtHigherTimestamp) + + br = ba.CreateReply() + br.Txn = ba.Txn + return br, nil + }) + + tsr.epochBumpedLocked() + br, pErr = tsr.SendLocked(ctx, ba) + require.Nil(t, pErr) + require.NotNil(t, br) + require.Equal(t, []roachpb.Span(nil), tsr.refreshFootprint.asSlice()) + require.False(t, tsr.refreshInvalid) +} + // TestTxnSpanRefresherEpochIncrement tests that a txnSpanRefresher's refresh // spans and span validity status are reset on an epoch increment. func TestTxnSpanRefresherEpochIncrement(t *testing.T) { diff --git a/pkg/roachpb/api.pb.go b/pkg/roachpb/api.pb.go index 934d6b64ca31..8f5ce0a8b01a 100644 --- a/pkg/roachpb/api.pb.go +++ b/pkg/roachpb/api.pb.go @@ -72,7 +72,7 @@ func (x ReadConsistencyType) String() string { return proto.EnumName(ReadConsistencyType_name, int32(x)) } func (ReadConsistencyType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{0} } // ScanFormat is an enumeration of the available response formats for MVCCScan @@ -100,7 +100,7 @@ func (x ScanFormat) String() string { return proto.EnumName(ScanFormat_name, int32(x)) } func (ScanFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{1} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{1} } type ChecksumMode int32 @@ -147,7 +147,7 @@ func (x ChecksumMode) String() string { return proto.EnumName(ChecksumMode_name, int32(x)) } func (ChecksumMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{2} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{2} } // PushTxnType determines what action to take when pushing a transaction. @@ -178,7 +178,7 @@ func (x PushTxnType) String() string { return proto.EnumName(PushTxnType_name, int32(x)) } func (PushTxnType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{3} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{3} } type ExternalStorageProvider int32 @@ -219,7 +219,7 @@ func (x ExternalStorageProvider) String() string { return proto.EnumName(ExternalStorageProvider_name, int32(x)) } func (ExternalStorageProvider) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{4} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{4} } type MVCCFilter int32 @@ -242,7 +242,7 @@ func (x MVCCFilter) String() string { return proto.EnumName(MVCCFilter_name, int32(x)) } func (MVCCFilter) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{5} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{5} } type ResponseHeader_ResumeReason int32 @@ -268,7 +268,7 @@ func (x ResponseHeader_ResumeReason) String() string { return proto.EnumName(ResponseHeader_ResumeReason_name, int32(x)) } func (ResponseHeader_ResumeReason) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{1, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{1, 0} } type CheckConsistencyResponse_Status int32 @@ -310,7 +310,7 @@ func (x CheckConsistencyResponse_Status) String() string { return proto.EnumName(CheckConsistencyResponse_Status_name, int32(x)) } func (CheckConsistencyResponse_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{25, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{25, 0} } // RequestHeader is supplied with every storage node request. @@ -331,7 +331,7 @@ func (m *RequestHeader) Reset() { *m = RequestHeader{} } func (m *RequestHeader) String() string { return proto.CompactTextString(m) } func (*RequestHeader) ProtoMessage() {} func (*RequestHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{0} } func (m *RequestHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -402,7 +402,7 @@ func (m *ResponseHeader) Reset() { *m = ResponseHeader{} } func (m *ResponseHeader) String() string { return proto.CompactTextString(m) } func (*ResponseHeader) ProtoMessage() {} func (*ResponseHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{1} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{1} } func (m *ResponseHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -436,7 +436,7 @@ func (m *GetRequest) Reset() { *m = GetRequest{} } func (m *GetRequest) String() string { return proto.CompactTextString(m) } func (*GetRequest) ProtoMessage() {} func (*GetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{2} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{2} } func (m *GetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -479,7 +479,7 @@ func (m *GetResponse) Reset() { *m = GetResponse{} } func (m *GetResponse) String() string { return proto.CompactTextString(m) } func (*GetResponse) ProtoMessage() {} func (*GetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{3} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{3} } func (m *GetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -522,7 +522,7 @@ func (m *PutRequest) Reset() { *m = PutRequest{} } func (m *PutRequest) String() string { return proto.CompactTextString(m) } func (*PutRequest) ProtoMessage() {} func (*PutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{4} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{4} } func (m *PutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -556,7 +556,7 @@ func (m *PutResponse) Reset() { *m = PutResponse{} } func (m *PutResponse) String() string { return proto.CompactTextString(m) } func (*PutResponse) ProtoMessage() {} func (*PutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{5} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{5} } func (m *PutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -638,7 +638,7 @@ func (m *ConditionalPutRequest) Reset() { *m = ConditionalPutRequest{} } func (m *ConditionalPutRequest) String() string { return proto.CompactTextString(m) } func (*ConditionalPutRequest) ProtoMessage() {} func (*ConditionalPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{6} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{6} } func (m *ConditionalPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -673,7 +673,7 @@ func (m *ConditionalPutResponse) Reset() { *m = ConditionalPutResponse{} func (m *ConditionalPutResponse) String() string { return proto.CompactTextString(m) } func (*ConditionalPutResponse) ProtoMessage() {} func (*ConditionalPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{7} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{7} } func (m *ConditionalPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -719,7 +719,7 @@ func (m *InitPutRequest) Reset() { *m = InitPutRequest{} } func (m *InitPutRequest) String() string { return proto.CompactTextString(m) } func (*InitPutRequest) ProtoMessage() {} func (*InitPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{8} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{8} } func (m *InitPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -753,7 +753,7 @@ func (m *InitPutResponse) Reset() { *m = InitPutResponse{} } func (m *InitPutResponse) String() string { return proto.CompactTextString(m) } func (*InitPutResponse) ProtoMessage() {} func (*InitPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{9} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{9} } func (m *InitPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -793,7 +793,7 @@ func (m *IncrementRequest) Reset() { *m = IncrementRequest{} } func (m *IncrementRequest) String() string { return proto.CompactTextString(m) } func (*IncrementRequest) ProtoMessage() {} func (*IncrementRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{10} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{10} } func (m *IncrementRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -830,7 +830,7 @@ func (m *IncrementResponse) Reset() { *m = IncrementResponse{} } func (m *IncrementResponse) String() string { return proto.CompactTextString(m) } func (*IncrementResponse) ProtoMessage() {} func (*IncrementResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{11} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{11} } func (m *IncrementResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -864,7 +864,7 @@ func (m *DeleteRequest) Reset() { *m = DeleteRequest{} } func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRequest) ProtoMessage() {} func (*DeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{12} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{12} } func (m *DeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -898,7 +898,7 @@ func (m *DeleteResponse) Reset() { *m = DeleteResponse{} } func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } func (*DeleteResponse) ProtoMessage() {} func (*DeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{13} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{13} } func (m *DeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -950,7 +950,7 @@ func (m *DeleteRangeRequest) Reset() { *m = DeleteRangeRequest{} } func (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRangeRequest) ProtoMessage() {} func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{14} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{14} } func (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -987,7 +987,7 @@ func (m *DeleteRangeResponse) Reset() { *m = DeleteRangeResponse{} } func (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteRangeResponse) ProtoMessage() {} func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{15} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{15} } func (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1042,7 +1042,7 @@ func (m *ClearRangeRequest) Reset() { *m = ClearRangeRequest{} } func (m *ClearRangeRequest) String() string { return proto.CompactTextString(m) } func (*ClearRangeRequest) ProtoMessage() {} func (*ClearRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{16} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{16} } func (m *ClearRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1076,7 +1076,7 @@ func (m *ClearRangeResponse) Reset() { *m = ClearRangeResponse{} } func (m *ClearRangeResponse) String() string { return proto.CompactTextString(m) } func (*ClearRangeResponse) ProtoMessage() {} func (*ClearRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{17} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{17} } func (m *ClearRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1117,7 +1117,7 @@ func (m *RevertRangeRequest) Reset() { *m = RevertRangeRequest{} } func (m *RevertRangeRequest) String() string { return proto.CompactTextString(m) } func (*RevertRangeRequest) ProtoMessage() {} func (*RevertRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{18} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{18} } func (m *RevertRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1151,7 +1151,7 @@ func (m *RevertRangeResponse) Reset() { *m = RevertRangeResponse{} } func (m *RevertRangeResponse) String() string { return proto.CompactTextString(m) } func (*RevertRangeResponse) ProtoMessage() {} func (*RevertRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{19} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{19} } func (m *RevertRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1202,7 +1202,7 @@ func (m *ScanRequest) Reset() { *m = ScanRequest{} } func (m *ScanRequest) String() string { return proto.CompactTextString(m) } func (*ScanRequest) ProtoMessage() {} func (*ScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{20} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{20} } func (m *ScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1254,7 +1254,7 @@ func (m *ScanResponse) Reset() { *m = ScanResponse{} } func (m *ScanResponse) String() string { return proto.CompactTextString(m) } func (*ScanResponse) ProtoMessage() {} func (*ScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{21} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{21} } func (m *ScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1305,7 +1305,7 @@ func (m *ReverseScanRequest) Reset() { *m = ReverseScanRequest{} } func (m *ReverseScanRequest) String() string { return proto.CompactTextString(m) } func (*ReverseScanRequest) ProtoMessage() {} func (*ReverseScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{22} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{22} } func (m *ReverseScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1357,7 +1357,7 @@ func (m *ReverseScanResponse) Reset() { *m = ReverseScanResponse{} } func (m *ReverseScanResponse) String() string { return proto.CompactTextString(m) } func (*ReverseScanResponse) ProtoMessage() {} func (*ReverseScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{23} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{23} } func (m *ReverseScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1410,7 +1410,7 @@ func (m *CheckConsistencyRequest) Reset() { *m = CheckConsistencyRequest func (m *CheckConsistencyRequest) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyRequest) ProtoMessage() {} func (*CheckConsistencyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{24} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{24} } func (m *CheckConsistencyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1447,7 +1447,7 @@ func (m *CheckConsistencyResponse) Reset() { *m = CheckConsistencyRespon func (m *CheckConsistencyResponse) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyResponse) ProtoMessage() {} func (*CheckConsistencyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{25} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{25} } func (m *CheckConsistencyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1491,7 +1491,7 @@ func (m *CheckConsistencyResponse_Result) Reset() { *m = CheckConsistenc func (m *CheckConsistencyResponse_Result) String() string { return proto.CompactTextString(m) } func (*CheckConsistencyResponse_Result) ProtoMessage() {} func (*CheckConsistencyResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{25, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{25, 0} } func (m *CheckConsistencyResponse_Result) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1539,7 +1539,7 @@ func (m *RecomputeStatsRequest) Reset() { *m = RecomputeStatsRequest{} } func (m *RecomputeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsRequest) ProtoMessage() {} func (*RecomputeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{26} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{26} } func (m *RecomputeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1575,7 +1575,7 @@ func (m *RecomputeStatsResponse) Reset() { *m = RecomputeStatsResponse{} func (m *RecomputeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RecomputeStatsResponse) ProtoMessage() {} func (*RecomputeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{27} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{27} } func (m *RecomputeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1651,6 +1651,15 @@ type EndTxnRequest struct { // reliably for these transactions - a TransactionStatusError might be // returned instead if 1PC execution fails. Require1PC bool `protobuf:"varint,6,opt,name=require_1pc,json=require1pc,proto3" json:"require_1pc,omitempty"` + // DeprecatedCanCommitAtHigherTimestamp indicates that the batch this EndTxn + // is part of can be evaluated at a higher timestamp than the transaction's + // read timestamp. This is set by the client if the transaction has not + // performed any reads that must be refreshed prior to sending this current + // batch. When set, it allows the server to handle pushes and write too old + // conditions locally. + // TODO(nvanbenschoten): remove this in favor of can_forward_read_timestamp + // in v21.1. The flag is not read in v20.2. + DeprecatedCanCommitAtHigherTimestamp bool `protobuf:"varint,8,opt,name=deprecated_can_commit_at_higher_timestamp,json=deprecatedCanCommitAtHigherTimestamp,proto3" json:"deprecated_can_commit_at_higher_timestamp,omitempty"` // True to indicate that lock spans should be resolved with poison=true. // This is used when the transaction is being aborted independently of the // main thread of client operation, as in the case of an asynchronous abort @@ -1663,7 +1672,7 @@ func (m *EndTxnRequest) Reset() { *m = EndTxnRequest{} } func (m *EndTxnRequest) String() string { return proto.CompactTextString(m) } func (*EndTxnRequest) ProtoMessage() {} func (*EndTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{28} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{28} } func (m *EndTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1709,7 +1718,7 @@ func (m *EndTxnResponse) Reset() { *m = EndTxnResponse{} } func (m *EndTxnResponse) String() string { return proto.CompactTextString(m) } func (*EndTxnResponse) ProtoMessage() {} func (*EndTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{29} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{29} } func (m *EndTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1770,7 +1779,7 @@ func (m *AdminSplitRequest) Reset() { *m = AdminSplitRequest{} } func (m *AdminSplitRequest) String() string { return proto.CompactTextString(m) } func (*AdminSplitRequest) ProtoMessage() {} func (*AdminSplitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{30} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{30} } func (m *AdminSplitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1805,7 +1814,7 @@ func (m *AdminSplitResponse) Reset() { *m = AdminSplitResponse{} } func (m *AdminSplitResponse) String() string { return proto.CompactTextString(m) } func (*AdminSplitResponse) ProtoMessage() {} func (*AdminSplitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{31} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{31} } func (m *AdminSplitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1844,7 +1853,7 @@ func (m *AdminUnsplitRequest) Reset() { *m = AdminUnsplitRequest{} } func (m *AdminUnsplitRequest) String() string { return proto.CompactTextString(m) } func (*AdminUnsplitRequest) ProtoMessage() {} func (*AdminUnsplitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{32} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{32} } func (m *AdminUnsplitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1879,7 +1888,7 @@ func (m *AdminUnsplitResponse) Reset() { *m = AdminUnsplitResponse{} } func (m *AdminUnsplitResponse) String() string { return proto.CompactTextString(m) } func (*AdminUnsplitResponse) ProtoMessage() {} func (*AdminUnsplitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{33} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{33} } func (m *AdminUnsplitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1922,7 +1931,7 @@ func (m *AdminMergeRequest) Reset() { *m = AdminMergeRequest{} } func (m *AdminMergeRequest) String() string { return proto.CompactTextString(m) } func (*AdminMergeRequest) ProtoMessage() {} func (*AdminMergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{34} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{34} } func (m *AdminMergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1957,7 +1966,7 @@ func (m *AdminMergeResponse) Reset() { *m = AdminMergeResponse{} } func (m *AdminMergeResponse) String() string { return proto.CompactTextString(m) } func (*AdminMergeResponse) ProtoMessage() {} func (*AdminMergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{35} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{35} } func (m *AdminMergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1995,7 +2004,7 @@ func (m *AdminTransferLeaseRequest) Reset() { *m = AdminTransferLeaseReq func (m *AdminTransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseRequest) ProtoMessage() {} func (*AdminTransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{36} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{36} } func (m *AdminTransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2028,7 +2037,7 @@ func (m *AdminTransferLeaseResponse) Reset() { *m = AdminTransferLeaseRe func (m *AdminTransferLeaseResponse) String() string { return proto.CompactTextString(m) } func (*AdminTransferLeaseResponse) ProtoMessage() {} func (*AdminTransferLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{37} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{37} } func (m *AdminTransferLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2063,7 +2072,7 @@ func (m *ReplicationChange) Reset() { *m = ReplicationChange{} } func (m *ReplicationChange) String() string { return proto.CompactTextString(m) } func (*ReplicationChange) ProtoMessage() {} func (*ReplicationChange) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{38} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{38} } func (m *ReplicationChange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2121,7 +2130,7 @@ func (m *AdminChangeReplicasRequest) Reset() { *m = AdminChangeReplicasR func (m *AdminChangeReplicasRequest) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasRequest) ProtoMessage() {} func (*AdminChangeReplicasRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{39} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{39} } func (m *AdminChangeReplicasRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2156,7 +2165,7 @@ func (m *AdminChangeReplicasResponse) Reset() { *m = AdminChangeReplicas func (m *AdminChangeReplicasResponse) String() string { return proto.CompactTextString(m) } func (*AdminChangeReplicasResponse) ProtoMessage() {} func (*AdminChangeReplicasResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{40} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{40} } func (m *AdminChangeReplicasResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2193,7 +2202,7 @@ func (m *AdminRelocateRangeRequest) Reset() { *m = AdminRelocateRangeReq func (m *AdminRelocateRangeRequest) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeRequest) ProtoMessage() {} func (*AdminRelocateRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{41} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{41} } func (m *AdminRelocateRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2226,7 +2235,7 @@ func (m *AdminRelocateRangeResponse) Reset() { *m = AdminRelocateRangeRe func (m *AdminRelocateRangeResponse) String() string { return proto.CompactTextString(m) } func (*AdminRelocateRangeResponse) ProtoMessage() {} func (*AdminRelocateRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{42} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{42} } func (m *AdminRelocateRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2265,7 +2274,7 @@ func (m *HeartbeatTxnRequest) Reset() { *m = HeartbeatTxnRequest{} } func (m *HeartbeatTxnRequest) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnRequest) ProtoMessage() {} func (*HeartbeatTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{43} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{43} } func (m *HeartbeatTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2302,7 +2311,7 @@ func (m *HeartbeatTxnResponse) Reset() { *m = HeartbeatTxnResponse{} } func (m *HeartbeatTxnResponse) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnResponse) ProtoMessage() {} func (*HeartbeatTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{44} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{44} } func (m *HeartbeatTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2340,7 +2349,7 @@ func (m *GCRequest) Reset() { *m = GCRequest{} } func (m *GCRequest) String() string { return proto.CompactTextString(m) } func (*GCRequest) ProtoMessage() {} func (*GCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{45} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{45} } func (m *GCRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2374,7 +2383,7 @@ func (m *GCRequest_GCKey) Reset() { *m = GCRequest_GCKey{} } func (m *GCRequest_GCKey) String() string { return proto.CompactTextString(m) } func (*GCRequest_GCKey) ProtoMessage() {} func (*GCRequest_GCKey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{45, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{45, 0} } func (m *GCRequest_GCKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2408,7 +2417,7 @@ func (m *GCResponse) Reset() { *m = GCResponse{} } func (m *GCResponse) String() string { return proto.CompactTextString(m) } func (*GCResponse) ProtoMessage() {} func (*GCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{46} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{46} } func (m *GCResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2477,7 +2486,7 @@ func (m *PushTxnRequest) Reset() { *m = PushTxnRequest{} } func (m *PushTxnRequest) String() string { return proto.CompactTextString(m) } func (*PushTxnRequest) ProtoMessage() {} func (*PushTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{47} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{47} } func (m *PushTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2520,7 +2529,7 @@ func (m *PushTxnResponse) Reset() { *m = PushTxnResponse{} } func (m *PushTxnResponse) String() string { return proto.CompactTextString(m) } func (*PushTxnResponse) ProtoMessage() {} func (*PushTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{48} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{48} } func (m *PushTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2567,7 +2576,7 @@ func (m *RecoverTxnRequest) Reset() { *m = RecoverTxnRequest{} } func (m *RecoverTxnRequest) String() string { return proto.CompactTextString(m) } func (*RecoverTxnRequest) ProtoMessage() {} func (*RecoverTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{49} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{49} } func (m *RecoverTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2603,7 +2612,7 @@ func (m *RecoverTxnResponse) Reset() { *m = RecoverTxnResponse{} } func (m *RecoverTxnResponse) String() string { return proto.CompactTextString(m) } func (*RecoverTxnResponse) ProtoMessage() {} func (*RecoverTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{50} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{50} } func (m *RecoverTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2647,7 +2656,7 @@ func (m *QueryTxnRequest) Reset() { *m = QueryTxnRequest{} } func (m *QueryTxnRequest) String() string { return proto.CompactTextString(m) } func (*QueryTxnRequest) ProtoMessage() {} func (*QueryTxnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{51} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{51} } func (m *QueryTxnRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2691,7 +2700,7 @@ func (m *QueryTxnResponse) Reset() { *m = QueryTxnResponse{} } func (m *QueryTxnResponse) String() string { return proto.CompactTextString(m) } func (*QueryTxnResponse) ProtoMessage() {} func (*QueryTxnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{52} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{52} } func (m *QueryTxnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2751,7 +2760,7 @@ func (m *QueryIntentRequest) Reset() { *m = QueryIntentRequest{} } func (m *QueryIntentRequest) String() string { return proto.CompactTextString(m) } func (*QueryIntentRequest) ProtoMessage() {} func (*QueryIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{53} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{53} } func (m *QueryIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2787,7 +2796,7 @@ func (m *QueryIntentResponse) Reset() { *m = QueryIntentResponse{} } func (m *QueryIntentResponse) String() string { return proto.CompactTextString(m) } func (*QueryIntentResponse) ProtoMessage() {} func (*QueryIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{54} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{54} } func (m *QueryIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2834,7 +2843,7 @@ func (m *ResolveIntentRequest) Reset() { *m = ResolveIntentRequest{} } func (m *ResolveIntentRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRequest) ProtoMessage() {} func (*ResolveIntentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{55} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{55} } func (m *ResolveIntentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2869,7 +2878,7 @@ func (m *ResolveIntentResponse) Reset() { *m = ResolveIntentResponse{} } func (m *ResolveIntentResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentResponse) ProtoMessage() {} func (*ResolveIntentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{56} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{56} } func (m *ResolveIntentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2920,7 +2929,7 @@ func (m *ResolveIntentRangeRequest) Reset() { *m = ResolveIntentRangeReq func (m *ResolveIntentRangeRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeRequest) ProtoMessage() {} func (*ResolveIntentRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{57} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{57} } func (m *ResolveIntentRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2955,7 +2964,7 @@ func (m *ResolveIntentRangeResponse) Reset() { *m = ResolveIntentRangeRe func (m *ResolveIntentRangeResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeResponse) ProtoMessage() {} func (*ResolveIntentRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{58} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{58} } func (m *ResolveIntentRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2992,7 +3001,7 @@ func (m *MergeRequest) Reset() { *m = MergeRequest{} } func (m *MergeRequest) String() string { return proto.CompactTextString(m) } func (*MergeRequest) ProtoMessage() {} func (*MergeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{59} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{59} } func (m *MergeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3026,7 +3035,7 @@ func (m *MergeResponse) Reset() { *m = MergeResponse{} } func (m *MergeResponse) String() string { return proto.CompactTextString(m) } func (*MergeResponse) ProtoMessage() {} func (*MergeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{60} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{60} } func (m *MergeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3071,7 +3080,7 @@ func (m *TruncateLogRequest) Reset() { *m = TruncateLogRequest{} } func (m *TruncateLogRequest) String() string { return proto.CompactTextString(m) } func (*TruncateLogRequest) ProtoMessage() {} func (*TruncateLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{61} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{61} } func (m *TruncateLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3105,7 +3114,7 @@ func (m *TruncateLogResponse) Reset() { *m = TruncateLogResponse{} } func (m *TruncateLogResponse) String() string { return proto.CompactTextString(m) } func (*TruncateLogResponse) ProtoMessage() {} func (*TruncateLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{62} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{62} } func (m *TruncateLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3149,7 +3158,7 @@ func (m *RequestLeaseRequest) Reset() { *m = RequestLeaseRequest{} } func (m *RequestLeaseRequest) String() string { return proto.CompactTextString(m) } func (*RequestLeaseRequest) ProtoMessage() {} func (*RequestLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{63} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{63} } func (m *RequestLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3198,7 +3207,7 @@ func (m *TransferLeaseRequest) Reset() { *m = TransferLeaseRequest{} } func (m *TransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*TransferLeaseRequest) ProtoMessage() {} func (*TransferLeaseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{64} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{64} } func (m *TransferLeaseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3235,7 +3244,7 @@ func (m *LeaseInfoRequest) Reset() { *m = LeaseInfoRequest{} } func (m *LeaseInfoRequest) String() string { return proto.CompactTextString(m) } func (*LeaseInfoRequest) ProtoMessage() {} func (*LeaseInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{65} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{65} } func (m *LeaseInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3272,7 +3281,7 @@ func (m *LeaseInfoResponse) Reset() { *m = LeaseInfoResponse{} } func (m *LeaseInfoResponse) String() string { return proto.CompactTextString(m) } func (*LeaseInfoResponse) ProtoMessage() {} func (*LeaseInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{66} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{66} } func (m *LeaseInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3307,7 +3316,7 @@ func (m *RequestLeaseResponse) Reset() { *m = RequestLeaseResponse{} } func (m *RequestLeaseResponse) String() string { return proto.CompactTextString(m) } func (*RequestLeaseResponse) ProtoMessage() {} func (*RequestLeaseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{67} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{67} } func (m *RequestLeaseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3362,7 +3371,7 @@ func (m *ComputeChecksumRequest) Reset() { *m = ComputeChecksumRequest{} func (m *ComputeChecksumRequest) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumRequest) ProtoMessage() {} func (*ComputeChecksumRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{68} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{68} } func (m *ComputeChecksumRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3399,7 +3408,7 @@ func (m *ComputeChecksumResponse) Reset() { *m = ComputeChecksumResponse func (m *ComputeChecksumResponse) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumResponse) ProtoMessage() {} func (*ComputeChecksumResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{69} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{69} } func (m *ComputeChecksumResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3439,7 +3448,7 @@ func (m *ExternalStorage) Reset() { *m = ExternalStorage{} } func (m *ExternalStorage) String() string { return proto.CompactTextString(m) } func (*ExternalStorage) ProtoMessage() {} func (*ExternalStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70} } func (m *ExternalStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3473,7 +3482,7 @@ func (m *ExternalStorage_LocalFilePath) Reset() { *m = ExternalStorage_L func (m *ExternalStorage_LocalFilePath) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_LocalFilePath) ProtoMessage() {} func (*ExternalStorage_LocalFilePath) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70, 0} } func (m *ExternalStorage_LocalFilePath) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3506,7 +3515,7 @@ func (m *ExternalStorage_Http) Reset() { *m = ExternalStorage_Http{} } func (m *ExternalStorage_Http) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Http) ProtoMessage() {} func (*ExternalStorage_Http) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70, 1} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70, 1} } func (m *ExternalStorage_Http) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3546,7 +3555,7 @@ func (m *ExternalStorage_S3) Reset() { *m = ExternalStorage_S3{} } func (m *ExternalStorage_S3) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_S3) ProtoMessage() {} func (*ExternalStorage_S3) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70, 2} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70, 2} } func (m *ExternalStorage_S3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3585,7 +3594,7 @@ func (m *ExternalStorage_GCS) Reset() { *m = ExternalStorage_GCS{} } func (m *ExternalStorage_GCS) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_GCS) ProtoMessage() {} func (*ExternalStorage_GCS) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70, 3} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70, 3} } func (m *ExternalStorage_GCS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3621,7 +3630,7 @@ func (m *ExternalStorage_Azure) Reset() { *m = ExternalStorage_Azure{} } func (m *ExternalStorage_Azure) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Azure) ProtoMessage() {} func (*ExternalStorage_Azure) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70, 4} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70, 4} } func (m *ExternalStorage_Azure) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3660,7 +3669,7 @@ func (m *ExternalStorage_Workload) Reset() { *m = ExternalStorage_Worklo func (m *ExternalStorage_Workload) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_Workload) ProtoMessage() {} func (*ExternalStorage_Workload) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70, 5} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70, 5} } func (m *ExternalStorage_Workload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3700,7 +3709,7 @@ func (m *ExternalStorage_FileTable) Reset() { *m = ExternalStorage_FileT func (m *ExternalStorage_FileTable) String() string { return proto.CompactTextString(m) } func (*ExternalStorage_FileTable) ProtoMessage() {} func (*ExternalStorage_FileTable) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{70, 6} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{70, 6} } func (m *ExternalStorage_FileTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3740,7 +3749,7 @@ func (m *WriteBatchRequest) Reset() { *m = WriteBatchRequest{} } func (m *WriteBatchRequest) String() string { return proto.CompactTextString(m) } func (*WriteBatchRequest) ProtoMessage() {} func (*WriteBatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{71} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{71} } func (m *WriteBatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3774,7 +3783,7 @@ func (m *WriteBatchResponse) Reset() { *m = WriteBatchResponse{} } func (m *WriteBatchResponse) String() string { return proto.CompactTextString(m) } func (*WriteBatchResponse) ProtoMessage() {} func (*WriteBatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{72} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{72} } func (m *WriteBatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3810,7 +3819,7 @@ func (m *FileEncryptionOptions) Reset() { *m = FileEncryptionOptions{} } func (m *FileEncryptionOptions) String() string { return proto.CompactTextString(m) } func (*FileEncryptionOptions) ProtoMessage() {} func (*FileEncryptionOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{73} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{73} } func (m *FileEncryptionOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3880,7 +3889,7 @@ func (m *ExportRequest) Reset() { *m = ExportRequest{} } func (m *ExportRequest) String() string { return proto.CompactTextString(m) } func (*ExportRequest) ProtoMessage() {} func (*ExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{74} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{74} } func (m *ExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3932,7 +3941,7 @@ func (m *BulkOpSummary) Reset() { *m = BulkOpSummary{} } func (m *BulkOpSummary) String() string { return proto.CompactTextString(m) } func (*BulkOpSummary) ProtoMessage() {} func (*BulkOpSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{75} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{75} } func (m *BulkOpSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3968,7 +3977,7 @@ func (m *ExportResponse) Reset() { *m = ExportResponse{} } func (m *ExportResponse) String() string { return proto.CompactTextString(m) } func (*ExportResponse) ProtoMessage() {} func (*ExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{76} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{76} } func (m *ExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4008,7 +4017,7 @@ func (m *ExportResponse_File) Reset() { *m = ExportResponse_File{} } func (m *ExportResponse_File) String() string { return proto.CompactTextString(m) } func (*ExportResponse_File) ProtoMessage() {} func (*ExportResponse_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{76, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{76, 0} } func (m *ExportResponse_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4059,7 +4068,7 @@ func (m *ImportRequest) Reset() { *m = ImportRequest{} } func (m *ImportRequest) String() string { return proto.CompactTextString(m) } func (*ImportRequest) ProtoMessage() {} func (*ImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{77} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{77} } func (m *ImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4094,7 +4103,7 @@ func (m *ImportRequest_File) Reset() { *m = ImportRequest_File{} } func (m *ImportRequest_File) String() string { return proto.CompactTextString(m) } func (*ImportRequest_File) ProtoMessage() {} func (*ImportRequest_File) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{77, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{77, 0} } func (m *ImportRequest_File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4130,7 +4139,7 @@ func (m *ImportRequest_TableRekey) Reset() { *m = ImportRequest_TableRek func (m *ImportRequest_TableRekey) String() string { return proto.CompactTextString(m) } func (*ImportRequest_TableRekey) ProtoMessage() {} func (*ImportRequest_TableRekey) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{77, 1} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{77, 1} } func (m *ImportRequest_TableRekey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4165,7 +4174,7 @@ func (m *ImportResponse) Reset() { *m = ImportResponse{} } func (m *ImportResponse) String() string { return proto.CompactTextString(m) } func (*ImportResponse) ProtoMessage() {} func (*ImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{78} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{78} } func (m *ImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4203,7 +4212,7 @@ func (m *AdminScatterRequest) Reset() { *m = AdminScatterRequest{} } func (m *AdminScatterRequest) String() string { return proto.CompactTextString(m) } func (*AdminScatterRequest) ProtoMessage() {} func (*AdminScatterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{79} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{79} } func (m *AdminScatterRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4240,7 +4249,7 @@ func (m *AdminScatterResponse) Reset() { *m = AdminScatterResponse{} } func (m *AdminScatterResponse) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse) ProtoMessage() {} func (*AdminScatterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{80} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{80} } func (m *AdminScatterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4273,7 +4282,7 @@ func (m *AdminScatterResponse_Range) Reset() { *m = AdminScatterResponse func (m *AdminScatterResponse_Range) String() string { return proto.CompactTextString(m) } func (*AdminScatterResponse_Range) ProtoMessage() {} func (*AdminScatterResponse_Range) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{80, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{80, 0} } func (m *AdminScatterResponse_Range) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4318,7 +4327,7 @@ func (m *AdminVerifyProtectedTimestampRequest) Reset() { *m = AdminVerif func (m *AdminVerifyProtectedTimestampRequest) String() string { return proto.CompactTextString(m) } func (*AdminVerifyProtectedTimestampRequest) ProtoMessage() {} func (*AdminVerifyProtectedTimestampRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{81} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{81} } func (m *AdminVerifyProtectedTimestampRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4356,7 +4365,7 @@ func (m *AdminVerifyProtectedTimestampResponse) Reset() { *m = AdminVeri func (m *AdminVerifyProtectedTimestampResponse) String() string { return proto.CompactTextString(m) } func (*AdminVerifyProtectedTimestampResponse) ProtoMessage() {} func (*AdminVerifyProtectedTimestampResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{82} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{82} } func (m *AdminVerifyProtectedTimestampResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4409,7 +4418,7 @@ func (m *AddSSTableRequest) Reset() { *m = AddSSTableRequest{} } func (m *AddSSTableRequest) String() string { return proto.CompactTextString(m) } func (*AddSSTableRequest) ProtoMessage() {} func (*AddSSTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{83} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{83} } func (m *AddSSTableRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4443,7 +4452,7 @@ func (m *AddSSTableResponse) Reset() { *m = AddSSTableResponse{} } func (m *AddSSTableResponse) String() string { return proto.CompactTextString(m) } func (*AddSSTableResponse) ProtoMessage() {} func (*AddSSTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{84} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{84} } func (m *AddSSTableResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4487,7 +4496,7 @@ func (m *RefreshRequest) Reset() { *m = RefreshRequest{} } func (m *RefreshRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRequest) ProtoMessage() {} func (*RefreshRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{85} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{85} } func (m *RefreshRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4521,7 +4530,7 @@ func (m *RefreshResponse) Reset() { *m = RefreshResponse{} } func (m *RefreshResponse) String() string { return proto.CompactTextString(m) } func (*RefreshResponse) ProtoMessage() {} func (*RefreshResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{86} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{86} } func (m *RefreshResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4560,7 +4569,7 @@ func (m *RefreshRangeRequest) Reset() { *m = RefreshRangeRequest{} } func (m *RefreshRangeRequest) String() string { return proto.CompactTextString(m) } func (*RefreshRangeRequest) ProtoMessage() {} func (*RefreshRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{87} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{87} } func (m *RefreshRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4594,7 +4603,7 @@ func (m *RefreshRangeResponse) Reset() { *m = RefreshRangeResponse{} } func (m *RefreshRangeResponse) String() string { return proto.CompactTextString(m) } func (*RefreshRangeResponse) ProtoMessage() {} func (*RefreshRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{88} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{88} } func (m *RefreshRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4643,7 +4652,7 @@ func (m *SubsumeRequest) Reset() { *m = SubsumeRequest{} } func (m *SubsumeRequest) String() string { return proto.CompactTextString(m) } func (*SubsumeRequest) ProtoMessage() {} func (*SubsumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{89} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{89} } func (m *SubsumeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4692,7 +4701,7 @@ func (m *SubsumeResponse) Reset() { *m = SubsumeResponse{} } func (m *SubsumeResponse) String() string { return proto.CompactTextString(m) } func (*SubsumeResponse) ProtoMessage() {} func (*SubsumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{90} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{90} } func (m *SubsumeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4727,7 +4736,7 @@ func (m *RangeStatsRequest) Reset() { *m = RangeStatsRequest{} } func (m *RangeStatsRequest) String() string { return proto.CompactTextString(m) } func (*RangeStatsRequest) ProtoMessage() {} func (*RangeStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{91} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{91} } func (m *RangeStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4769,7 +4778,7 @@ func (m *RangeStatsResponse) Reset() { *m = RangeStatsResponse{} } func (m *RangeStatsResponse) String() string { return proto.CompactTextString(m) } func (*RangeStatsResponse) ProtoMessage() {} func (*RangeStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{92} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{92} } func (m *RangeStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4852,7 +4861,7 @@ func (m *RequestUnion) Reset() { *m = RequestUnion{} } func (m *RequestUnion) String() string { return proto.CompactTextString(m) } func (*RequestUnion) ProtoMessage() {} func (*RequestUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{93} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{93} } func (m *RequestUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6302,7 +6311,7 @@ func (m *ResponseUnion) Reset() { *m = ResponseUnion{} } func (m *ResponseUnion) String() string { return proto.CompactTextString(m) } func (*ResponseUnion) ProtoMessage() {} func (*ResponseUnion) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{94} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{94} } func (m *ResponseUnion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7826,6 +7835,10 @@ type Header struct { // has not performed any reads that must be refreshed prior to sending this // current batch. When set, it allows the server to handle pushes and write // too old conditions locally. + // + // NOTE: this flag is a generalization of EndTxn.CanCommitAtHigherTimestamp. + // That flag should be deprecated in favor of this one. + // TODO(nvanbenschoten): perform this migration. CanForwardReadTimestamp bool `protobuf:"varint,16,opt,name=can_forward_read_timestamp,json=canForwardReadTimestamp,proto3" json:"can_forward_read_timestamp,omitempty"` } @@ -7833,7 +7846,7 @@ func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{95} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{95} } func (m *Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7871,7 +7884,7 @@ func (m *ClientRangeInfo) Reset() { *m = ClientRangeInfo{} } func (m *ClientRangeInfo) String() string { return proto.CompactTextString(m) } func (*ClientRangeInfo) ProtoMessage() {} func (*ClientRangeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{96} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{96} } func (m *ClientRangeInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7907,7 +7920,7 @@ type BatchRequest struct { func (m *BatchRequest) Reset() { *m = BatchRequest{} } func (*BatchRequest) ProtoMessage() {} func (*BatchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{97} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{97} } func (m *BatchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7944,7 +7957,7 @@ type BatchResponse struct { func (m *BatchResponse) Reset() { *m = BatchResponse{} } func (*BatchResponse) ProtoMessage() {} func (*BatchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{98} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{98} } func (m *BatchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8018,7 +8031,7 @@ func (m *BatchResponse_Header) Reset() { *m = BatchResponse_Header{} } func (m *BatchResponse_Header) String() string { return proto.CompactTextString(m) } func (*BatchResponse_Header) ProtoMessage() {} func (*BatchResponse_Header) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{98, 0} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{98, 0} } func (m *BatchResponse_Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8056,7 +8069,7 @@ func (m *RangeLookupRequest) Reset() { *m = RangeLookupRequest{} } func (m *RangeLookupRequest) String() string { return proto.CompactTextString(m) } func (*RangeLookupRequest) ProtoMessage() {} func (*RangeLookupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{99} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{99} } func (m *RangeLookupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8094,7 +8107,7 @@ func (m *RangeLookupResponse) Reset() { *m = RangeLookupResponse{} } func (m *RangeLookupResponse) String() string { return proto.CompactTextString(m) } func (*RangeLookupResponse) ProtoMessage() {} func (*RangeLookupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{100} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{100} } func (m *RangeLookupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8133,7 +8146,7 @@ func (m *RangeFeedRequest) Reset() { *m = RangeFeedRequest{} } func (m *RangeFeedRequest) String() string { return proto.CompactTextString(m) } func (*RangeFeedRequest) ProtoMessage() {} func (*RangeFeedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{101} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{101} } func (m *RangeFeedRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8174,7 +8187,7 @@ func (m *RangeFeedValue) Reset() { *m = RangeFeedValue{} } func (m *RangeFeedValue) String() string { return proto.CompactTextString(m) } func (*RangeFeedValue) ProtoMessage() {} func (*RangeFeedValue) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{102} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{102} } func (m *RangeFeedValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8215,7 +8228,7 @@ func (m *RangeFeedCheckpoint) Reset() { *m = RangeFeedCheckpoint{} } func (m *RangeFeedCheckpoint) String() string { return proto.CompactTextString(m) } func (*RangeFeedCheckpoint) ProtoMessage() {} func (*RangeFeedCheckpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{103} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{103} } func (m *RangeFeedCheckpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8252,7 +8265,7 @@ func (m *RangeFeedError) Reset() { *m = RangeFeedError{} } func (m *RangeFeedError) String() string { return proto.CompactTextString(m) } func (*RangeFeedError) ProtoMessage() {} func (*RangeFeedError) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{104} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{104} } func (m *RangeFeedError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8289,7 +8302,7 @@ func (m *RangeFeedEvent) Reset() { *m = RangeFeedEvent{} } func (m *RangeFeedEvent) String() string { return proto.CompactTextString(m) } func (*RangeFeedEvent) ProtoMessage() {} func (*RangeFeedEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{105} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{105} } func (m *RangeFeedEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8330,7 +8343,7 @@ func (m *GossipSubscriptionRequest) Reset() { *m = GossipSubscriptionReq func (m *GossipSubscriptionRequest) String() string { return proto.CompactTextString(m) } func (*GossipSubscriptionRequest) ProtoMessage() {} func (*GossipSubscriptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{106} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{106} } func (m *GossipSubscriptionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8370,7 +8383,7 @@ func (m *GossipSubscriptionEvent) Reset() { *m = GossipSubscriptionEvent func (m *GossipSubscriptionEvent) String() string { return proto.CompactTextString(m) } func (*GossipSubscriptionEvent) ProtoMessage() {} func (*GossipSubscriptionEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_api_8d119e0115c09759, []int{107} + return fileDescriptor_api_9ee73df62b8c2c4a, []int{107} } func (m *GossipSubscriptionEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9001,6 +9014,9 @@ func (this *EndTxnRequest) Equal(that interface{}) bool { if this.Require1PC != that1.Require1PC { return false } + if this.DeprecatedCanCommitAtHigherTimestamp != that1.DeprecatedCanCommitAtHigherTimestamp { + return false + } if this.Poison != that1.Poison { return false } @@ -11865,6 +11881,16 @@ func (m *EndTxnRequest) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.DeprecatedCanCommitAtHigherTimestamp { + dAtA[i] = 0x40 + i++ + if m.DeprecatedCanCommitAtHigherTimestamp { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } if m.Poison { dAtA[i] = 0x48 i++ @@ -17616,6 +17642,9 @@ func (m *EndTxnRequest) Size() (n int) { if m.Require1PC { n += 2 } + if m.DeprecatedCanCommitAtHigherTimestamp { + n += 2 + } if m.Poison { n += 2 } @@ -24060,6 +24089,26 @@ func (m *EndTxnRequest) Unmarshal(dAtA []byte) error { } } m.Require1PC = bool(v != 0) + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedCanCommitAtHigherTimestamp", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DeprecatedCanCommitAtHigherTimestamp = bool(v != 0) case 9: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Poison", wireType) @@ -39226,497 +39275,500 @@ var ( ErrIntOverflowApi = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_8d119e0115c09759) } - -var fileDescriptor_api_8d119e0115c09759 = []byte{ - // 7824 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x7d, 0x6c, 0x23, 0xc9, - 0x75, 0xa7, 0x9a, 0xa4, 0x24, 0xf2, 0x91, 0xa2, 0x5a, 0x25, 0xcd, 0x0c, 0x47, 0xb3, 0x3b, 0xd2, - 0x70, 0xe7, 0x6b, 0xc7, 0xbb, 0xd2, 0xce, 0xcc, 0xee, 0xed, 0x7a, 0x67, 0xbd, 0xb6, 0x44, 0x71, - 0x86, 0x92, 0x46, 0x1a, 0x4d, 0x93, 0x9a, 0xf1, 0xae, 0xed, 0x6b, 0xb7, 0xba, 0x4b, 0x54, 0x5b, - 0x64, 0x37, 0xa7, 0xbb, 0xa9, 0x8f, 0x01, 0x0e, 0xf0, 0x7d, 0xc1, 0x07, 0xdf, 0x61, 0x71, 0x7f, - 0xdc, 0x1d, 0x0e, 0xe7, 0xf3, 0xed, 0x02, 0x3e, 0x9c, 0x0f, 0x30, 0xf6, 0x70, 0xff, 0x26, 0x70, - 0x3e, 0xfe, 0x70, 0x80, 0x8d, 0xe1, 0x00, 0x4e, 0x80, 0xc4, 0x46, 0x80, 0x08, 0xf1, 0x18, 0x08, - 0x82, 0xfc, 0x11, 0x20, 0x41, 0x90, 0x00, 0x0b, 0x24, 0x08, 0xea, 0xa3, 0xbf, 0xc8, 0x26, 0x45, - 0x69, 0x7b, 0x93, 0x05, 0xfc, 0x0f, 0xc1, 0x7e, 0x55, 0xef, 0x75, 0xd5, 0xab, 0xaa, 0x57, 0xef, - 0x57, 0xf5, 0xaa, 0x1a, 0x26, 0x2c, 0x53, 0x51, 0x77, 0x5a, 0x5b, 0xf3, 0x4a, 0x4b, 0x9f, 0x6b, - 0x59, 0xa6, 0x63, 0xa2, 0x09, 0xd5, 0x54, 0x77, 0x29, 0x79, 0x8e, 0x27, 0x4e, 0xdf, 0xd8, 0xdd, - 0x9b, 0xdf, 0xdd, 0xb3, 0xb1, 0xb5, 0x87, 0xad, 0x79, 0xd5, 0x34, 0xd4, 0xb6, 0x65, 0x61, 0x43, - 0x3d, 0x9c, 0x6f, 0x98, 0xea, 0x2e, 0xfd, 0xd1, 0x8d, 0x3a, 0x63, 0x9f, 0x46, 0xae, 0x44, 0x4d, - 0x71, 0x14, 0x4e, 0x9b, 0x72, 0x69, 0xd8, 0xb2, 0x4c, 0xcb, 0xe6, 0xd4, 0xb3, 0x2e, 0xb5, 0x89, - 0x1d, 0x25, 0x90, 0xfb, 0x82, 0xed, 0x98, 0x96, 0x52, 0xc7, 0xf3, 0xd8, 0xa8, 0xeb, 0x06, 0x26, - 0x19, 0xf6, 0x54, 0x95, 0x27, 0x3e, 0x17, 0x99, 0x78, 0x9b, 0xa7, 0x16, 0xda, 0x8e, 0xde, 0x98, - 0xdf, 0x69, 0xa8, 0xf3, 0x8e, 0xde, 0xc4, 0xb6, 0xa3, 0x34, 0x5b, 0x3c, 0x65, 0x96, 0xa6, 0x38, - 0x96, 0xa2, 0xea, 0x46, 0x7d, 0xde, 0xc2, 0xaa, 0x69, 0x69, 0x58, 0x93, 0xed, 0x96, 0x62, 0xb8, - 0x85, 0xac, 0x9b, 0x75, 0x93, 0xfe, 0x9d, 0x27, 0xff, 0x18, 0xb5, 0xf8, 0x43, 0x01, 0xc6, 0x24, - 0xfc, 0xa4, 0x8d, 0x6d, 0xa7, 0x82, 0x15, 0x0d, 0x5b, 0xe8, 0x3c, 0x24, 0x77, 0xf1, 0x61, 0x21, - 0x39, 0x2b, 0x5c, 0xcf, 0x2d, 0x8e, 0x7e, 0x7c, 0x34, 0x93, 0x5c, 0xc5, 0x87, 0x12, 0xa1, 0xa1, - 0x59, 0x18, 0xc5, 0x86, 0x26, 0x93, 0xe4, 0x54, 0x38, 0x79, 0x04, 0x1b, 0xda, 0x2a, 0x3e, 0x44, - 0x5f, 0x85, 0xb4, 0x4d, 0xa4, 0x19, 0x2a, 0x2e, 0x0c, 0xcf, 0x0a, 0xd7, 0x87, 0x17, 0xbf, 0xf4, - 0xf1, 0xd1, 0xcc, 0x5b, 0x75, 0xdd, 0xd9, 0x69, 0x6f, 0xcd, 0xa9, 0x66, 0x73, 0xde, 0xd3, 0xbe, - 0xb6, 0xe5, 0xff, 0x9f, 0x6f, 0xed, 0xd6, 0xe7, 0x3b, 0x6b, 0x3e, 0x57, 0x3b, 0x30, 0xaa, 0xf8, - 0x89, 0xe4, 0x49, 0x7c, 0x33, 0xf5, 0xe7, 0x1f, 0xcc, 0x08, 0x2b, 0xa9, 0xb4, 0x20, 0x26, 0x56, - 0x52, 0xe9, 0x84, 0x98, 0x2c, 0x7e, 0x2f, 0x09, 0x79, 0x09, 0xdb, 0x2d, 0xd3, 0xb0, 0x31, 0x2f, - 0xff, 0x2b, 0x90, 0x74, 0x0e, 0x0c, 0x5a, 0xfe, 0xec, 0xad, 0x8b, 0x73, 0x5d, 0xad, 0x3d, 0x57, - 0xb3, 0x14, 0xc3, 0x56, 0x54, 0x47, 0x37, 0x0d, 0x89, 0x64, 0x45, 0x6f, 0x40, 0xd6, 0xc2, 0x76, - 0xbb, 0x89, 0xa9, 0xba, 0x68, 0xd5, 0xb2, 0xb7, 0xce, 0x45, 0x70, 0x56, 0x5b, 0x8a, 0x21, 0x01, - 0xcb, 0x4b, 0xfe, 0xa3, 0xf3, 0x90, 0x36, 0xda, 0x4d, 0xa2, 0x10, 0x9b, 0x56, 0x37, 0x29, 0x8d, - 0x1a, 0xed, 0xe6, 0x2a, 0x3e, 0xb4, 0xd1, 0x97, 0xe1, 0xac, 0x86, 0x5b, 0x16, 0x56, 0x15, 0x07, - 0x6b, 0xb2, 0xa5, 0x18, 0x75, 0x2c, 0xeb, 0xc6, 0xb6, 0x69, 0x17, 0x46, 0x66, 0x93, 0xd7, 0xb3, - 0xb7, 0x9e, 0x8b, 0x90, 0x2f, 0x91, 0x5c, 0xcb, 0xc6, 0xb6, 0xb9, 0x98, 0xfa, 0xe8, 0x68, 0x66, - 0x48, 0x9a, 0xf2, 0x25, 0x78, 0x49, 0x36, 0xaa, 0xc2, 0x18, 0x2f, 0xae, 0x85, 0x15, 0xdb, 0x34, - 0x0a, 0xa3, 0xb3, 0xc2, 0xf5, 0xfc, 0xad, 0xb9, 0x28, 0x81, 0x21, 0xd5, 0x90, 0xc7, 0x76, 0x13, - 0x4b, 0x94, 0x4b, 0xca, 0x59, 0x81, 0x27, 0x74, 0x01, 0x32, 0xa4, 0x26, 0x5b, 0x87, 0x0e, 0xb6, - 0x0b, 0x69, 0x5a, 0x15, 0x52, 0xb5, 0x45, 0xf2, 0x5c, 0x7c, 0x1b, 0x72, 0x41, 0x56, 0x84, 0x20, - 0x2f, 0x95, 0xab, 0x9b, 0x6b, 0x65, 0x79, 0x73, 0x7d, 0x75, 0xfd, 0xc1, 0xe3, 0x75, 0x71, 0x08, - 0x4d, 0x81, 0xc8, 0x69, 0xab, 0xe5, 0x77, 0xe4, 0xfb, 0xcb, 0x6b, 0xcb, 0x35, 0x51, 0x98, 0x4e, - 0xfd, 0x87, 0xef, 0x5d, 0x1c, 0x2a, 0x3e, 0x02, 0xb8, 0x87, 0x1d, 0xde, 0xcd, 0xd0, 0x22, 0x8c, - 0xec, 0xd0, 0xf2, 0x14, 0x04, 0xaa, 0xe9, 0xd9, 0xc8, 0x82, 0x07, 0xba, 0xe4, 0x62, 0x9a, 0x68, - 0xe3, 0xa7, 0x47, 0x33, 0x82, 0xc4, 0x39, 0x59, 0x4f, 0x28, 0xfe, 0x96, 0x00, 0x59, 0x2a, 0x98, - 0xd5, 0x12, 0x95, 0x3a, 0x24, 0x5f, 0x3a, 0x56, 0x25, 0xdd, 0xa2, 0xd1, 0x1c, 0x0c, 0xef, 0x29, - 0x8d, 0x36, 0x2e, 0x24, 0xa8, 0x8c, 0x42, 0x84, 0x8c, 0x47, 0x24, 0x5d, 0x62, 0xd9, 0xd0, 0x1d, - 0xc8, 0xe9, 0x86, 0x83, 0x0d, 0x47, 0x66, 0x6c, 0xc9, 0x63, 0xd8, 0xb2, 0x2c, 0x37, 0x7d, 0x28, - 0xfe, 0xba, 0x00, 0xb0, 0xd1, 0x8e, 0x53, 0x35, 0xe8, 0xd5, 0x01, 0xcb, 0xcf, 0xfb, 0x18, 0xaf, - 0xc5, 0x59, 0x18, 0xd1, 0x8d, 0x86, 0x6e, 0xb0, 0xf2, 0xa7, 0x25, 0xfe, 0x84, 0xa6, 0x60, 0x78, - 0xab, 0xa1, 0x1b, 0x1a, 0x1d, 0x15, 0x69, 0x89, 0x3d, 0x70, 0xf5, 0x4b, 0x90, 0xa5, 0x65, 0x8f, - 0x51, 0xfb, 0xc5, 0x9f, 0x24, 0xe0, 0x4c, 0xc9, 0x34, 0x34, 0x9d, 0x0c, 0x4f, 0xa5, 0xf1, 0x99, - 0xd0, 0xcd, 0x0a, 0x04, 0x06, 0xa2, 0x8c, 0x0f, 0x5a, 0x03, 0xb6, 0x34, 0xf2, 0xb9, 0xca, 0x07, - 0x2d, 0x4a, 0x8b, 0xd6, 0x27, 0x7a, 0x15, 0xce, 0x29, 0x8d, 0x86, 0xb9, 0x2f, 0xeb, 0xdb, 0xb2, - 0x66, 0x62, 0x5b, 0x36, 0x4c, 0x47, 0xc6, 0x07, 0xba, 0xed, 0x50, 0xb3, 0x92, 0x96, 0x26, 0x69, - 0xf2, 0xf2, 0xf6, 0x92, 0x89, 0xed, 0x75, 0xd3, 0x29, 0x93, 0x24, 0x32, 0x66, 0x49, 0x61, 0xd8, - 0x98, 0x1d, 0x21, 0x06, 0x59, 0x4a, 0xe3, 0x83, 0x16, 0x1d, 0xb3, 0xbc, 0x89, 0xbe, 0x06, 0x67, - 0x3b, 0xb5, 0x19, 0x67, 0x6b, 0xfd, 0x81, 0x00, 0xf9, 0x65, 0x43, 0x77, 0x3e, 0x13, 0xcd, 0xe4, - 0xa9, 0x36, 0x19, 0x54, 0xed, 0x0d, 0x10, 0xb7, 0x15, 0xbd, 0xf1, 0xc0, 0xa8, 0x99, 0xcd, 0x2d, - 0xdb, 0x31, 0x0d, 0x6c, 0x73, 0xdd, 0x77, 0xd1, 0xb9, 0xce, 0x1e, 0xc1, 0xb8, 0x57, 0xa7, 0x38, - 0x95, 0xf5, 0x14, 0xc4, 0x65, 0x43, 0xb5, 0x70, 0x13, 0x1b, 0xb1, 0x6a, 0xeb, 0x39, 0xc8, 0xe8, - 0xae, 0x5c, 0xaa, 0xb1, 0xa4, 0xe4, 0x13, 0x78, 0x9d, 0xda, 0x30, 0x11, 0x78, 0x77, 0x9c, 0xe6, - 0x92, 0x4c, 0x1c, 0x78, 0x5f, 0xf6, 0xdb, 0x8b, 0x4c, 0x1c, 0x78, 0x9f, 0x99, 0xb7, 0x77, 0x60, - 0x6c, 0x09, 0x37, 0xb0, 0x83, 0xe3, 0xb7, 0xfd, 0x9b, 0x90, 0x77, 0x45, 0xc7, 0xd9, 0x48, 0xdf, - 0x15, 0x00, 0x71, 0xb9, 0x64, 0xc6, 0x8d, 0xb3, 0x9d, 0x66, 0x88, 0x9b, 0xe1, 0xb4, 0x2d, 0x83, - 0xf9, 0x0b, 0xac, 0x97, 0x02, 0x23, 0x51, 0x97, 0xc1, 0xb7, 0xc1, 0xa9, 0xa0, 0x0d, 0xf6, 0xdc, - 0x1e, 0xe2, 0xf0, 0xec, 0xc3, 0x64, 0xa8, 0x78, 0xf1, 0x36, 0x65, 0x8a, 0x96, 0x2c, 0x31, 0x9b, - 0x0c, 0xfa, 0x76, 0x94, 0x58, 0xfc, 0x5f, 0x02, 0x4c, 0x94, 0x1a, 0x58, 0xb1, 0x62, 0xd7, 0xcb, - 0x17, 0x21, 0xad, 0x61, 0x45, 0xa3, 0x15, 0x67, 0x03, 0xfe, 0xf9, 0x80, 0x14, 0xe2, 0xd7, 0xce, - 0xed, 0x34, 0xd4, 0xb9, 0x9a, 0xeb, 0xf1, 0xf2, 0x51, 0xef, 0x31, 0xf1, 0x0e, 0xf1, 0x0e, 0xa0, - 0x60, 0xf9, 0xe2, 0xec, 0x14, 0xff, 0x5b, 0x00, 0x24, 0xe1, 0x3d, 0x6c, 0x39, 0xb1, 0x57, 0x7e, - 0x09, 0xb2, 0x8e, 0x62, 0xd5, 0xb1, 0x23, 0x13, 0x8f, 0xfe, 0x24, 0xf5, 0x07, 0xc6, 0x47, 0xc8, - 0x5c, 0x03, 0xef, 0xc2, 0x64, 0xa8, 0x94, 0x71, 0xaa, 0xe0, 0x6f, 0x05, 0xc8, 0x56, 0x55, 0xc5, - 0x88, 0xb3, 0xee, 0x6f, 0x43, 0xd6, 0x56, 0x15, 0x43, 0xde, 0x36, 0xad, 0xa6, 0xe2, 0xd0, 0x4e, - 0x9f, 0x0f, 0xd5, 0xdd, 0xf3, 0xbb, 0x55, 0xc5, 0xb8, 0x4b, 0x33, 0x49, 0x60, 0x7b, 0xff, 0xd1, - 0x43, 0xc8, 0xee, 0xe2, 0x43, 0x99, 0xe3, 0x33, 0x3a, 0x53, 0xe6, 0x6f, 0xbd, 0x12, 0xe0, 0xdf, - 0xdd, 0x9b, 0x73, 0x61, 0xdd, 0x5c, 0x00, 0xd6, 0xcd, 0x11, 0x8e, 0xb9, 0xaa, 0x63, 0x61, 0xa3, - 0xee, 0xec, 0x48, 0xb0, 0x8b, 0x0f, 0xef, 0x33, 0x19, 0xc1, 0xa1, 0xb6, 0x92, 0x4a, 0x27, 0xc5, - 0x54, 0xf1, 0xef, 0x04, 0xc8, 0xb1, 0x8a, 0xc7, 0x39, 0xd4, 0x5e, 0x83, 0x94, 0x65, 0xee, 0xb3, - 0xa1, 0x96, 0xbd, 0x75, 0x21, 0x42, 0xc4, 0x2a, 0x3e, 0x0c, 0xce, 0x71, 0x34, 0x3b, 0x5a, 0x04, - 0xee, 0x3d, 0xca, 0x94, 0x3b, 0x39, 0x28, 0x37, 0x30, 0x2e, 0x89, 0xc8, 0xb8, 0x06, 0xe3, 0x5b, - 0x8a, 0xa3, 0xee, 0xc8, 0x16, 0x2f, 0x24, 0x99, 0x0f, 0x93, 0xd7, 0x73, 0x52, 0x9e, 0x92, 0xdd, - 0xa2, 0xdb, 0xc5, 0xbf, 0x77, 0x7b, 0xbd, 0x8d, 0x7f, 0x25, 0x5b, 0xfe, 0x1f, 0x04, 0x3e, 0x9e, - 0xdc, 0xfa, 0xff, 0xaa, 0x75, 0x80, 0xf7, 0x13, 0x70, 0xae, 0xb4, 0x83, 0xd5, 0xdd, 0x92, 0x69, - 0xd8, 0xba, 0xed, 0x10, 0x0d, 0xc6, 0xd9, 0x0b, 0x2e, 0x40, 0x66, 0x5f, 0x77, 0x76, 0x64, 0x4d, - 0xdf, 0xde, 0xa6, 0x96, 0x2f, 0x2d, 0xa5, 0x09, 0x61, 0x49, 0xdf, 0xde, 0x46, 0xb7, 0x21, 0xd5, - 0x34, 0x35, 0xe6, 0x64, 0xe7, 0x6f, 0xcd, 0x44, 0x88, 0xa7, 0x45, 0xb3, 0xdb, 0xcd, 0x35, 0x53, - 0xc3, 0x12, 0xcd, 0x8c, 0x2e, 0x02, 0xa8, 0x84, 0xda, 0x32, 0x75, 0xc3, 0xe1, 0xb3, 0x68, 0x80, - 0x82, 0x2a, 0x90, 0x71, 0xb0, 0xd5, 0xd4, 0x0d, 0xc5, 0xc1, 0x85, 0x61, 0xaa, 0xbc, 0xcb, 0x91, - 0x05, 0x6f, 0x35, 0x74, 0x55, 0x59, 0xc2, 0xb6, 0x6a, 0xe9, 0x2d, 0xc7, 0xb4, 0xb8, 0x16, 0x7d, - 0x66, 0x6e, 0x71, 0xdf, 0x4b, 0x41, 0xa1, 0x5b, 0x43, 0x71, 0xf6, 0x93, 0x0d, 0x18, 0x21, 0x38, - 0xbd, 0xe1, 0xf0, 0x9e, 0x72, 0xab, 0x97, 0x22, 0x22, 0x4a, 0x40, 0xf1, 0x7e, 0xc3, 0xe1, 0x85, - 0xe7, 0x72, 0xa6, 0x7f, 0x28, 0xc0, 0x08, 0x4b, 0x40, 0x37, 0x21, 0xcd, 0x17, 0x26, 0x34, 0x5a, - 0xc6, 0xe4, 0xe2, 0xd9, 0x67, 0x47, 0x33, 0xa3, 0x6c, 0xad, 0x61, 0xe9, 0x63, 0xff, 0xaf, 0x34, - 0x4a, 0xf3, 0x2d, 0x6b, 0xa4, 0xcd, 0x6c, 0x47, 0xb1, 0x1c, 0xba, 0x08, 0x94, 0x60, 0x98, 0x83, - 0x12, 0x56, 0xf1, 0x21, 0x5a, 0x81, 0x11, 0xdb, 0x51, 0x9c, 0xb6, 0xcd, 0x5b, 0xed, 0x44, 0x85, - 0xad, 0x52, 0x4e, 0x89, 0x4b, 0x20, 0xce, 0x90, 0x86, 0x1d, 0x45, 0x6f, 0xd0, 0x66, 0xcc, 0x48, - 0xfc, 0xa9, 0xf8, 0x1d, 0x01, 0x46, 0x58, 0x56, 0x74, 0x0e, 0x26, 0xa5, 0x85, 0xf5, 0x7b, 0x65, - 0x79, 0x79, 0x7d, 0xa9, 0x5c, 0x2b, 0x4b, 0x6b, 0xcb, 0xeb, 0x0b, 0xb5, 0xb2, 0x38, 0x84, 0xce, - 0x02, 0x72, 0x13, 0x4a, 0x0f, 0xd6, 0xab, 0xcb, 0xd5, 0x5a, 0x79, 0xbd, 0x26, 0x0a, 0x74, 0x8d, - 0x82, 0xd2, 0x03, 0xd4, 0x04, 0xba, 0x0c, 0xb3, 0x9d, 0x54, 0xb9, 0x5a, 0x5b, 0xa8, 0x55, 0xe5, - 0x72, 0xb5, 0xb6, 0xbc, 0xb6, 0x50, 0x2b, 0x2f, 0x89, 0xc9, 0x3e, 0xb9, 0xc8, 0x4b, 0x24, 0xa9, - 0x5c, 0xaa, 0x89, 0xa9, 0xe2, 0x53, 0x38, 0x23, 0x61, 0xd5, 0x6c, 0xb6, 0xda, 0x0e, 0x26, 0xa5, - 0xb4, 0xe3, 0x1c, 0x2f, 0xe7, 0x60, 0x54, 0xb3, 0x0e, 0x65, 0xab, 0x6d, 0xf0, 0xd1, 0x32, 0xa2, - 0x59, 0x87, 0x52, 0xdb, 0xe0, 0x9d, 0xf1, 0xff, 0x0b, 0x70, 0xb6, 0xf3, 0xe5, 0x71, 0x76, 0xc5, - 0x87, 0x90, 0x55, 0x34, 0x0d, 0x6b, 0xb2, 0x86, 0x1b, 0x8e, 0xc2, 0x5d, 0x95, 0x1b, 0x01, 0x49, - 0x7c, 0x01, 0x6f, 0xce, 0x5b, 0xc0, 0x5b, 0x7b, 0x54, 0x2a, 0xd1, 0x82, 0x2c, 0x11, 0x0e, 0xd7, - 0x14, 0x51, 0x21, 0x94, 0x52, 0xfc, 0x9b, 0x24, 0x8c, 0x95, 0x0d, 0xad, 0x76, 0x10, 0xeb, 0xec, - 0x72, 0x16, 0x46, 0x54, 0xb3, 0xd9, 0xd4, 0x1d, 0x57, 0x4d, 0xec, 0x09, 0x7d, 0x3e, 0xe0, 0x68, - 0x26, 0x07, 0x70, 0xb4, 0x7c, 0x17, 0x13, 0x7d, 0x1d, 0xce, 0x11, 0x0b, 0x6a, 0x19, 0x4a, 0x43, - 0x66, 0xd2, 0x64, 0xc7, 0xd2, 0xeb, 0x75, 0x6c, 0xf1, 0xe5, 0xc2, 0xeb, 0x11, 0xe5, 0x5c, 0xe6, - 0x1c, 0x25, 0xca, 0x50, 0x63, 0xf9, 0xa5, 0x33, 0x7a, 0x14, 0x19, 0xbd, 0x05, 0x40, 0x26, 0x27, - 0xba, 0x04, 0x69, 0x73, 0xdb, 0xd4, 0x6b, 0x0d, 0xd2, 0x35, 0x47, 0x84, 0x81, 0x3c, 0xdb, 0x68, - 0x9e, 0x60, 0x8b, 0x27, 0x6d, 0xdd, 0xc2, 0xf2, 0xcd, 0x96, 0x4a, 0x17, 0x03, 0xd2, 0x8b, 0xf9, - 0x67, 0x47, 0x33, 0x20, 0x31, 0xf2, 0xcd, 0x8d, 0x12, 0xc1, 0x1a, 0xec, 0x7f, 0x4b, 0x25, 0x3a, - 0x6a, 0x99, 0xba, 0x6d, 0x1a, 0x85, 0x0c, 0xd3, 0x11, 0x7b, 0x42, 0x0f, 0x41, 0xd4, 0x0d, 0x79, - 0xbb, 0xa1, 0xd7, 0x77, 0x1c, 0x79, 0xdf, 0xd2, 0x1d, 0x6c, 0x17, 0x26, 0x68, 0x61, 0xa2, 0xfa, - 0x4c, 0x95, 0xaf, 0xcc, 0x6a, 0x8f, 0x49, 0x4e, 0x5e, 0xac, 0xbc, 0x6e, 0xdc, 0xa5, 0xfc, 0x94, - 0x68, 0x7b, 0x33, 0xeb, 0xa8, 0x98, 0x5e, 0x49, 0xa5, 0xd3, 0x62, 0xa6, 0xf8, 0x27, 0x02, 0xe4, - 0xdd, 0x66, 0x8f, 0xb3, 0x87, 0x5e, 0x07, 0xd1, 0x34, 0xb0, 0xdc, 0xda, 0x51, 0x6c, 0xcc, 0x9b, - 0x89, 0x4f, 0x02, 0x79, 0xd3, 0xc0, 0x1b, 0x84, 0xcc, 0x94, 0x8e, 0x36, 0x60, 0xc2, 0x76, 0x94, - 0xba, 0x6e, 0xd4, 0x65, 0x6f, 0x25, 0x9d, 0xba, 0x11, 0x03, 0x3a, 0xdf, 0x22, 0xe7, 0xf6, 0xe8, - 0x21, 0xcf, 0xe1, 0x67, 0x02, 0x4c, 0x2c, 0x68, 0x4d, 0xdd, 0xa8, 0xb6, 0x1a, 0x7a, 0xac, 0x58, - 0xff, 0x32, 0x64, 0x6c, 0x22, 0xd3, 0x37, 0xbf, 0x3e, 0x4e, 0x4b, 0xd3, 0x14, 0x62, 0x87, 0xef, - 0xc3, 0x38, 0x3e, 0x68, 0xe9, 0x96, 0xe2, 0xe8, 0xa6, 0xc1, 0x80, 0x45, 0x6a, 0xf0, 0xba, 0xe5, - 0x7d, 0x5e, 0x1f, 0x5c, 0xf0, 0x9a, 0xbd, 0x03, 0x28, 0x58, 0xb1, 0x38, 0x11, 0x86, 0x0c, 0x93, - 0x54, 0xf4, 0xa6, 0x61, 0xc7, 0xac, 0x35, 0x6e, 0x1f, 0xbf, 0x02, 0x53, 0xe1, 0x17, 0xc4, 0x59, - 0xfa, 0xaf, 0xf1, 0x16, 0x5f, 0xc3, 0x56, 0xfd, 0x53, 0x58, 0xed, 0x70, 0xf5, 0xce, 0xc5, 0xc7, - 0x59, 0xf2, 0x6f, 0x0b, 0x70, 0x9e, 0xca, 0xa6, 0xfb, 0x22, 0xdb, 0xd8, 0xba, 0x8f, 0x15, 0x3b, - 0x56, 0x8c, 0xfb, 0x02, 0x8c, 0x30, 0xac, 0x4a, 0x7b, 0xec, 0xf0, 0x62, 0x96, 0x78, 0x16, 0x55, - 0xc7, 0xb4, 0x88, 0x67, 0xc1, 0x93, 0x78, 0x3d, 0x15, 0x98, 0x8e, 0x2a, 0x4b, 0xcc, 0x60, 0x7e, - 0x82, 0x3b, 0x78, 0xa4, 0x8b, 0x97, 0x76, 0x88, 0x67, 0x83, 0xca, 0x90, 0x55, 0xe9, 0x3f, 0xd9, - 0x39, 0x6c, 0x61, 0x2a, 0x3f, 0xdf, 0xcf, 0x37, 0x64, 0x6c, 0xb5, 0xc3, 0x16, 0x26, 0x0e, 0xa6, - 0xfb, 0x9f, 0xa8, 0x2b, 0x50, 0xd5, 0xbe, 0xde, 0x25, 0x1d, 0x5f, 0x34, 0xaf, 0xeb, 0xa0, 0x85, - 0x34, 0xf1, 0x6b, 0x49, 0xae, 0x0a, 0xf6, 0x26, 0xce, 0x14, 0xab, 0x3f, 0xf1, 0x6e, 0x68, 0x8b, - 0x2a, 0x58, 0xfd, 0xc4, 0x09, 0xaa, 0x1f, 0x58, 0x1b, 0xf7, 0xa9, 0xe8, 0x1d, 0x08, 0xac, 0x7e, - 0xcb, 0xac, 0x66, 0x2e, 0x5e, 0x39, 0x89, 0x52, 0x26, 0x7c, 0x29, 0x8c, 0x6e, 0xa3, 0x12, 0xa4, - 0xf1, 0x41, 0x4b, 0xd6, 0xb0, 0xad, 0x72, 0xb3, 0x56, 0xec, 0xb5, 0x97, 0xd6, 0xe5, 0xc1, 0x8f, - 0xe2, 0x83, 0x16, 0x21, 0xa2, 0x4d, 0x32, 0xcf, 0xb9, 0x13, 0x3a, 0x2d, 0xb6, 0x7d, 0x3c, 0x20, - 0xf0, 0xfb, 0x0b, 0x17, 0x37, 0xee, 0xcd, 0xe5, 0x4c, 0x04, 0x6f, 0xbb, 0x0f, 0x04, 0xb8, 0x10, - 0xd9, 0x76, 0x71, 0x4e, 0x76, 0x6f, 0x41, 0x8a, 0xaa, 0x20, 0x71, 0x42, 0x15, 0x50, 0xae, 0xe2, - 0x0f, 0xdc, 0x51, 0x2f, 0xe1, 0x86, 0x49, 0xd4, 0xfb, 0x29, 0xac, 0x6c, 0x8d, 0xba, 0xcd, 0x9e, - 0x38, 0x71, 0xb3, 0xbb, 0xac, 0x1d, 0x66, 0xa1, 0xa3, 0xb0, 0x71, 0x9a, 0x85, 0xff, 0x26, 0xc0, - 0x64, 0x05, 0x2b, 0x96, 0xb3, 0x85, 0x15, 0x27, 0x66, 0x87, 0xf4, 0x35, 0x48, 0x1a, 0xe6, 0xfe, - 0x49, 0x16, 0xf7, 0x48, 0x7e, 0x7f, 0xda, 0x0a, 0x97, 0x2b, 0xce, 0x5a, 0xff, 0x6e, 0x02, 0x32, - 0xf7, 0x4a, 0x71, 0xd6, 0xf5, 0x2d, 0xbe, 0x88, 0xcc, 0x86, 0x7a, 0x54, 0xb7, 0xf4, 0xde, 0x37, - 0x77, 0xaf, 0xb4, 0x8a, 0x0f, 0xdd, 0x6e, 0x49, 0xb8, 0xd0, 0x02, 0x64, 0x9c, 0x1d, 0x0b, 0xdb, - 0x3b, 0x66, 0x43, 0x3b, 0x89, 0xcf, 0xe2, 0x73, 0x4d, 0xef, 0xc2, 0x30, 0x95, 0xeb, 0x06, 0x32, - 0x08, 0x11, 0x81, 0x0c, 0xe4, 0x35, 0x9e, 0xdb, 0x97, 0x38, 0xc9, 0x6b, 0x5c, 0x02, 0x6b, 0x1c, - 0xcf, 0x37, 0x1a, 0x16, 0x47, 0x8a, 0x0f, 0x01, 0x48, 0xd5, 0xe2, 0x6c, 0x9e, 0xff, 0x94, 0x84, - 0xfc, 0x46, 0xdb, 0xde, 0x89, 0xb9, 0x3f, 0x96, 0x00, 0x5a, 0x6d, 0x7b, 0x07, 0x5b, 0xb2, 0x73, - 0x60, 0xf0, 0xfa, 0x1f, 0x13, 0x29, 0xe1, 0x2a, 0x80, 0xf1, 0xd5, 0x0e, 0x0c, 0x54, 0xe1, 0x42, - 0xb0, 0xec, 0x87, 0x5b, 0xbc, 0xd0, 0x0f, 0x0d, 0xd6, 0x0e, 0x8c, 0x35, 0xec, 0xc1, 0x40, 0x26, - 0x09, 0x13, 0x49, 0x6f, 0xc1, 0x28, 0x79, 0x90, 0x1d, 0xf3, 0x24, 0x4d, 0x3e, 0x42, 0x78, 0x6a, - 0x26, 0xba, 0x03, 0x19, 0xc6, 0x4d, 0x26, 0xae, 0x11, 0x3a, 0x71, 0x45, 0xd5, 0x85, 0xab, 0x91, - 0x4e, 0x59, 0x69, 0xca, 0x4a, 0xa6, 0xa9, 0x29, 0x18, 0xde, 0x36, 0x2d, 0x15, 0xd3, 0x18, 0x8a, - 0xb4, 0xc4, 0x1e, 0x82, 0xad, 0xca, 0x10, 0xcb, 0x4a, 0x2a, 0x9d, 0x11, 0xa1, 0xf8, 0x1d, 0x01, - 0xc6, 0xbd, 0xe6, 0x88, 0xd3, 0x96, 0x97, 0x42, 0xba, 0x3c, 0x79, 0x83, 0x10, 0x35, 0x16, 0x7f, - 0x8f, 0x3a, 0x36, 0xaa, 0xb9, 0x47, 0xdb, 0x27, 0xce, 0xfe, 0x72, 0x87, 0x85, 0xd4, 0x24, 0x4e, - 0xda, 0xc6, 0x34, 0xba, 0xe6, 0x26, 0x4c, 0xe9, 0x4d, 0x62, 0xe5, 0x75, 0xa7, 0x71, 0xc8, 0x51, - 0x99, 0x83, 0xdd, 0x5d, 0xda, 0x49, 0x3f, 0xad, 0xe4, 0x26, 0x71, 0xc3, 0xc7, 0x76, 0x5d, 0xfc, - 0xfa, 0xc4, 0xa9, 0xf0, 0x65, 0x18, 0xb3, 0x98, 0x68, 0xe2, 0x9d, 0x9c, 0x50, 0xe7, 0x39, 0x8f, - 0x95, 0xa8, 0xfd, 0xfb, 0x09, 0x18, 0x7f, 0xd8, 0xc6, 0xd6, 0xe1, 0x67, 0x49, 0xe9, 0x57, 0x61, - 0x7c, 0x5f, 0xd1, 0x1d, 0x79, 0xdb, 0xb4, 0xe4, 0x76, 0x4b, 0x53, 0x1c, 0x37, 0xae, 0x63, 0x8c, - 0x90, 0xef, 0x9a, 0xd6, 0x26, 0x25, 0x22, 0x0c, 0x68, 0xd7, 0x30, 0xf7, 0x0d, 0x99, 0x90, 0x29, - 0x1a, 0x3e, 0x30, 0xf8, 0x72, 0xf0, 0xe2, 0xeb, 0x7f, 0x7c, 0x34, 0x73, 0x7b, 0xa0, 0xc8, 0x2d, - 0x1a, 0x7b, 0xd6, 0x6e, 0xeb, 0xda, 0xdc, 0xe6, 0xe6, 0xf2, 0x92, 0x24, 0x52, 0x91, 0x8f, 0x99, - 0xc4, 0xda, 0x81, 0xe1, 0xce, 0xe2, 0xff, 0x27, 0x01, 0xa2, 0xaf, 0xa9, 0x38, 0x9b, 0xb3, 0x0c, - 0xd9, 0x27, 0x6d, 0x6c, 0xe9, 0xa7, 0x68, 0x4c, 0xe0, 0x8c, 0xc4, 0x10, 0xbd, 0x0b, 0xb9, 0x90, - 0x1e, 0x92, 0x9f, 0x4c, 0x0f, 0xd9, 0x7d, 0x5f, 0x05, 0xe8, 0x06, 0x4c, 0x38, 0x07, 0x86, 0xcc, - 0x22, 0xf3, 0x58, 0x6c, 0x87, 0x1b, 0x88, 0x30, 0xee, 0x10, 0x7d, 0x10, 0x3a, 0x8d, 0xeb, 0xb0, - 0x8b, 0xbf, 0x23, 0x00, 0xa2, 0x8a, 0x5a, 0x66, 0xab, 0xf6, 0x9f, 0x95, 0x5e, 0x75, 0x1d, 0x44, - 0x1a, 0xe1, 0x28, 0xeb, 0xdb, 0x72, 0x53, 0xb7, 0x6d, 0xdd, 0xa8, 0xf3, 0x6e, 0x95, 0xa7, 0xf4, - 0xe5, 0xed, 0x35, 0x46, 0xe5, 0x0d, 0xfe, 0xaf, 0x60, 0x32, 0x54, 0x8d, 0x38, 0x9b, 0xfc, 0x12, - 0xe4, 0xb6, 0xcd, 0xb6, 0xa1, 0xc9, 0x6c, 0x67, 0x83, 0x2f, 0xf5, 0x65, 0x29, 0x8d, 0xbd, 0xaf, - 0xf8, 0x57, 0x09, 0x98, 0x92, 0xb0, 0x6d, 0x36, 0xf6, 0x70, 0xfc, 0x8a, 0xac, 0x00, 0xdf, 0x53, - 0x91, 0x4f, 0xa5, 0xcf, 0x0c, 0x63, 0x66, 0xd3, 0x5f, 0x78, 0xd5, 0xfc, 0x72, 0xff, 0x7e, 0xdb, - 0xbd, 0x4e, 0xce, 0x17, 0xf2, 0x52, 0xa1, 0x85, 0x3c, 0x13, 0xc6, 0xf5, 0xba, 0x61, 0x12, 0xfb, - 0x66, 0xe3, 0x27, 0x46, 0xbb, 0xe9, 0xe2, 0x9b, 0xb9, 0x7e, 0x85, 0x5c, 0x66, 0x2c, 0x55, 0xfc, - 0x64, 0xbd, 0xdd, 0xa4, 0x5e, 0xf6, 0xe2, 0x59, 0x52, 0xde, 0x67, 0x47, 0x33, 0xf9, 0x50, 0x9a, - 0x2d, 0xe5, 0x75, 0xef, 0x99, 0x48, 0xe7, 0x4d, 0xfe, 0x55, 0x38, 0xd3, 0xa1, 0xf2, 0x38, 0xfd, - 0xa1, 0xdf, 0x4e, 0xc2, 0xf9, 0xb0, 0xf8, 0xb8, 0x51, 0xcb, 0x67, 0xbd, 0x59, 0x2b, 0x30, 0xd6, - 0xd4, 0x8d, 0xd3, 0x2d, 0x5a, 0xe6, 0x9a, 0xba, 0xe1, 0xd1, 0xa2, 0x3a, 0xc8, 0xc8, 0x3f, 0x41, - 0x07, 0x51, 0x60, 0x3a, 0xaa, 0x05, 0xe3, 0xec, 0x25, 0xef, 0x09, 0x90, 0x8b, 0x7b, 0x1d, 0xee, - 0x74, 0x31, 0x69, 0xbc, 0xce, 0x35, 0x18, 0xfb, 0x14, 0x16, 0xee, 0xbe, 0x2f, 0x00, 0xaa, 0x59, - 0x6d, 0x83, 0x00, 0xe2, 0xfb, 0x66, 0x3d, 0xce, 0xca, 0x4e, 0xc1, 0xb0, 0x6e, 0x68, 0xf8, 0x80, - 0x56, 0x36, 0x25, 0xb1, 0x87, 0xd0, 0x76, 0x61, 0x72, 0xa0, 0xed, 0x42, 0x3f, 0x30, 0x25, 0x54, - 0xd0, 0x38, 0xb5, 0xf0, 0xff, 0x12, 0x30, 0xc9, 0xab, 0x13, 0xfb, 0xc2, 0xe5, 0xab, 0x30, 0xdc, - 0x20, 0x32, 0xfb, 0xb4, 0x39, 0x7d, 0xa7, 0xdb, 0xe6, 0x34, 0x33, 0xfa, 0x02, 0x40, 0xcb, 0xc2, - 0x7b, 0x32, 0x63, 0x4d, 0x0e, 0xc4, 0x9a, 0x21, 0x1c, 0x94, 0x80, 0xbe, 0x0c, 0xe3, 0x64, 0x84, - 0xb7, 0x2c, 0xb3, 0x65, 0xda, 0xc4, 0xa1, 0xb1, 0x07, 0x43, 0x45, 0x13, 0xcf, 0x8e, 0x66, 0xc6, - 0xd6, 0x74, 0x63, 0x83, 0x33, 0xd6, 0xaa, 0x12, 0x31, 0x15, 0xde, 0xa3, 0x3b, 0x00, 0xff, 0x50, - 0x80, 0xa9, 0x4f, 0x6d, 0xa9, 0xf7, 0x9f, 0x43, 0x63, 0xde, 0xcc, 0x23, 0xd2, 0xc7, 0x65, 0x63, - 0xdb, 0x8c, 0x7f, 0x01, 0xfe, 0x3d, 0x01, 0x26, 0x02, 0xe2, 0xe3, 0xf4, 0x64, 0x4e, 0xa5, 0xb3, - 0xe2, 0x57, 0x88, 0x6f, 0x13, 0xec, 0xf6, 0x71, 0x0e, 0xaa, 0xdf, 0x48, 0xc0, 0xd9, 0x12, 0xdb, - 0x48, 0x76, 0xa3, 0x2c, 0xe2, 0xec, 0x25, 0x05, 0x18, 0xdd, 0xc3, 0x96, 0xad, 0x9b, 0x6c, 0x86, - 0x1d, 0x93, 0xdc, 0x47, 0x34, 0x0d, 0x69, 0xdb, 0x50, 0x5a, 0xf6, 0x8e, 0xe9, 0xee, 0xdc, 0x79, - 0xcf, 0x5e, 0x44, 0xc8, 0xf0, 0xe9, 0x23, 0x42, 0x46, 0xfa, 0x47, 0x84, 0x8c, 0x7e, 0xe2, 0x88, - 0x10, 0xbe, 0x4d, 0xf6, 0x63, 0x01, 0xce, 0x75, 0xe9, 0x2f, 0xce, 0x3e, 0xf3, 0x0d, 0xc8, 0xaa, - 0x5c, 0x30, 0xb1, 0xc6, 0x6c, 0x27, 0x70, 0x99, 0x64, 0x3b, 0x25, 0x58, 0x79, 0x76, 0x34, 0x03, - 0x6e, 0x51, 0x97, 0x97, 0xb8, 0x8a, 0xc8, 0x7f, 0xad, 0xf8, 0x47, 0x39, 0x18, 0x2f, 0x1f, 0xb0, - 0x75, 0xee, 0x2a, 0xf3, 0x07, 0xd0, 0x5d, 0x48, 0xb7, 0x2c, 0x73, 0x4f, 0x77, 0xab, 0x91, 0x0f, - 0x05, 0x02, 0xb8, 0xd5, 0xe8, 0xe0, 0xda, 0xe0, 0x1c, 0x92, 0xc7, 0x8b, 0x6a, 0x90, 0xb9, 0x6f, - 0xaa, 0x4a, 0xe3, 0xae, 0xde, 0x70, 0xfb, 0xff, 0x2b, 0xc7, 0x0b, 0x9a, 0xf3, 0x78, 0x36, 0x14, - 0x67, 0xc7, 0x6d, 0x0a, 0x8f, 0x88, 0x96, 0x21, 0x5d, 0x71, 0x9c, 0x16, 0x49, 0xe4, 0xd6, 0xe4, - 0xda, 0x00, 0x42, 0x09, 0x8b, 0x1b, 0x5b, 0xea, 0xb2, 0xa3, 0x1a, 0x4c, 0xdc, 0x33, 0xcd, 0x7a, - 0x03, 0x97, 0x1a, 0x66, 0x5b, 0x2b, 0x99, 0xc6, 0xb6, 0x5e, 0xe7, 0xf6, 0xf8, 0xea, 0x00, 0x32, - 0xef, 0x95, 0xaa, 0x52, 0xb7, 0x00, 0xb4, 0x00, 0xe9, 0xea, 0x6d, 0x2e, 0x8c, 0x39, 0x70, 0x57, - 0x06, 0x10, 0x56, 0xbd, 0x2d, 0x79, 0x6c, 0x68, 0x05, 0xb2, 0x0b, 0x4f, 0xdb, 0x16, 0xe6, 0x52, - 0x46, 0x7a, 0x46, 0x21, 0x74, 0x4a, 0xa1, 0x5c, 0x52, 0x90, 0x19, 0x55, 0x21, 0xff, 0xd8, 0xb4, - 0x76, 0x1b, 0xa6, 0xe2, 0xd6, 0x70, 0x94, 0x8a, 0xfb, 0xdc, 0x00, 0xe2, 0x5c, 0x46, 0xa9, 0x43, - 0x04, 0xfa, 0x2a, 0x8c, 0x93, 0xc6, 0xa8, 0x29, 0x5b, 0x0d, 0xb7, 0x90, 0x69, 0x2a, 0xf5, 0xa5, - 0x01, 0xa4, 0x7a, 0x9c, 0xee, 0x46, 0x4b, 0x87, 0xa8, 0xe9, 0x2f, 0xc3, 0x58, 0xa8, 0x13, 0x20, - 0x04, 0xa9, 0x16, 0x69, 0x6f, 0x81, 0x46, 0x0b, 0xd1, 0xff, 0xe8, 0x65, 0x18, 0x35, 0x4c, 0x0d, - 0xbb, 0x23, 0x64, 0x6c, 0x71, 0xea, 0xd9, 0xd1, 0xcc, 0xc8, 0xba, 0xa9, 0x31, 0x77, 0x85, 0xff, - 0x93, 0x46, 0x48, 0x26, 0xd7, 0x59, 0x99, 0xbe, 0x0a, 0x29, 0xd2, 0xfa, 0xc4, 0x48, 0x6d, 0x29, - 0x36, 0xde, 0xb4, 0x74, 0x2e, 0xd3, 0x7d, 0xe4, 0xf9, 0x7e, 0x2e, 0x40, 0xa2, 0x7a, 0x9b, 0x38, - 0xea, 0x5b, 0x6d, 0x75, 0x17, 0x3b, 0x3c, 0x17, 0x7f, 0xa2, 0x0e, 0xbc, 0x85, 0xb7, 0x75, 0xe6, - 0x43, 0x65, 0x24, 0xfe, 0x84, 0x9e, 0x07, 0x50, 0x54, 0x15, 0xdb, 0xb6, 0xec, 0x9e, 0xb2, 0xcb, - 0x48, 0x19, 0x46, 0x59, 0xc5, 0x87, 0x84, 0xcd, 0xc6, 0xaa, 0x85, 0x1d, 0x37, 0xec, 0x89, 0x3d, - 0x11, 0x36, 0x07, 0x37, 0x5b, 0xb2, 0x63, 0xee, 0x62, 0x83, 0xf6, 0x99, 0x0c, 0x31, 0x3e, 0xcd, - 0x56, 0x8d, 0x10, 0x88, 0xdd, 0xc4, 0x86, 0xe6, 0x1b, 0xb9, 0x8c, 0xe4, 0x3d, 0x13, 0x91, 0x16, - 0xae, 0xeb, 0xfc, 0xa0, 0x58, 0x46, 0xe2, 0x4f, 0x44, 0x63, 0x4a, 0xdb, 0xd9, 0xa1, 0xad, 0x92, - 0x91, 0xe8, 0x7f, 0x5e, 0xb5, 0xff, 0x21, 0x40, 0xf2, 0x5e, 0xa9, 0x7a, 0xe2, 0xba, 0xb9, 0x12, - 0x93, 0xbe, 0x44, 0x1a, 0x6d, 0xa8, 0x37, 0x1a, 0xba, 0x51, 0x27, 0x2e, 0xcd, 0x37, 0xb0, 0xea, - 0xd6, 0x2c, 0xcf, 0xc9, 0x1b, 0x8c, 0x8a, 0x66, 0x21, 0xab, 0x5a, 0x58, 0xc3, 0x86, 0xa3, 0x2b, - 0x0d, 0x9b, 0x57, 0x31, 0x48, 0xe2, 0x85, 0xfb, 0x96, 0x00, 0xc3, 0xb4, 0xf3, 0xa2, 0xe7, 0x20, - 0xa3, 0x9a, 0x86, 0xa3, 0xe8, 0x06, 0xb7, 0x42, 0x19, 0xc9, 0x27, 0xf4, 0x2c, 0xe4, 0x25, 0xc8, - 0x29, 0xaa, 0x6a, 0xb6, 0x0d, 0x47, 0x36, 0x94, 0x26, 0xe6, 0x85, 0xcd, 0x72, 0xda, 0xba, 0xd2, - 0xc4, 0x68, 0x06, 0xdc, 0x47, 0xef, 0xac, 0x63, 0x46, 0x02, 0x4e, 0x5a, 0xc5, 0x87, 0xbc, 0x24, - 0x3f, 0x16, 0x20, 0xed, 0x76, 0x7a, 0x52, 0x98, 0x3a, 0x36, 0xb0, 0xa5, 0x38, 0xa6, 0x57, 0x18, - 0x8f, 0xd0, 0x39, 0xe3, 0x65, 0xfc, 0x19, 0x6f, 0x0a, 0x86, 0x1d, 0xd2, 0xaf, 0x79, 0x39, 0xd8, - 0x03, 0x5d, 0x97, 0x6e, 0x28, 0x75, 0xb6, 0x14, 0x97, 0x91, 0xd8, 0x03, 0xa9, 0x12, 0x8f, 0x98, - 0x65, 0xda, 0xe1, 0x4f, 0xa4, 0xbc, 0x2c, 0xa2, 0x73, 0x0b, 0xd7, 0x75, 0x83, 0x76, 0x80, 0xa4, - 0x04, 0x94, 0xb4, 0x48, 0x28, 0xe8, 0x02, 0x64, 0x58, 0x06, 0x6c, 0x68, 0xb4, 0x17, 0x24, 0xa5, - 0x34, 0x25, 0x94, 0xdd, 0xc3, 0x5c, 0xd3, 0xbb, 0x90, 0xf1, 0xc6, 0x18, 0x69, 0xc8, 0xb6, 0xed, - 0x29, 0x95, 0xfe, 0x47, 0xaf, 0xc0, 0xd4, 0x93, 0xb6, 0xd2, 0xd0, 0xb7, 0xe9, 0x2a, 0x1b, 0xc9, - 0xc6, 0xf4, 0xc7, 0xea, 0x83, 0xbc, 0x34, 0x2a, 0x81, 0xaa, 0xd1, 0x1d, 0x92, 0x49, 0x7f, 0x48, - 0x06, 0xb7, 0x4d, 0x8a, 0x1f, 0x0a, 0x30, 0xc1, 0x02, 0x87, 0x58, 0xdc, 0x69, 0x7c, 0x0e, 0xc6, - 0x9b, 0x90, 0xd1, 0x14, 0x47, 0x61, 0xe7, 0x39, 0x13, 0x7d, 0xcf, 0x73, 0x7a, 0xa7, 0x09, 0x14, - 0x47, 0xa1, 0x67, 0x3a, 0x11, 0xa4, 0xc8, 0x7f, 0x76, 0x00, 0x56, 0xa2, 0xff, 0xfd, 0x20, 0x8c, - 0x60, 0x71, 0xe3, 0x74, 0xb8, 0xe6, 0xe1, 0x0c, 0xd1, 0x7e, 0xd9, 0x50, 0xad, 0xc3, 0x96, 0xa3, - 0x9b, 0xc6, 0x03, 0xfa, 0x6b, 0x23, 0x31, 0xb0, 0x89, 0x45, 0xf7, 0xae, 0x78, 0x59, 0x7e, 0x34, - 0x02, 0x63, 0xe5, 0x83, 0x96, 0x69, 0xc5, 0xba, 0xa8, 0xb5, 0x08, 0xa3, 0x1c, 0xf1, 0xf7, 0xd9, - 0x56, 0xee, 0xb0, 0xd5, 0xee, 0x8e, 0x2d, 0x67, 0x44, 0x8b, 0x00, 0x2c, 0x42, 0x94, 0xc6, 0x1d, - 0x25, 0x4f, 0xb0, 0xb9, 0x46, 0xd9, 0x08, 0x15, 0xad, 0x43, 0xb6, 0xb9, 0xa7, 0xaa, 0xf2, 0xb6, - 0xde, 0x70, 0x78, 0x88, 0x5d, 0x74, 0x7c, 0xf8, 0xda, 0xa3, 0x52, 0xe9, 0x2e, 0xcd, 0xc4, 0xa2, - 0xdd, 0xfc, 0x67, 0x09, 0x88, 0x04, 0xf6, 0x1f, 0xbd, 0x04, 0xfc, 0x9c, 0x8d, 0x6c, 0xbb, 0x47, - 0xea, 0x16, 0xc7, 0x9e, 0x1d, 0xcd, 0x64, 0x24, 0x4a, 0xad, 0x56, 0x6b, 0x52, 0x86, 0x65, 0xa8, - 0xda, 0x0e, 0x7a, 0x01, 0xc6, 0xcc, 0xa6, 0xee, 0xc8, 0xae, 0x0f, 0xc4, 0xdd, 0xc6, 0x1c, 0x21, - 0xba, 0x3e, 0x12, 0xaa, 0xc1, 0x35, 0x6c, 0xd0, 0x51, 0x40, 0xea, 0x29, 0x6f, 0xb1, 0xb5, 0x48, - 0x87, 0x8d, 0x77, 0xd9, 0x6c, 0x39, 0x7a, 0x53, 0x7f, 0x4a, 0x37, 0xb6, 0xf9, 0xde, 0xd2, 0x0b, - 0x2c, 0x3b, 0xa9, 0xdf, 0x22, 0x5d, 0xa4, 0xe4, 0x79, 0x1f, 0x04, 0xb2, 0xa2, 0x6f, 0x09, 0x70, - 0x96, 0x2b, 0x52, 0xde, 0xa2, 0x01, 0xee, 0x4a, 0x43, 0x77, 0x0e, 0xe5, 0xdd, 0xbd, 0x42, 0x9a, - 0x3a, 0xa7, 0x9f, 0x8f, 0x6c, 0x90, 0x40, 0x3f, 0x98, 0x73, 0x9b, 0xe5, 0xf0, 0x3e, 0x67, 0x5e, - 0xdd, 0x2b, 0x1b, 0x8e, 0x75, 0xb8, 0x78, 0xee, 0xd9, 0xd1, 0xcc, 0x64, 0x77, 0xea, 0x23, 0x69, - 0xd2, 0xee, 0x66, 0x41, 0x15, 0x00, 0xec, 0xf5, 0x46, 0x1a, 0x24, 0x18, 0xed, 0x5e, 0x44, 0x76, - 0x5b, 0x29, 0xc0, 0x8b, 0xae, 0x83, 0xc8, 0x8f, 0xb8, 0x6c, 0xeb, 0x0d, 0x2c, 0xdb, 0xfa, 0x53, - 0x5c, 0x00, 0x6a, 0x83, 0xf2, 0x8c, 0x4e, 0x44, 0x54, 0xf5, 0xa7, 0x78, 0xfa, 0x1b, 0x50, 0xe8, - 0x55, 0xfa, 0xe0, 0x40, 0xc8, 0xb0, 0x4d, 0xdc, 0x37, 0xc2, 0x2b, 0x32, 0x03, 0x74, 0x55, 0x77, - 0x55, 0x26, 0xf1, 0x86, 0x6b, 0x82, 0x7e, 0x90, 0x80, 0xb1, 0xc5, 0x76, 0x63, 0xf7, 0x41, 0xab, - 0xda, 0x6e, 0x36, 0x15, 0xeb, 0x90, 0x98, 0x4a, 0x66, 0x3a, 0x48, 0x31, 0x05, 0x66, 0x2a, 0xa9, - 0x6d, 0xd0, 0x9f, 0x62, 0x32, 0x99, 0x05, 0x0f, 0x75, 0xb3, 0x00, 0x7e, 0x5a, 0x93, 0xc0, 0x49, - 0x6d, 0x73, 0xdf, 0x46, 0x6f, 0x40, 0x21, 0x90, 0x91, 0x2e, 0x9f, 0xc8, 0xd8, 0x70, 0x2c, 0x1d, - 0xb3, 0xe5, 0xc0, 0xa4, 0x14, 0x08, 0xbd, 0x59, 0x26, 0xc9, 0x65, 0x96, 0x8a, 0x6a, 0x90, 0x23, - 0x19, 0x0f, 0x65, 0x3a, 0xd9, 0xb8, 0x8b, 0xb6, 0x37, 0x23, 0x2a, 0x17, 0x2a, 0xf7, 0x1c, 0xd5, - 0x52, 0x89, 0xf2, 0xd0, 0xbf, 0x52, 0x16, 0xfb, 0x94, 0xe9, 0xb7, 0x41, 0xec, 0xcc, 0x10, 0xd4, - 0x68, 0x8a, 0x69, 0x74, 0x2a, 0xa8, 0xd1, 0x64, 0x40, 0x5b, 0x2b, 0xa9, 0x74, 0x4a, 0x1c, 0x2e, - 0xfe, 0x22, 0x09, 0x79, 0xb7, 0xb3, 0xc5, 0x89, 0x66, 0x16, 0x61, 0x98, 0x74, 0x0d, 0x37, 0x50, - 0xe4, 0x6a, 0x9f, 0x3e, 0xce, 0x83, 0xc5, 0x49, 0x97, 0x71, 0xf1, 0x30, 0x65, 0x8d, 0xc3, 0xec, - 0x4c, 0xff, 0xeb, 0x04, 0xa4, 0x28, 0x80, 0xb8, 0x09, 0x29, 0x3a, 0x75, 0x08, 0x83, 0x4c, 0x1d, - 0x34, 0xab, 0x37, 0xd9, 0x25, 0x02, 0xfe, 0x27, 0x71, 0xe6, 0x76, 0x94, 0xd7, 0x6e, 0xde, 0xa2, - 0x26, 0x27, 0x27, 0xf1, 0x27, 0xb4, 0x48, 0x23, 0x98, 0x4c, 0xcb, 0xc1, 0x1a, 0x77, 0xdc, 0x67, - 0x8f, 0x6b, 0x5f, 0x77, 0x9a, 0x72, 0xf9, 0xd0, 0x79, 0x48, 0x12, 0x5b, 0x36, 0xca, 0xa2, 0x1b, - 0x9e, 0x1d, 0xcd, 0x24, 0x89, 0x15, 0x23, 0x34, 0x34, 0x0f, 0xd9, 0xb0, 0xe1, 0x10, 0xae, 0x67, - 0x98, 0x79, 0x0c, 0x0c, 0x7a, 0x68, 0x78, 0x03, 0x8c, 0x81, 0x56, 0xde, 0xc6, 0xdf, 0x1c, 0x86, - 0xb1, 0xe5, 0x66, 0xdc, 0x13, 0xcb, 0x42, 0xb8, 0x85, 0xa3, 0xd0, 0x4e, 0xe8, 0xa5, 0x11, 0x0d, - 0x1c, 0x9a, 0xd3, 0x93, 0x27, 0x9b, 0xd3, 0x97, 0x89, 0x0b, 0xcc, 0x6f, 0x69, 0x48, 0xf6, 0x00, - 0x36, 0xe1, 0xf7, 0x53, 0x2f, 0x46, 0x22, 0x3c, 0xfe, 0xf1, 0x09, 0x1a, 0xa1, 0xf2, 0x36, 0xf5, - 0xb4, 0x59, 0x2f, 0x1b, 0x19, 0xbc, 0x97, 0x8d, 0x62, 0x43, 0xa3, 0x53, 0x5b, 0xd8, 0xae, 0x8e, - 0x9e, 0xde, 0xae, 0x4e, 0x3f, 0xe5, 0x9d, 0xf5, 0x4d, 0x48, 0x6a, 0xba, 0xdb, 0x38, 0x83, 0x4f, - 0xd8, 0x84, 0xe9, 0x98, 0x5e, 0x9b, 0x0a, 0xf6, 0xda, 0xe0, 0x02, 0xc7, 0xf4, 0x03, 0x00, 0x5f, - 0x43, 0x68, 0x16, 0x46, 0xcc, 0x86, 0xe6, 0x9e, 0x22, 0x19, 0x5b, 0xcc, 0x3c, 0x3b, 0x9a, 0x19, - 0x7e, 0xd0, 0xd0, 0x96, 0x97, 0xa4, 0x61, 0xb3, 0xa1, 0x2d, 0x6b, 0xf4, 0xa2, 0x0c, 0xbc, 0x2f, - 0x7b, 0x01, 0x6b, 0x39, 0x69, 0xd4, 0xc0, 0xfb, 0x4b, 0xd8, 0x56, 0x3b, 0x02, 0x69, 0x48, 0x17, - 0x7c, 0x5f, 0x80, 0xbc, 0xdb, 0x1a, 0xf1, 0x9a, 0x99, 0xb4, 0xde, 0xe4, 0xc3, 0x2e, 0x79, 0xb2, - 0x61, 0xe7, 0xf2, 0xf1, 0x53, 0xb8, 0xdf, 0x16, 0x78, 0xb0, 0x72, 0x55, 0x55, 0x1c, 0xe2, 0x6c, - 0xc4, 0x38, 0x54, 0x5e, 0x04, 0xd1, 0x52, 0x0c, 0xcd, 0x6c, 0xea, 0x4f, 0x31, 0x5b, 0x11, 0xb5, - 0xf9, 0xe6, 0xe6, 0xb8, 0x47, 0xa7, 0x4b, 0x7e, 0xee, 0x82, 0xee, 0x8f, 0x12, 0x3c, 0xb0, 0xd9, - 0x2b, 0x4c, 0x9c, 0x4a, 0xfb, 0x3a, 0x4c, 0x74, 0xde, 0x63, 0xe2, 0x8e, 0xe2, 0x97, 0x23, 0xe4, - 0x45, 0x15, 0x84, 0x05, 0x22, 0xba, 0x91, 0xf3, 0x1d, 0x77, 0x9a, 0xd8, 0xa8, 0x04, 0xd9, 0xe0, - 0xf5, 0x28, 0xc9, 0x81, 0xaf, 0x47, 0x01, 0xcb, 0xbb, 0x14, 0x65, 0xfa, 0x4b, 0x30, 0x4c, 0x93, - 0x4f, 0x61, 0xba, 0x79, 0x9b, 0xfe, 0x59, 0x02, 0x2e, 0xd3, 0xd2, 0x3f, 0xc2, 0x96, 0xbe, 0x7d, - 0xb8, 0x61, 0x99, 0x0e, 0x56, 0x1d, 0xac, 0xf9, 0xc7, 0x41, 0x62, 0xb5, 0x87, 0x99, 0x96, 0xfb, - 0x82, 0x13, 0x05, 0xa0, 0x79, 0x5c, 0x68, 0x15, 0xc6, 0x79, 0x30, 0x81, 0xd2, 0xd0, 0xf7, 0xb0, - 0xac, 0x38, 0x27, 0x99, 0xf5, 0xc6, 0x18, 0xef, 0x02, 0x61, 0x5d, 0x70, 0x90, 0x06, 0x19, 0x2e, - 0x4c, 0xd7, 0xf8, 0xdd, 0x3e, 0xf7, 0x3e, 0xd9, 0x6a, 0x62, 0x9a, 0x45, 0x34, 0x2c, 0x2f, 0x49, - 0x69, 0x26, 0xd9, 0xdb, 0x0d, 0xfa, 0x99, 0x00, 0x57, 0x8e, 0x51, 0x74, 0x9c, 0x1d, 0x78, 0x1a, - 0xd2, 0x7b, 0xe4, 0x45, 0x3a, 0xd7, 0x74, 0x5a, 0xf2, 0x9e, 0xd1, 0x1a, 0x8c, 0x6d, 0x2b, 0x7a, - 0xc3, 0xef, 0xd8, 0xbd, 0xa3, 0x16, 0xa3, 0x83, 0x69, 0x73, 0x8c, 0x9d, 0xf5, 0xe4, 0xe2, 0xfb, - 0x09, 0x98, 0x58, 0xd0, 0xb4, 0x6a, 0x95, 0xdb, 0xc6, 0xf8, 0xfa, 0x8b, 0x0b, 0x4a, 0x13, 0x3e, - 0x28, 0x45, 0x2f, 0x03, 0xd2, 0x74, 0x9b, 0xdd, 0x1b, 0x62, 0xef, 0x28, 0x9a, 0xb9, 0xef, 0xc7, - 0x63, 0x4c, 0xb8, 0x29, 0x55, 0x37, 0x01, 0x55, 0x81, 0x22, 0x22, 0xd9, 0x76, 0x14, 0x6f, 0x4b, - 0xe9, 0xca, 0x40, 0xa7, 0xb7, 0x18, 0x54, 0xf2, 0x1e, 0xa5, 0x0c, 0x91, 0x43, 0xff, 0x12, 0xdf, - 0x5e, 0x27, 0x55, 0x77, 0x64, 0xc5, 0x76, 0x8f, 0x0b, 0xb1, 0x1b, 0x4b, 0xf2, 0x8c, 0xbe, 0x60, - 0x07, 0x4f, 0x01, 0xb1, 0x73, 0x0c, 0xbe, 0x82, 0xe2, 0x84, 0xd0, 0xff, 0x57, 0x80, 0xbc, 0x84, - 0xb7, 0x2d, 0x6c, 0xc7, 0xba, 0x94, 0x70, 0x17, 0x72, 0x16, 0x93, 0x2a, 0x6f, 0x5b, 0x66, 0xf3, - 0x24, 0x63, 0x2c, 0xcb, 0x19, 0xef, 0x5a, 0x66, 0x33, 0x74, 0x89, 0xc3, 0x23, 0x18, 0xf7, 0x4a, - 0x1a, 0xa7, 0x0a, 0x3e, 0xa4, 0x27, 0x96, 0x99, 0xe0, 0xb8, 0x03, 0x23, 0x3e, 0x0d, 0x3d, 0xd0, - 0x3d, 0xac, 0x60, 0x71, 0xe3, 0x54, 0xc6, 0x5f, 0x08, 0x90, 0xaf, 0xb6, 0xb7, 0xd8, 0xb5, 0x55, - 0xf1, 0xe9, 0xa1, 0x0c, 0x99, 0x06, 0xde, 0x76, 0xe4, 0x53, 0xc5, 0xde, 0xa7, 0x09, 0x2b, 0x3d, - 0x7f, 0x70, 0x0f, 0xc0, 0xa2, 0x67, 0xec, 0xa8, 0x9c, 0xe4, 0x09, 0xe5, 0x64, 0x28, 0xaf, 0xef, - 0x3e, 0x15, 0x3f, 0x4c, 0xc0, 0xb8, 0x57, 0xd9, 0x38, 0xad, 0xe7, 0xe3, 0x90, 0xd5, 0x48, 0x9e, - 0xc4, 0x6a, 0x4c, 0xf0, 0xb8, 0x90, 0x68, 0xcb, 0x31, 0x07, 0x93, 0xd4, 0xb9, 0x91, 0x95, 0x56, - 0xab, 0xa1, 0xbb, 0x20, 0x99, 0xda, 0xa5, 0x94, 0x34, 0x41, 0x93, 0x16, 0x58, 0x0a, 0x85, 0xc7, - 0xa4, 0xff, 0x6d, 0x5b, 0x18, 0x3f, 0xc5, 0x32, 0xc5, 0x6b, 0x27, 0x89, 0x7b, 0xc9, 0x32, 0xc6, - 0x2a, 0xe1, 0xe3, 0x3d, 0xef, 0x6b, 0x30, 0x41, 0x35, 0x1b, 0xf7, 0x19, 0x5d, 0xde, 0x1c, 0xdf, - 0x4d, 0x00, 0x0a, 0xca, 0xff, 0xf4, 0x5a, 0x24, 0x11, 0x5f, 0x8b, 0xbc, 0x04, 0x88, 0xc5, 0x42, - 0xda, 0x72, 0x0b, 0x5b, 0xb2, 0x8d, 0x55, 0x93, 0x5f, 0xa6, 0x24, 0x48, 0x22, 0x4f, 0xd9, 0xc0, - 0x56, 0x95, 0xd2, 0xd1, 0x1d, 0x00, 0xdf, 0x6b, 0xe3, 0xd3, 0x49, 0x5f, 0xa7, 0x4d, 0xca, 0x78, - 0xee, 0x5a, 0xf1, 0xbd, 0x69, 0xc8, 0x71, 0x4d, 0x6e, 0x1a, 0xba, 0x69, 0xa0, 0x9b, 0x90, 0xac, - 0xf3, 0x6d, 0x86, 0x6c, 0xe4, 0x42, 0x9f, 0x7f, 0x7f, 0x5c, 0x65, 0x48, 0x22, 0x79, 0x09, 0x4b, - 0xab, 0xed, 0x44, 0x38, 0x4f, 0x7e, 0xc4, 0x77, 0x90, 0xa5, 0xd5, 0x76, 0x50, 0x15, 0xc6, 0x55, - 0xff, 0x36, 0x2c, 0x99, 0xb0, 0x27, 0x7b, 0x02, 0xb0, 0xc8, 0x5b, 0xc8, 0x2a, 0x43, 0x52, 0x5e, - 0x0d, 0x25, 0xa0, 0x52, 0xf0, 0xfa, 0xa5, 0x54, 0x57, 0xc0, 0x98, 0x7f, 0x18, 0x38, 0x7c, 0xf5, - 0x53, 0x65, 0x28, 0x70, 0x4b, 0x13, 0x7a, 0x13, 0x46, 0x34, 0x7a, 0xad, 0x0f, 0xef, 0xd7, 0x51, - 0x5d, 0x2f, 0x74, 0x93, 0x52, 0x65, 0x48, 0xe2, 0x1c, 0x68, 0x05, 0x72, 0xec, 0x1f, 0x73, 0x62, - 0x38, 0x2a, 0xbd, 0xd2, 0x5b, 0x42, 0x60, 0x6a, 0xa8, 0x0c, 0x49, 0x59, 0xcd, 0xa7, 0xa2, 0x57, - 0x21, 0x65, 0xab, 0x8a, 0x8b, 0x4b, 0x2f, 0xf6, 0xb8, 0x91, 0xc3, 0x67, 0xa6, 0xb9, 0xd1, 0x1d, - 0x76, 0x2f, 0xa4, 0x73, 0xe0, 0x2e, 0x14, 0x46, 0x15, 0x3f, 0x74, 0xce, 0x9b, 0x14, 0x1f, 0x53, - 0x02, 0xba, 0x07, 0x59, 0x85, 0x78, 0x83, 0x32, 0x3d, 0x95, 0x49, 0x57, 0x06, 0xa3, 0xf7, 0xe0, - 0xbb, 0x4e, 0xd4, 0x56, 0xe8, 0x61, 0x72, 0x97, 0xe8, 0x0b, 0x6a, 0x62, 0xab, 0x8e, 0x0b, 0xd9, - 0xfe, 0x82, 0x82, 0x01, 0x62, 0x9e, 0x20, 0x4a, 0x24, 0x5e, 0xe1, 0x8e, 0x7b, 0xe2, 0x86, 0x56, - 0x2a, 0xd7, 0x73, 0xbf, 0x37, 0xe2, 0xc4, 0x50, 0x65, 0x48, 0xca, 0xed, 0x04, 0xc8, 0x68, 0x0e, - 0x12, 0x75, 0xb5, 0x30, 0xd6, 0x73, 0x84, 0x78, 0xe7, 0x61, 0x2a, 0x43, 0x52, 0xa2, 0xae, 0xa2, - 0xb7, 0x21, 0xcd, 0x0e, 0x34, 0x1c, 0x18, 0x85, 0x7c, 0x4f, 0x3b, 0x11, 0x3e, 0x16, 0x52, 0x19, - 0x92, 0xe8, 0x19, 0x0a, 0xf2, 0xbe, 0x0d, 0xc8, 0x5b, 0x2c, 0xc2, 0xce, 0x8d, 0x8d, 0x15, 0x7b, - 0xee, 0x81, 0x47, 0x85, 0xc7, 0x56, 0x28, 0x3a, 0x08, 0xd0, 0xd1, 0xd7, 0x61, 0x2a, 0x2c, 0x91, - 0xf7, 0xb4, 0x89, 0x9e, 0xfb, 0xb9, 0x3d, 0x83, 0x34, 0x2b, 0x43, 0x12, 0xb2, 0xba, 0x12, 0xd1, - 0xeb, 0x30, 0xcc, 0x5a, 0x0d, 0x51, 0x91, 0x51, 0xc1, 0x1d, 0x1d, 0x0d, 0xc6, 0xf2, 0x93, 0xce, - 0xef, 0xf0, 0xd0, 0x32, 0xb9, 0x61, 0xd6, 0x0b, 0x93, 0x3d, 0x3b, 0x7f, 0x77, 0xa8, 0x1c, 0xe9, - 0xfc, 0x8e, 0x4f, 0x25, 0xed, 0x6e, 0xb1, 0x14, 0x1e, 0x89, 0x34, 0xd5, 0xb3, 0xdd, 0x23, 0x22, - 0xce, 0x2a, 0xf4, 0x60, 0x80, 0x4f, 0x26, 0x45, 0xb3, 0xd8, 0xf5, 0x31, 0x32, 0x1d, 0x53, 0x67, - 0x7a, 0x16, 0xad, 0xfb, 0x96, 0x9d, 0x0a, 0xf5, 0x9a, 0x3c, 0x2a, 0x7a, 0x04, 0x22, 0xbf, 0xd8, - 0xc1, 0xdf, 0x95, 0x38, 0x4b, 0xe5, 0xbd, 0x18, 0x69, 0xba, 0xa2, 0x42, 0x77, 0x2a, 0x43, 0xd2, - 0xb8, 0x1a, 0x4e, 0x41, 0xef, 0xc0, 0x04, 0x95, 0x27, 0xab, 0xfe, 0x8d, 0x1c, 0x85, 0x42, 0xd7, - 0xcd, 0x0e, 0xbd, 0x2f, 0xef, 0x70, 0x25, 0x8b, 0x6a, 0x47, 0x12, 0xe9, 0xc6, 0xba, 0xa1, 0x3b, - 0xd4, 0xca, 0x4e, 0xf7, 0xec, 0xc6, 0xe1, 0xdb, 0x03, 0x49, 0x37, 0xd6, 0x19, 0x85, 0x74, 0x63, - 0x87, 0x87, 0xa9, 0xf1, 0xe6, 0x78, 0xae, 0x67, 0x37, 0x8e, 0x8a, 0x67, 0x23, 0xdd, 0xd8, 0x09, - 0xd2, 0x49, 0x37, 0x66, 0x06, 0xa2, 0x43, 0xee, 0xf3, 0x3d, 0xbb, 0x71, 0xcf, 0x73, 0xd1, 0xa4, - 0x1b, 0x2b, 0x5d, 0x89, 0x68, 0x09, 0x80, 0x39, 0x35, 0x74, 0x52, 0xbc, 0xd8, 0x73, 0x32, 0xe8, - 0x0c, 0x54, 0x23, 0x93, 0x41, 0xc3, 0xa5, 0x11, 0x43, 0x46, 0xa1, 0x94, 0x4c, 0xb7, 0x68, 0x0b, - 0x33, 0x3d, 0x0d, 0x59, 0xd7, 0xe6, 0x29, 0x31, 0x64, 0xfb, 0x1e, 0x91, 0xcc, 0x2a, 0x6c, 0xbd, - 0xb8, 0x30, 0xdb, 0xdb, 0x2c, 0x07, 0x37, 0x8f, 0xa8, 0x59, 0xa6, 0x04, 0xb4, 0x00, 0x19, 0x32, - 0xe7, 0x1f, 0x52, 0x33, 0x74, 0xa9, 0xa7, 0x7f, 0xda, 0x71, 0xf2, 0xa5, 0x32, 0x24, 0xa5, 0x9f, - 0x70, 0x12, 0x79, 0x3d, 0x5b, 0x37, 0x2b, 0x14, 0x7b, 0xbe, 0x3e, 0xb4, 0xea, 0x4a, 0x5e, 0xcf, - 0x38, 0x90, 0x0a, 0x67, 0x58, 0x5b, 0xf1, 0x63, 0xc9, 0x16, 0x3f, 0x43, 0x5b, 0x78, 0x81, 0x8a, - 0xea, 0xb9, 0xf4, 0x14, 0x79, 0x5a, 0xba, 0x32, 0x24, 0x4d, 0x2a, 0xdd, 0xa9, 0x64, 0xc0, 0xf3, - 0xa9, 0x87, 0x2d, 0x58, 0x15, 0x2e, 0xf7, 0x1c, 0xf0, 0x11, 0xab, 0x7d, 0x64, 0xc0, 0x2b, 0x01, - 0x32, 0x9b, 0x80, 0x34, 0xd9, 0xb6, 0xd9, 0x86, 0xfe, 0x95, 0x3e, 0x13, 0x50, 0xc7, 0x1a, 0x01, - 0x9b, 0x80, 0xb4, 0x2a, 0xe3, 0x24, 0x82, 0xd4, 0x06, 0x56, 0x2c, 0x6e, 0x66, 0xaf, 0xf6, 0x14, - 0xd4, 0x75, 0x21, 0x1f, 0x11, 0xa4, 0x7a, 0x44, 0xe2, 0xf0, 0x58, 0xee, 0x8d, 0x30, 0xdc, 0x61, - 0xbc, 0xd6, 0xd3, 0xe1, 0x89, 0xbc, 0xb8, 0x86, 0x38, 0x3c, 0x56, 0x28, 0x01, 0x7d, 0x01, 0x46, - 0x39, 0xa0, 0x2b, 0x5c, 0xef, 0xe3, 0xc6, 0x06, 0x91, 0x38, 0x19, 0xd7, 0x9c, 0x87, 0x59, 0x59, - 0x06, 0x24, 0x59, 0xf5, 0x5e, 0xec, 0x63, 0x65, 0xbb, 0xb0, 0x2c, 0xb3, 0xb2, 0x3e, 0x99, 0x58, - 0x59, 0xd6, 0x4f, 0xf9, 0x5c, 0x77, 0xa3, 0xa7, 0x95, 0xed, 0x3e, 0x51, 0x43, 0xac, 0xec, 0x13, - 0x9f, 0x4a, 0x6a, 0x66, 0x33, 0x10, 0x55, 0xf8, 0x5c, 0xcf, 0x9a, 0x85, 0x31, 0x25, 0xa9, 0x19, - 0xe7, 0x21, 0xcd, 0xc6, 0x5c, 0x62, 0xa6, 0xe9, 0x97, 0x7a, 0xdf, 0x00, 0xd0, 0x09, 0x3d, 0x2a, - 0xee, 0x62, 0x26, 0xd3, 0xb0, 0x67, 0xa8, 0x2c, 0x7e, 0xde, 0x99, 0x6b, 0xea, 0xe5, 0xfe, 0x86, - 0x2a, 0xea, 0x28, 0xb7, 0x67, 0xa8, 0x42, 0x89, 0xb4, 0xa8, 0xec, 0x10, 0x1b, 0x1d, 0xdf, 0x73, - 0x7d, 0x2e, 0x2b, 0xe8, 0x38, 0x50, 0x48, 0x8b, 0xea, 0x11, 0xfd, 0x21, 0xd4, 0x66, 0xb7, 0x6a, - 0x14, 0xe6, 0xfb, 0x0f, 0xa1, 0xf0, 0xed, 0x1e, 0xde, 0x10, 0xe2, 0x64, 0x6f, 0xce, 0x74, 0x3d, - 0x8c, 0x57, 0xfa, 0xcf, 0x99, 0x9d, 0xae, 0x05, 0x9b, 0x33, 0xb9, 0x4f, 0xf1, 0x6f, 0x04, 0x98, - 0x65, 0x65, 0xa3, 0xeb, 0x7d, 0x87, 0xb2, 0xb7, 0x76, 0x1a, 0x38, 0x3e, 0x71, 0x93, 0xbe, 0xe0, - 0xf5, 0x5e, 0xc5, 0x3d, 0x66, 0x2d, 0xb8, 0x32, 0x24, 0x3d, 0xaf, 0xf4, 0xcb, 0xb7, 0x38, 0xca, - 0xb7, 0x54, 0xbd, 0x73, 0xa4, 0xe3, 0xa2, 0xb8, 0x92, 0x4a, 0x9f, 0x13, 0x0b, 0x2b, 0xa9, 0xf4, - 0x79, 0x71, 0x7a, 0x25, 0x95, 0xbe, 0x20, 0x3e, 0x57, 0xfc, 0xcb, 0xf3, 0x30, 0xe6, 0x22, 0x3f, - 0x86, 0x88, 0x6e, 0x05, 0x11, 0xd1, 0xc5, 0x5e, 0x88, 0x88, 0x63, 0x45, 0x0e, 0x89, 0x6e, 0x05, - 0x21, 0xd1, 0xc5, 0x5e, 0x90, 0xc8, 0xe7, 0x21, 0x98, 0xa8, 0xd6, 0x0b, 0x13, 0xbd, 0x38, 0x00, - 0x26, 0xf2, 0x44, 0x75, 0x82, 0xa2, 0xa5, 0x6e, 0x50, 0x74, 0xb9, 0x3f, 0x28, 0xf2, 0x44, 0x05, - 0x50, 0xd1, 0x9d, 0x0e, 0x54, 0x74, 0xa9, 0x0f, 0x2a, 0xf2, 0xf8, 0x5d, 0x58, 0xb4, 0x1a, 0x09, - 0x8b, 0xae, 0x1e, 0x07, 0x8b, 0x3c, 0x39, 0x21, 0x5c, 0xf4, 0x5a, 0x08, 0x17, 0xcd, 0xf4, 0xc4, - 0x45, 0x1e, 0x37, 0x03, 0x46, 0x6f, 0x75, 0x02, 0xa3, 0x4b, 0x7d, 0x80, 0x91, 0x5f, 0x03, 0x8e, - 0x8c, 0x2a, 0x51, 0xc8, 0xe8, 0xca, 0x31, 0xc8, 0xc8, 0x93, 0x12, 0x84, 0x46, 0x95, 0x28, 0x68, - 0x74, 0xe5, 0x18, 0x68, 0xd4, 0x21, 0x89, 0x61, 0xa3, 0xf5, 0x68, 0x6c, 0x74, 0xed, 0x58, 0x6c, - 0xe4, 0x49, 0x0b, 0x83, 0xa3, 0xf9, 0x00, 0x38, 0x7a, 0xbe, 0x07, 0x38, 0xf2, 0x58, 0x09, 0x3a, - 0xfa, 0x62, 0x17, 0x3a, 0x2a, 0xf6, 0x43, 0x47, 0x1e, 0xaf, 0x07, 0x8f, 0x1e, 0xf6, 0x80, 0x47, - 0xd7, 0x8f, 0x87, 0x47, 0x9e, 0xb0, 0x0e, 0x7c, 0xa4, 0xf4, 0xc5, 0x47, 0x2f, 0x0f, 0x88, 0x8f, - 0x3c, 0xe9, 0x51, 0x00, 0xe9, 0x8d, 0x30, 0x40, 0x9a, 0xed, 0x0d, 0x90, 0x3c, 0x31, 0x1c, 0x21, - 0xad, 0x46, 0x22, 0xa4, 0xab, 0xc7, 0x21, 0x24, 0x7f, 0x1c, 0x04, 0x21, 0xd2, 0x7a, 0x34, 0x44, - 0xba, 0x76, 0x2c, 0x44, 0xf2, 0x9b, 0x3f, 0x84, 0x91, 0x56, 0x23, 0x31, 0xd2, 0xd5, 0xe3, 0x30, - 0x92, 0x5f, 0xb8, 0x20, 0x48, 0x7a, 0xdc, 0x13, 0x24, 0xdd, 0x18, 0x04, 0x24, 0x79, 0x42, 0xbb, - 0x50, 0xd2, 0xbb, 0xbd, 0x51, 0xd2, 0xe7, 0x4e, 0x70, 0xc5, 0x61, 0x24, 0x4c, 0xfa, 0x62, 0x17, - 0x4c, 0x2a, 0xf6, 0x83, 0x49, 0x7e, 0x7f, 0x76, 0x71, 0x92, 0xd2, 0x17, 0xd5, 0xbc, 0x3c, 0x20, - 0xaa, 0xf1, 0x3b, 0x5f, 0x04, 0xac, 0x29, 0x47, 0xc0, 0x9a, 0xcb, 0xfd, 0x61, 0x8d, 0x6f, 0xce, - 0x7d, 0x5c, 0x53, 0x89, 0xc2, 0x35, 0x57, 0x8e, 0xc1, 0x35, 0xbe, 0x15, 0x0a, 0x00, 0x9b, 0x3b, - 0x1d, 0xc0, 0xe6, 0xd2, 0xb1, 0x11, 0x43, 0x01, 0x64, 0xb3, 0xd8, 0x8d, 0x6c, 0x5e, 0xe8, 0x8b, - 0x6c, 0x3c, 0x09, 0x3e, 0xb4, 0xb9, 0xd3, 0x01, 0x6d, 0x2e, 0xf5, 0x81, 0x36, 0x7e, 0x01, 0x38, - 0xb6, 0xd1, 0xfa, 0x63, 0x9b, 0xb9, 0x41, 0xb1, 0x8d, 0x27, 0x38, 0x12, 0xdc, 0xac, 0x47, 0x83, - 0x9b, 0x6b, 0x03, 0x6e, 0xda, 0x77, 0xa1, 0x9b, 0x4a, 0x14, 0xba, 0xb9, 0x72, 0x0c, 0xba, 0x09, - 0xce, 0x21, 0x1e, 0xbc, 0xa9, 0x44, 0xc1, 0x9b, 0x2b, 0xc7, 0xc0, 0x1b, 0x5f, 0x52, 0x00, 0xdf, - 0xd4, 0x7a, 0xe1, 0x9b, 0x17, 0x07, 0xc0, 0x37, 0xbe, 0xf3, 0xd2, 0x01, 0x70, 0xde, 0xee, 0x04, - 0x38, 0xc5, 0x7e, 0x00, 0xc7, 0x1f, 0x91, 0x2e, 0xc2, 0x59, 0x8f, 0x46, 0x38, 0xd7, 0x8e, 0x45, - 0x38, 0x41, 0x23, 0x19, 0x80, 0x38, 0xab, 0x91, 0x10, 0xe7, 0xea, 0x71, 0x10, 0xc7, 0x37, 0x92, - 0x41, 0x8c, 0xf3, 0x76, 0x27, 0xc6, 0x29, 0xf6, 0xc3, 0x38, 0x7e, 0xe5, 0x5c, 0x90, 0x53, 0x89, - 0x02, 0x39, 0x57, 0x8e, 0x01, 0x39, 0x7e, 0xe3, 0x05, 0x50, 0x8e, 0xd2, 0x17, 0xe5, 0xbc, 0x3c, - 0x20, 0xca, 0xe9, 0x30, 0x5c, 0x61, 0x98, 0x53, 0x89, 0x82, 0x39, 0x57, 0x8e, 0x81, 0x39, 0x81, - 0xc2, 0xfa, 0x38, 0x67, 0x3d, 0x1a, 0xe7, 0x5c, 0x3b, 0x16, 0xe7, 0x74, 0x8c, 0x26, 0x17, 0xe8, - 0xac, 0x46, 0x02, 0x9d, 0xab, 0xc7, 0x01, 0x9d, 0x8e, 0x89, 0x8f, 0x3b, 0x07, 0xff, 0x76, 0x70, - 0xa4, 0xf3, 0xc6, 0xc9, 0x91, 0x8e, 0xf7, 0xce, 0x58, 0xa0, 0xce, 0x4a, 0x2a, 0xfd, 0x9c, 0xf8, - 0x7c, 0xf1, 0x3f, 0x8e, 0xc2, 0x48, 0xc5, 0x8b, 0x85, 0xf1, 0x4b, 0x29, 0x9c, 0xe6, 0x32, 0x26, - 0xb4, 0x44, 0x46, 0x2c, 0xb5, 0x7b, 0xc7, 0xdf, 0xbb, 0xd7, 0x7d, 0x27, 0x1c, 0x67, 0x3d, 0xc5, - 0xf9, 0x66, 0xf4, 0x1a, 0x8c, 0xb5, 0x6d, 0x6c, 0xc9, 0x2d, 0x4b, 0x37, 0x2d, 0xdd, 0x61, 0x67, - 0x45, 0x84, 0x45, 0xf1, 0xe3, 0xa3, 0x99, 0xdc, 0xa6, 0x8d, 0xad, 0x0d, 0x4e, 0x97, 0x72, 0xed, - 0xc0, 0x93, 0xfb, 0x8d, 0xaa, 0xe1, 0xc1, 0xbf, 0x51, 0xf5, 0x10, 0x44, 0x0b, 0x2b, 0x5a, 0xc8, - 0x03, 0x61, 0x97, 0x1d, 0x45, 0xf7, 0x19, 0x7a, 0x0c, 0xcb, 0xcd, 0x49, 0x2f, 0x3d, 0x1a, 0xb7, - 0xc2, 0x44, 0x74, 0x13, 0xce, 0x34, 0x95, 0x03, 0x1a, 0x4f, 0x29, 0xbb, 0x4e, 0x1d, 0x8d, 0x91, - 0x64, 0x9f, 0x7f, 0x42, 0x4d, 0xe5, 0x80, 0x7e, 0xf0, 0x8a, 0x25, 0xd1, 0x2f, 0x54, 0x5c, 0x81, - 0xbc, 0xa6, 0xdb, 0x8e, 0x6e, 0xa8, 0x0e, 0xbf, 0xa8, 0x96, 0xdd, 0x1e, 0x3b, 0xe6, 0x52, 0xd9, - 0x6d, 0xb4, 0x37, 0x60, 0x82, 0x87, 0xdb, 0x07, 0xb6, 0x08, 0x81, 0xc7, 0xb0, 0xd1, 0x04, 0x6f, - 0x57, 0x10, 0x95, 0x60, 0xbc, 0xae, 0x38, 0x78, 0x5f, 0x39, 0x94, 0xdd, 0xb3, 0x5a, 0x59, 0x7a, - 0x4b, 0xe4, 0x85, 0x67, 0x47, 0x33, 0x63, 0xf7, 0x58, 0x52, 0xd7, 0x91, 0xad, 0xb1, 0x7a, 0x20, - 0x41, 0x43, 0xd7, 0x60, 0x5c, 0xb1, 0x0f, 0x0d, 0x95, 0xaa, 0x07, 0x1b, 0x76, 0xdb, 0xa6, 0x90, - 0x22, 0x2d, 0xe5, 0x29, 0xb9, 0xe4, 0x52, 0xd1, 0x25, 0xc8, 0xf1, 0x58, 0x74, 0xf6, 0xd5, 0x9c, - 0x71, 0x5a, 0x55, 0xfe, 0x09, 0x06, 0xfa, 0xe1, 0x1c, 0x74, 0x07, 0xa6, 0xf9, 0xd5, 0xf4, 0xfb, - 0x8a, 0xa5, 0xc9, 0x54, 0xeb, 0x7e, 0xff, 0x14, 0xa9, 0xd8, 0x73, 0xec, 0x2a, 0x7a, 0x92, 0x81, - 0xa8, 0xda, 0xbf, 0x54, 0x61, 0x1d, 0x26, 0xd4, 0x86, 0xee, 0x21, 0x00, 0x56, 0xf3, 0x89, 0x9e, - 0x76, 0xb6, 0x44, 0xf3, 0xfa, 0x5b, 0xa4, 0xe3, 0x6a, 0x98, 0x80, 0xaa, 0x40, 0x2f, 0x91, 0x91, - 0x5b, 0x66, 0x43, 0x57, 0x0f, 0xa9, 0xf3, 0x1f, 0xbe, 0x56, 0xbb, 0xef, 0x45, 0xf7, 0x8f, 0x15, - 0xdd, 0xd9, 0xa0, 0x9c, 0x12, 0xec, 0x7b, 0xff, 0xbd, 0xab, 0x78, 0x73, 0xe2, 0xd8, 0x4a, 0x2a, - 0x9d, 0x17, 0xc7, 0x8b, 0xff, 0x55, 0x80, 0xf1, 0x8e, 0xb2, 0xa0, 0x0a, 0x9c, 0xd1, 0xbc, 0xa1, - 0x22, 0xf3, 0xa3, 0x4c, 0xba, 0x69, 0xf0, 0x9b, 0xc2, 0x27, 0x3f, 0x3e, 0x9a, 0x19, 0xa7, 0xb9, - 0xef, 0x79, 0x49, 0xd2, 0x94, 0xcf, 0xe1, 0x53, 0xd1, 0x1b, 0x90, 0x67, 0xee, 0xa3, 0xf7, 0x69, - 0x38, 0x1a, 0x5f, 0xbe, 0x38, 0xf1, 0xf1, 0xd1, 0xcc, 0x18, 0xf5, 0x19, 0xdd, 0x7b, 0x84, 0xa5, - 0xb1, 0x46, 0xf0, 0xb1, 0xf8, 0x5f, 0x04, 0xc8, 0x85, 0x0e, 0x07, 0xdd, 0xe9, 0xd8, 0x41, 0x3f, - 0x1f, 0x8d, 0x3b, 0x7b, 0x05, 0xdd, 0xa5, 0x79, 0x3f, 0x77, 0x23, 0x18, 0x67, 0x7a, 0xe3, 0x16, - 0xba, 0x0a, 0xe3, 0x86, 0x6d, 0xb8, 0x6c, 0x6f, 0xa6, 0xfe, 0xfb, 0x07, 0x33, 0x43, 0xc5, 0x0f, - 0x53, 0x30, 0x16, 0x3e, 0x04, 0xb4, 0xdc, 0x51, 0xae, 0xa8, 0x79, 0x21, 0xc4, 0x31, 0xd7, 0xe7, - 0xde, 0xc4, 0x8c, 0x7f, 0x31, 0x3f, 0x2b, 0xe6, 0x6c, 0x9f, 0x38, 0x81, 0x60, 0x39, 0x7d, 0xc6, - 0xe9, 0x7f, 0x97, 0xf4, 0xec, 0xeb, 0x1c, 0x0c, 0xd3, 0xdb, 0x79, 0x78, 0xd1, 0xa2, 0xce, 0x97, - 0x97, 0x49, 0xba, 0xc4, 0xb2, 0x11, 0x7b, 0x5c, 0x3b, 0xd5, 0xe5, 0x78, 0xfe, 0x30, 0x38, 0xf9, - 0x37, 0xf8, 0xf8, 0x15, 0x89, 0xc3, 0x27, 0xbb, 0x22, 0x91, 0xed, 0xe8, 0x37, 0x1a, 0x6c, 0xae, - 0x63, 0x16, 0x69, 0xa4, 0xeb, 0x10, 0x37, 0x15, 0xc1, 0x3f, 0x8d, 0x38, 0x27, 0xf1, 0x4f, 0x23, - 0x06, 0xa2, 0x40, 0xf3, 0x9e, 0x08, 0x66, 0xbe, 0x3a, 0x02, 0x52, 0x47, 0x4f, 0x13, 0x90, 0xca, - 0x42, 0x99, 0x79, 0x7f, 0xf9, 0x7d, 0x81, 0x87, 0x83, 0xdc, 0x37, 0xcd, 0xdd, 0xb6, 0x17, 0x48, - 0x3a, 0x1d, 0xbc, 0xa0, 0x30, 0xfd, 0xf1, 0xd1, 0x4c, 0x4a, 0xf2, 0x6e, 0x28, 0x8c, 0xb2, 0xf7, - 0x89, 0x4f, 0x66, 0xef, 0x2f, 0x41, 0xae, 0x65, 0xe1, 0x6d, 0xec, 0xa8, 0x3b, 0xb2, 0xd1, 0x6e, - 0xf2, 0x73, 0x28, 0x59, 0x97, 0xb6, 0xde, 0x6e, 0xa2, 0x17, 0x41, 0xf4, 0xb2, 0x70, 0x64, 0xed, - 0xde, 0x51, 0xe5, 0xd2, 0x39, 0x0e, 0x2f, 0xfe, 0xb5, 0x00, 0x93, 0xa1, 0x3a, 0xf1, 0x91, 0xb0, - 0x02, 0x59, 0xdf, 0x08, 0xd8, 0x05, 0xe1, 0x84, 0x01, 0x95, 0x41, 0x66, 0x24, 0xc3, 0x59, 0xf7, - 0xb5, 0xf4, 0xda, 0x79, 0x5f, 0x6c, 0xe2, 0x84, 0x62, 0xcf, 0xf8, 0x72, 0x96, 0x02, 0x2f, 0xf0, - 0x86, 0x46, 0x72, 0xa0, 0xa1, 0x51, 0x7c, 0x5f, 0x00, 0x91, 0xbe, 0xe0, 0x2e, 0xc6, 0x5a, 0x2c, - 0x36, 0xc9, 0x0d, 0x57, 0x4e, 0x0c, 0x7e, 0xd2, 0x24, 0xf4, 0xd9, 0x8c, 0x64, 0xf8, 0xb3, 0x19, - 0xc5, 0x0f, 0x04, 0xc8, 0x7b, 0x25, 0x64, 0x9f, 0x9c, 0xeb, 0x73, 0x0f, 0xe6, 0xe9, 0x3e, 0xb4, - 0xe6, 0x5e, 0xd7, 0x31, 0xd0, 0x57, 0xf0, 0x82, 0xd7, 0x75, 0xb0, 0x8f, 0x82, 0xfd, 0x4f, 0xb7, - 0xe7, 0x90, 0x22, 0x96, 0xfc, 0xab, 0x18, 0x4e, 0x71, 0xe8, 0x46, 0xa2, 0x5f, 0xee, 0x34, 0x1b, - 0x7b, 0xec, 0x9e, 0x94, 0x81, 0x8c, 0x15, 0xe2, 0x41, 0x50, 0xc0, 0xd7, 0xe0, 0xb4, 0x5a, 0x95, - 0x7e, 0xd3, 0x93, 0xfd, 0xb7, 0x8b, 0x77, 0x03, 0x0a, 0xa4, 0x8d, 0x4f, 0xb4, 0x34, 0x90, 0x01, - 0x75, 0xb5, 0xc4, 0xfa, 0xca, 0x4f, 0x82, 0x2d, 0x51, 0xde, 0x23, 0xd8, 0xeb, 0x36, 0x24, 0xf7, - 0x94, 0x46, 0xbf, 0xe0, 0xaf, 0x50, 0xcb, 0x49, 0x24, 0x37, 0xba, 0x1b, 0xba, 0xc1, 0x22, 0xd1, - 0x1b, 0x27, 0x74, 0xab, 0x34, 0x74, 0xd3, 0xc5, 0xeb, 0xe1, 0xbe, 0xde, 0xf7, 0xf5, 0xc1, 0x4e, - 0xff, 0x66, 0xea, 0xa3, 0x0f, 0x66, 0x84, 0xe2, 0xeb, 0x70, 0xfe, 0x9e, 0x69, 0xdb, 0x7a, 0x8b, - 0x60, 0x43, 0x3a, 0x80, 0x88, 0xed, 0xf6, 0x2c, 0x59, 0xba, 0x45, 0x57, 0x09, 0x0c, 0x36, 0xe2, - 0x33, 0x92, 0xf7, 0x5c, 0xfc, 0x4d, 0x01, 0xce, 0x75, 0x73, 0x32, 0x85, 0x44, 0x1d, 0xea, 0x1b, - 0x55, 0x4d, 0xff, 0x46, 0xb7, 0xe3, 0x3b, 0x96, 0x9b, 0x9d, 0xf8, 0x80, 0xfc, 0x9d, 0x72, 0x53, - 0xa1, 0x23, 0x9d, 0x1f, 0x3c, 0xce, 0x73, 0xf2, 0x1a, 0xa3, 0xfa, 0x83, 0x3e, 0x35, 0xd0, 0xa0, - 0xbf, 0x51, 0x85, 0xc9, 0x08, 0xfb, 0x8a, 0xf2, 0x00, 0x81, 0xcf, 0x88, 0xf0, 0x0f, 0xa0, 0x2e, - 0x2c, 0xc9, 0x9b, 0xeb, 0xa5, 0x07, 0x6b, 0x6b, 0xcb, 0xb5, 0x5a, 0x79, 0x49, 0x14, 0x90, 0x08, - 0xb9, 0xd0, 0x47, 0x48, 0x12, 0xec, 0x93, 0xa8, 0x37, 0xfe, 0x05, 0x80, 0xff, 0x6d, 0x23, 0x22, - 0x6b, 0xb5, 0xfc, 0x8e, 0xfc, 0x68, 0xe1, 0xfe, 0x66, 0xb9, 0x2a, 0x0e, 0x21, 0x04, 0xf9, 0xc5, - 0x85, 0x5a, 0xa9, 0x22, 0x4b, 0xe5, 0xea, 0xc6, 0x83, 0xf5, 0x6a, 0xd9, 0xfd, 0x94, 0xea, 0x8d, - 0x25, 0xc8, 0x05, 0x6f, 0x39, 0x41, 0x93, 0x30, 0x5e, 0xaa, 0x94, 0x4b, 0xab, 0xf2, 0xa3, 0xe5, - 0x05, 0xf9, 0xe1, 0x66, 0x79, 0xb3, 0x2c, 0x0e, 0xd1, 0xa2, 0x51, 0xe2, 0xdd, 0xcd, 0xfb, 0xf7, - 0x45, 0x01, 0x8d, 0x43, 0x96, 0x3d, 0xd3, 0x0f, 0x96, 0x88, 0x89, 0x1b, 0x6b, 0x90, 0x0d, 0xdc, - 0x87, 0x4a, 0x5e, 0xb7, 0xb1, 0x59, 0xad, 0xc8, 0xb5, 0xe5, 0xb5, 0x72, 0xb5, 0xb6, 0xb0, 0xb6, - 0xc1, 0x64, 0x50, 0xda, 0xc2, 0xe2, 0x03, 0xa9, 0x26, 0x0a, 0xde, 0x73, 0xed, 0xc1, 0x66, 0xa9, - 0xe2, 0x56, 0xa3, 0x98, 0x4a, 0x27, 0xc5, 0xe4, 0x8d, 0x6f, 0x0a, 0x70, 0xae, 0xc7, 0x5d, 0x1f, - 0x28, 0x0b, 0xa3, 0x9b, 0x06, 0xbd, 0x10, 0x52, 0x1c, 0x42, 0x63, 0x81, 0xeb, 0x3e, 0x44, 0x01, - 0xa5, 0xd9, 0x55, 0x0b, 0x62, 0x02, 0x8d, 0x40, 0xa2, 0x7a, 0x5b, 0x4c, 0x92, 0x92, 0x06, 0x6e, - 0xcb, 0x10, 0x53, 0x28, 0xc3, 0x0f, 0xfb, 0x8b, 0xc3, 0x28, 0xe7, 0x9f, 0xb6, 0x17, 0x47, 0x88, - 0x28, 0xef, 0xbc, 0xba, 0x38, 0x7a, 0xe3, 0x12, 0x04, 0xce, 0xfe, 0x22, 0x80, 0x91, 0xfb, 0x8a, - 0x83, 0x6d, 0x47, 0x1c, 0x42, 0xa3, 0x90, 0x5c, 0x68, 0x34, 0x44, 0xe1, 0xd6, 0xbf, 0x4f, 0x42, - 0xda, 0xfd, 0x24, 0x07, 0xba, 0x0f, 0xc3, 0x6c, 0x29, 0x71, 0xa6, 0xb7, 0xa7, 0x46, 0xfb, 0xf6, - 0xf4, 0xec, 0x71, 0xae, 0x5c, 0x71, 0x08, 0xfd, 0x4b, 0xc8, 0x06, 0xe6, 0x42, 0xd4, 0x73, 0x39, - 0x24, 0x34, 0xff, 0x4f, 0x5f, 0x3d, 0x2e, 0x9b, 0x27, 0xff, 0x31, 0x64, 0xbc, 0xb1, 0x89, 0x5e, - 0xe8, 0x37, 0x72, 0x5d, 0xd9, 0xfd, 0x87, 0x37, 0x19, 0x7c, 0xc5, 0xa1, 0x57, 0x04, 0x64, 0x01, - 0xea, 0x1e, 0x9b, 0x28, 0x6a, 0x87, 0xb9, 0xe7, 0xe0, 0x9f, 0xbe, 0x31, 0x50, 0x6e, 0xef, 0x9d, - 0x8b, 0x2f, 0x7e, 0xf4, 0x8b, 0x8b, 0x43, 0x1f, 0x3d, 0xbb, 0x28, 0xfc, 0xf4, 0xd9, 0x45, 0xe1, - 0xe7, 0xcf, 0x2e, 0x0a, 0x7f, 0xfa, 0xec, 0xa2, 0xf0, 0x9f, 0x7f, 0x79, 0x71, 0xe8, 0xa7, 0xbf, - 0xbc, 0x38, 0xf4, 0xf3, 0x5f, 0x5e, 0x1c, 0x7a, 0x77, 0x94, 0x8b, 0xd9, 0x1a, 0xa1, 0x1f, 0xa9, - 0xbe, 0xfd, 0x8f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x72, 0x65, 0x5e, 0xc7, 0x7b, 0x00, 0x00, +func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_api_9ee73df62b8c2c4a) } + +var fileDescriptor_api_9ee73df62b8c2c4a = []byte{ + // 7861 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x6f, 0x6c, 0x23, 0xc9, + 0x95, 0x9f, 0x9a, 0xa4, 0x24, 0xf2, 0x91, 0xa2, 0x5a, 0x25, 0xcd, 0x0c, 0x47, 0xb3, 0x3b, 0xd2, + 0x70, 0xe7, 0xbf, 0x77, 0xa5, 0x9d, 0x99, 0xdd, 0xec, 0x7a, 0x67, 0xbd, 0xb6, 0x44, 0x71, 0x86, + 0x92, 0x46, 0x1a, 0x4d, 0x93, 0x9a, 0xf1, 0xae, 0xed, 0xb4, 0x5b, 0xdd, 0x25, 0xaa, 0x2d, 0xb2, + 0x9b, 0xd3, 0xdd, 0xd4, 0x9f, 0x01, 0x02, 0x38, 0xff, 0xe0, 0xc0, 0x09, 0x16, 0xf9, 0x90, 0x04, + 0x41, 0x1c, 0x67, 0x17, 0x70, 0x10, 0x07, 0x30, 0x36, 0xc8, 0xd7, 0x04, 0xce, 0x9f, 0x0f, 0x0e, + 0xb2, 0x67, 0xf8, 0x00, 0xdf, 0x01, 0x77, 0x36, 0x0e, 0x38, 0xe1, 0x3c, 0x06, 0x0e, 0x87, 0xfb, + 0x70, 0xc0, 0xdd, 0x87, 0x3b, 0x60, 0x81, 0x3b, 0x1c, 0xea, 0x4f, 0xff, 0x23, 0x9b, 0x14, 0xa5, + 0xed, 0xbd, 0x5b, 0xc0, 0x5f, 0x08, 0xf6, 0xab, 0x7a, 0xaf, 0xab, 0x5e, 0x55, 0xbd, 0x7a, 0xbf, + 0xaa, 0x57, 0xd5, 0x30, 0x61, 0x99, 0x8a, 0xba, 0xd3, 0xda, 0x9a, 0x57, 0x5a, 0xfa, 0x5c, 0xcb, + 0x32, 0x1d, 0x13, 0x4d, 0xa8, 0xa6, 0xba, 0x4b, 0xc9, 0x73, 0x3c, 0x71, 0xfa, 0xe6, 0xee, 0xde, + 0xfc, 0xee, 0x9e, 0x8d, 0xad, 0x3d, 0x6c, 0xcd, 0xab, 0xa6, 0xa1, 0xb6, 0x2d, 0x0b, 0x1b, 0xea, + 0xe1, 0x7c, 0xc3, 0x54, 0x77, 0xe9, 0x8f, 0x6e, 0xd4, 0x19, 0xfb, 0x34, 0x72, 0x25, 0x6a, 0x8a, + 0xa3, 0x70, 0xda, 0x94, 0x4b, 0xc3, 0x96, 0x65, 0x5a, 0x36, 0xa7, 0x9e, 0x75, 0xa9, 0x4d, 0xec, + 0x28, 0x81, 0xdc, 0x17, 0x6c, 0xc7, 0xb4, 0x94, 0x3a, 0x9e, 0xc7, 0x46, 0x5d, 0x37, 0x30, 0xc9, + 0xb0, 0xa7, 0xaa, 0x3c, 0xf1, 0x85, 0xc8, 0xc4, 0x3b, 0x3c, 0xb5, 0xd0, 0x76, 0xf4, 0xc6, 0xfc, + 0x4e, 0x43, 0x9d, 0x77, 0xf4, 0x26, 0xb6, 0x1d, 0xa5, 0xd9, 0xe2, 0x29, 0xb3, 0x34, 0xc5, 0xb1, + 0x14, 0x55, 0x37, 0xea, 0xf3, 0x16, 0x56, 0x4d, 0x4b, 0xc3, 0x9a, 0x6c, 0xb7, 0x14, 0xc3, 0x2d, + 0x64, 0xdd, 0xac, 0x9b, 0xf4, 0xef, 0x3c, 0xf9, 0xc7, 0xa8, 0xc5, 0x1f, 0x0b, 0x30, 0x26, 0xe1, + 0xa7, 0x6d, 0x6c, 0x3b, 0x15, 0xac, 0x68, 0xd8, 0x42, 0xe7, 0x21, 0xb9, 0x8b, 0x0f, 0x0b, 0xc9, + 0x59, 0xe1, 0x7a, 0x6e, 0x71, 0xf4, 0x93, 0xa3, 0x99, 0xe4, 0x2a, 0x3e, 0x94, 0x08, 0x0d, 0xcd, + 0xc2, 0x28, 0x36, 0x34, 0x99, 0x24, 0xa7, 0xc2, 0xc9, 0x23, 0xd8, 0xd0, 0x56, 0xf1, 0x21, 0xfa, + 0x3a, 0xa4, 0x6d, 0x22, 0xcd, 0x50, 0x71, 0x61, 0x78, 0x56, 0xb8, 0x3e, 0xbc, 0xf8, 0x95, 0x4f, + 0x8e, 0x66, 0xde, 0xae, 0xeb, 0xce, 0x4e, 0x7b, 0x6b, 0x4e, 0x35, 0x9b, 0xf3, 0x9e, 0xf6, 0xb5, + 0x2d, 0xff, 0xff, 0x7c, 0x6b, 0xb7, 0x3e, 0xdf, 0x59, 0xf3, 0xb9, 0xda, 0x81, 0x51, 0xc5, 0x4f, + 0x25, 0x4f, 0xe2, 0x5b, 0xa9, 0x3f, 0xf9, 0x70, 0x46, 0x58, 0x49, 0xa5, 0x05, 0x31, 0xb1, 0x92, + 0x4a, 0x27, 0xc4, 0x64, 0xf1, 0x07, 0x49, 0xc8, 0x4b, 0xd8, 0x6e, 0x99, 0x86, 0x8d, 0x79, 0xf9, + 0x5f, 0x85, 0xa4, 0x73, 0x60, 0xd0, 0xf2, 0x67, 0x6f, 0x5f, 0x9c, 0xeb, 0x6a, 0xed, 0xb9, 0x9a, + 0xa5, 0x18, 0xb6, 0xa2, 0x3a, 0xba, 0x69, 0x48, 0x24, 0x2b, 0x7a, 0x13, 0xb2, 0x16, 0xb6, 0xdb, + 0x4d, 0x4c, 0xd5, 0x45, 0xab, 0x96, 0xbd, 0x7d, 0x2e, 0x82, 0xb3, 0xda, 0x52, 0x0c, 0x09, 0x58, + 0x5e, 0xf2, 0x1f, 0x9d, 0x87, 0xb4, 0xd1, 0x6e, 0x12, 0x85, 0xd8, 0xb4, 0xba, 0x49, 0x69, 0xd4, + 0x68, 0x37, 0x57, 0xf1, 0xa1, 0x8d, 0xbe, 0x0a, 0x67, 0x35, 0xdc, 0xb2, 0xb0, 0xaa, 0x38, 0x58, + 0x93, 0x2d, 0xc5, 0xa8, 0x63, 0x59, 0x37, 0xb6, 0x4d, 0xbb, 0x30, 0x32, 0x9b, 0xbc, 0x9e, 0xbd, + 0xfd, 0x42, 0x84, 0x7c, 0x89, 0xe4, 0x5a, 0x36, 0xb6, 0xcd, 0xc5, 0xd4, 0xc7, 0x47, 0x33, 0x43, + 0xd2, 0x94, 0x2f, 0xc1, 0x4b, 0xb2, 0x51, 0x15, 0xc6, 0x78, 0x71, 0x2d, 0xac, 0xd8, 0xa6, 0x51, + 0x18, 0x9d, 0x15, 0xae, 0xe7, 0x6f, 0xcf, 0x45, 0x09, 0x0c, 0xa9, 0x86, 0x3c, 0xb6, 0x9b, 0x58, + 0xa2, 0x5c, 0x52, 0xce, 0x0a, 0x3c, 0xa1, 0x0b, 0x90, 0x21, 0x35, 0xd9, 0x3a, 0x74, 0xb0, 0x5d, + 0x48, 0xd3, 0xaa, 0x90, 0xaa, 0x2d, 0x92, 0xe7, 0xe2, 0x3b, 0x90, 0x0b, 0xb2, 0x22, 0x04, 0x79, + 0xa9, 0x5c, 0xdd, 0x5c, 0x2b, 0xcb, 0x9b, 0xeb, 0xab, 0xeb, 0x0f, 0x9f, 0xac, 0x8b, 0x43, 0x68, + 0x0a, 0x44, 0x4e, 0x5b, 0x2d, 0xbf, 0x2b, 0x3f, 0x58, 0x5e, 0x5b, 0xae, 0x89, 0xc2, 0x74, 0xea, + 0x5f, 0xfc, 0xe0, 0xe2, 0x50, 0xf1, 0x31, 0xc0, 0x7d, 0xec, 0xf0, 0x6e, 0x86, 0x16, 0x61, 0x64, + 0x87, 0x96, 0xa7, 0x20, 0x50, 0x4d, 0xcf, 0x46, 0x16, 0x3c, 0xd0, 0x25, 0x17, 0xd3, 0x44, 0x1b, + 0x3f, 0x3f, 0x9a, 0x11, 0x24, 0xce, 0xc9, 0x7a, 0x42, 0xf1, 0xff, 0x08, 0x90, 0xa5, 0x82, 0x59, + 0x2d, 0x51, 0xa9, 0x43, 0xf2, 0xa5, 0x63, 0x55, 0xd2, 0x2d, 0x1a, 0xcd, 0xc1, 0xf0, 0x9e, 0xd2, + 0x68, 0xe3, 0x42, 0x82, 0xca, 0x28, 0x44, 0xc8, 0x78, 0x4c, 0xd2, 0x25, 0x96, 0x0d, 0xdd, 0x85, + 0x9c, 0x6e, 0x38, 0xd8, 0x70, 0x64, 0xc6, 0x96, 0x3c, 0x86, 0x2d, 0xcb, 0x72, 0xd3, 0x87, 0xe2, + 0xff, 0x14, 0x00, 0x36, 0xda, 0x71, 0xaa, 0x06, 0xbd, 0x36, 0x60, 0xf9, 0x79, 0x1f, 0xe3, 0xb5, + 0x38, 0x0b, 0x23, 0xba, 0xd1, 0xd0, 0x0d, 0x56, 0xfe, 0xb4, 0xc4, 0x9f, 0xd0, 0x14, 0x0c, 0x6f, + 0x35, 0x74, 0x43, 0xa3, 0xa3, 0x22, 0x2d, 0xb1, 0x07, 0xae, 0x7e, 0x09, 0xb2, 0xb4, 0xec, 0x31, + 0x6a, 0xbf, 0xf8, 0xb3, 0x04, 0x9c, 0x29, 0x99, 0x86, 0xa6, 0x93, 0xe1, 0xa9, 0x34, 0x3e, 0x17, + 0xba, 0x59, 0x81, 0xc0, 0x40, 0x94, 0xf1, 0x41, 0x6b, 0xc0, 0x96, 0x46, 0x3e, 0x57, 0xf9, 0xa0, + 0x45, 0x69, 0xd1, 0xfa, 0x44, 0xaf, 0xc1, 0x39, 0xa5, 0xd1, 0x30, 0xf7, 0x65, 0x7d, 0x5b, 0xd6, + 0x4c, 0x6c, 0xcb, 0x86, 0xe9, 0xc8, 0xf8, 0x40, 0xb7, 0x1d, 0x6a, 0x56, 0xd2, 0xd2, 0x24, 0x4d, + 0x5e, 0xde, 0x5e, 0x32, 0xb1, 0xbd, 0x6e, 0x3a, 0x65, 0x92, 0x44, 0xc6, 0x2c, 0x29, 0x0c, 0x1b, + 0xb3, 0x23, 0xc4, 0x20, 0x4b, 0x69, 0x7c, 0xd0, 0xa2, 0x63, 0x96, 0x37, 0xd1, 0x37, 0xe0, 0x6c, + 0xa7, 0x36, 0xe3, 0x6c, 0xad, 0xdf, 0x15, 0x20, 0xbf, 0x6c, 0xe8, 0xce, 0xe7, 0xa2, 0x99, 0x3c, + 0xd5, 0x26, 0x83, 0xaa, 0xbd, 0x09, 0xe2, 0xb6, 0xa2, 0x37, 0x1e, 0x1a, 0x35, 0xb3, 0xb9, 0x65, + 0x3b, 0xa6, 0x81, 0x6d, 0xae, 0xfb, 0x2e, 0x3a, 0xd7, 0xd9, 0x63, 0x18, 0xf7, 0xea, 0x14, 0xa7, + 0xb2, 0x9e, 0x81, 0xb8, 0x6c, 0xa8, 0x16, 0x6e, 0x62, 0x23, 0x56, 0x6d, 0xbd, 0x00, 0x19, 0xdd, + 0x95, 0x4b, 0x35, 0x96, 0x94, 0x7c, 0x02, 0xaf, 0x53, 0x1b, 0x26, 0x02, 0xef, 0x8e, 0xd3, 0x5c, + 0x92, 0x89, 0x03, 0xef, 0xcb, 0x7e, 0x7b, 0x91, 0x89, 0x03, 0xef, 0x33, 0xf3, 0xf6, 0x2e, 0x8c, + 0x2d, 0xe1, 0x06, 0x76, 0x70, 0xfc, 0xb6, 0x7f, 0x13, 0xf2, 0xae, 0xe8, 0x38, 0x1b, 0xe9, 0xfb, + 0x02, 0x20, 0x2e, 0x97, 0xcc, 0xb8, 0x71, 0xb6, 0xd3, 0x0c, 0x71, 0x33, 0x9c, 0xb6, 0x65, 0x30, + 0x7f, 0x81, 0xf5, 0x52, 0x60, 0x24, 0xea, 0x32, 0xf8, 0x36, 0x38, 0x15, 0xb4, 0xc1, 0x9e, 0xdb, + 0x43, 0x1c, 0x9e, 0x7d, 0x98, 0x0c, 0x15, 0x2f, 0xde, 0xa6, 0x4c, 0xd1, 0x92, 0x25, 0x66, 0x93, + 0x41, 0xdf, 0x8e, 0x12, 0x8b, 0xff, 0x49, 0x80, 0x89, 0x52, 0x03, 0x2b, 0x56, 0xec, 0x7a, 0xf9, + 0x32, 0xa4, 0x35, 0xac, 0x68, 0xb4, 0xe2, 0x6c, 0xc0, 0xbf, 0x18, 0x90, 0x42, 0xfc, 0xda, 0xb9, + 0x9d, 0x86, 0x3a, 0x57, 0x73, 0x3d, 0x5e, 0x3e, 0xea, 0x3d, 0x26, 0xde, 0x21, 0xde, 0x05, 0x14, + 0x2c, 0x5f, 0x9c, 0x9d, 0xe2, 0x3f, 0x0b, 0x80, 0x24, 0xbc, 0x87, 0x2d, 0x27, 0xf6, 0xca, 0x2f, + 0x41, 0xd6, 0x51, 0xac, 0x3a, 0x76, 0x64, 0xe2, 0xd1, 0x9f, 0xa4, 0xfe, 0xc0, 0xf8, 0x08, 0x99, + 0x6b, 0xe0, 0x3d, 0x98, 0x0c, 0x95, 0x32, 0x4e, 0x15, 0xfc, 0xa5, 0x00, 0xd9, 0xaa, 0xaa, 0x18, + 0x71, 0xd6, 0xfd, 0x1d, 0xc8, 0xda, 0xaa, 0x62, 0xc8, 0xdb, 0xa6, 0xd5, 0x54, 0x1c, 0xda, 0xe9, + 0xf3, 0xa1, 0xba, 0x7b, 0x7e, 0xb7, 0xaa, 0x18, 0xf7, 0x68, 0x26, 0x09, 0x6c, 0xef, 0x3f, 0x7a, + 0x04, 0xd9, 0x5d, 0x7c, 0x28, 0x73, 0x7c, 0x46, 0x67, 0xca, 0xfc, 0xed, 0x57, 0x03, 0xfc, 0xbb, + 0x7b, 0x73, 0x2e, 0xac, 0x9b, 0x0b, 0xc0, 0xba, 0x39, 0xc2, 0x31, 0x57, 0x75, 0x2c, 0x6c, 0xd4, + 0x9d, 0x1d, 0x09, 0x76, 0xf1, 0xe1, 0x03, 0x26, 0x23, 0x38, 0xd4, 0x56, 0x52, 0xe9, 0xa4, 0x98, + 0x2a, 0xfe, 0x95, 0x00, 0x39, 0x56, 0xf1, 0x38, 0x87, 0xda, 0xeb, 0x90, 0xb2, 0xcc, 0x7d, 0x36, + 0xd4, 0xb2, 0xb7, 0x2f, 0x44, 0x88, 0x58, 0xc5, 0x87, 0xc1, 0x39, 0x8e, 0x66, 0x47, 0x8b, 0xc0, + 0xbd, 0x47, 0x99, 0x72, 0x27, 0x07, 0xe5, 0x06, 0xc6, 0x25, 0x11, 0x19, 0xd7, 0x60, 0x7c, 0x4b, + 0x71, 0xd4, 0x1d, 0xd9, 0xe2, 0x85, 0x24, 0xf3, 0x61, 0xf2, 0x7a, 0x4e, 0xca, 0x53, 0xb2, 0x5b, + 0x74, 0xbb, 0xf8, 0xd7, 0x6e, 0xaf, 0xb7, 0xf1, 0x6f, 0x64, 0xcb, 0xff, 0x8d, 0xc0, 0xc7, 0x93, + 0x5b, 0xff, 0xdf, 0xb4, 0x0e, 0xf0, 0x41, 0x02, 0xce, 0x95, 0x76, 0xb0, 0xba, 0x5b, 0x32, 0x0d, + 0x5b, 0xb7, 0x1d, 0xa2, 0xc1, 0x38, 0x7b, 0xc1, 0x05, 0xc8, 0xec, 0xeb, 0xce, 0x8e, 0xac, 0xe9, + 0xdb, 0xdb, 0xd4, 0xf2, 0xa5, 0xa5, 0x34, 0x21, 0x2c, 0xe9, 0xdb, 0xdb, 0xe8, 0x0e, 0xa4, 0x9a, + 0xa6, 0xc6, 0x9c, 0xec, 0xfc, 0xed, 0x99, 0x08, 0xf1, 0xb4, 0x68, 0x76, 0xbb, 0xb9, 0x66, 0x6a, + 0x58, 0xa2, 0x99, 0xd1, 0x45, 0x00, 0x95, 0x50, 0x5b, 0xa6, 0x6e, 0x38, 0x7c, 0x16, 0x0d, 0x50, + 0x50, 0x05, 0x32, 0x0e, 0xb6, 0x9a, 0xba, 0xa1, 0x38, 0xb8, 0x30, 0x4c, 0x95, 0x77, 0x39, 0xb2, + 0xe0, 0xad, 0x86, 0xae, 0x2a, 0x4b, 0xd8, 0x56, 0x2d, 0xbd, 0xe5, 0x98, 0x16, 0xd7, 0xa2, 0xcf, + 0xcc, 0x2d, 0xee, 0xfb, 0x29, 0x28, 0x74, 0x6b, 0x28, 0xce, 0x7e, 0xb2, 0x01, 0x23, 0x04, 0xa7, + 0x37, 0x1c, 0xde, 0x53, 0x6e, 0xf7, 0x52, 0x44, 0x44, 0x09, 0x28, 0xde, 0x6f, 0x38, 0xbc, 0xf0, + 0x5c, 0xce, 0xf4, 0x8f, 0x05, 0x18, 0x61, 0x09, 0xe8, 0x16, 0xa4, 0xf9, 0xc2, 0x84, 0x46, 0xcb, + 0x98, 0x5c, 0x3c, 0xfb, 0xfc, 0x68, 0x66, 0x94, 0xad, 0x35, 0x2c, 0x7d, 0xe2, 0xff, 0x95, 0x46, + 0x69, 0xbe, 0x65, 0x8d, 0xb4, 0x99, 0xed, 0x28, 0x96, 0x43, 0x17, 0x81, 0x12, 0x0c, 0x73, 0x50, + 0xc2, 0x2a, 0x3e, 0x44, 0x2b, 0x30, 0x62, 0x3b, 0x8a, 0xd3, 0xb6, 0x79, 0xab, 0x9d, 0xa8, 0xb0, + 0x55, 0xca, 0x29, 0x71, 0x09, 0xc4, 0x19, 0xd2, 0xb0, 0xa3, 0xe8, 0x0d, 0xda, 0x8c, 0x19, 0x89, + 0x3f, 0x15, 0xbf, 0x27, 0xc0, 0x08, 0xcb, 0x8a, 0xce, 0xc1, 0xa4, 0xb4, 0xb0, 0x7e, 0xbf, 0x2c, + 0x2f, 0xaf, 0x2f, 0x95, 0x6b, 0x65, 0x69, 0x6d, 0x79, 0x7d, 0xa1, 0x56, 0x16, 0x87, 0xd0, 0x59, + 0x40, 0x6e, 0x42, 0xe9, 0xe1, 0x7a, 0x75, 0xb9, 0x5a, 0x2b, 0xaf, 0xd7, 0x44, 0x81, 0xae, 0x51, + 0x50, 0x7a, 0x80, 0x9a, 0x40, 0x97, 0x61, 0xb6, 0x93, 0x2a, 0x57, 0x6b, 0x0b, 0xb5, 0xaa, 0x5c, + 0xae, 0xd6, 0x96, 0xd7, 0x16, 0x6a, 0xe5, 0x25, 0x31, 0xd9, 0x27, 0x17, 0x79, 0x89, 0x24, 0x95, + 0x4b, 0x35, 0x31, 0x55, 0x7c, 0x06, 0x67, 0x24, 0xac, 0x9a, 0xcd, 0x56, 0xdb, 0xc1, 0xa4, 0x94, + 0x76, 0x9c, 0xe3, 0xe5, 0x1c, 0x8c, 0x6a, 0xd6, 0xa1, 0x6c, 0xb5, 0x0d, 0x3e, 0x5a, 0x46, 0x34, + 0xeb, 0x50, 0x6a, 0x1b, 0xbc, 0x33, 0xfe, 0x77, 0x01, 0xce, 0x76, 0xbe, 0x3c, 0xce, 0xae, 0xf8, + 0x08, 0xb2, 0x8a, 0xa6, 0x61, 0x4d, 0xd6, 0x70, 0xc3, 0x51, 0xb8, 0xab, 0x72, 0x33, 0x20, 0x89, + 0x2f, 0xe0, 0xcd, 0x79, 0x0b, 0x78, 0x6b, 0x8f, 0x4b, 0x25, 0x5a, 0x90, 0x25, 0xc2, 0xe1, 0x9a, + 0x22, 0x2a, 0x84, 0x52, 0x8a, 0xff, 0x3f, 0x05, 0x63, 0x65, 0x43, 0xab, 0x1d, 0xc4, 0x3a, 0xbb, + 0x9c, 0x85, 0x11, 0xd5, 0x6c, 0x36, 0x75, 0xc7, 0x55, 0x13, 0x7b, 0x42, 0x5f, 0x0c, 0x38, 0x9a, + 0xc9, 0x01, 0x1c, 0x2d, 0xdf, 0xc5, 0x44, 0xdf, 0x84, 0x73, 0xc4, 0x82, 0x5a, 0x86, 0xd2, 0x90, + 0x99, 0x34, 0xd9, 0xb1, 0xf4, 0x7a, 0x1d, 0x5b, 0x7c, 0xb9, 0xf0, 0x7a, 0x44, 0x39, 0x97, 0x39, + 0x47, 0x89, 0x32, 0xd4, 0x58, 0x7e, 0xe9, 0x8c, 0x1e, 0x45, 0x46, 0x6f, 0x03, 0x90, 0xc9, 0x89, + 0x2e, 0x41, 0xda, 0xdc, 0x36, 0xf5, 0x5a, 0x83, 0x74, 0xcd, 0x11, 0x61, 0x20, 0xcf, 0x36, 0x9a, + 0x27, 0xd8, 0xe2, 0x69, 0x5b, 0xb7, 0xb0, 0x7c, 0xab, 0xa5, 0xd2, 0xc5, 0x80, 0xf4, 0x62, 0xfe, + 0xf9, 0xd1, 0x0c, 0x48, 0x8c, 0x7c, 0x6b, 0xa3, 0x44, 0xb0, 0x06, 0xfb, 0xdf, 0x52, 0xd1, 0x13, + 0xb8, 0x11, 0x58, 0xd3, 0x20, 0x73, 0x31, 0xaf, 0x96, 0xe2, 0xc8, 0x3b, 0x7a, 0x7d, 0x07, 0x5b, + 0xb2, 0xb7, 0xc4, 0x4c, 0xd7, 0x03, 0xd3, 0xd2, 0x65, 0x9f, 0xa1, 0xa4, 0x18, 0xac, 0xf4, 0x0b, + 0x4e, 0x85, 0x66, 0xf6, 0x74, 0x46, 0x94, 0xdf, 0x32, 0x75, 0xdb, 0x34, 0x0a, 0x19, 0xa6, 0x7c, + 0xf6, 0x84, 0x1e, 0x81, 0xa8, 0x1b, 0xf2, 0x76, 0x43, 0xaf, 0xef, 0x38, 0xf2, 0xbe, 0xa5, 0x3b, + 0xd8, 0x2e, 0x4c, 0xd0, 0x5a, 0x46, 0x75, 0xc6, 0x2a, 0x5f, 0xf2, 0xd5, 0x9e, 0x90, 0x9c, 0xbc, + 0xbe, 0x79, 0xdd, 0xb8, 0x47, 0xf9, 0x29, 0xd1, 0xf6, 0xa6, 0xec, 0x51, 0x31, 0x5d, 0xfc, 0x43, + 0x01, 0xf2, 0x6e, 0x4f, 0x8a, 0xb3, 0xd3, 0x5f, 0x07, 0xd1, 0x34, 0xb0, 0xdc, 0xda, 0x51, 0x6c, + 0xcc, 0x55, 0xc4, 0xe7, 0x95, 0xbc, 0x69, 0xe0, 0x0d, 0x42, 0x66, 0x9a, 0x40, 0x1b, 0x30, 0x61, + 0x3b, 0x4a, 0x5d, 0x37, 0xea, 0x01, 0xcd, 0x0d, 0x0f, 0xee, 0xcf, 0x8b, 0x9c, 0xdb, 0xa3, 0x87, + 0x9c, 0x91, 0x5f, 0x08, 0x30, 0xb1, 0xa0, 0x35, 0x75, 0xa3, 0xda, 0x6a, 0xe8, 0xb1, 0x2e, 0x1f, + 0x5c, 0x86, 0x8c, 0x4d, 0x64, 0xfa, 0x16, 0xdd, 0x87, 0x7e, 0x69, 0x9a, 0x42, 0x4c, 0xfb, 0x03, + 0x18, 0xc7, 0x07, 0x2d, 0xdd, 0x52, 0x1c, 0xdd, 0x34, 0x18, 0x56, 0x49, 0x0d, 0x5e, 0xb7, 0xbc, + 0xcf, 0xeb, 0xe3, 0x15, 0x5e, 0xb3, 0x77, 0x01, 0x05, 0x2b, 0x16, 0x27, 0x68, 0x91, 0x61, 0x92, + 0x8a, 0xde, 0x34, 0xec, 0x98, 0xb5, 0xc6, 0x4d, 0xee, 0xd7, 0x60, 0x2a, 0xfc, 0x82, 0x38, 0x4b, + 0xff, 0x0d, 0xde, 0xe2, 0x6b, 0xd8, 0xaa, 0x7f, 0x06, 0x0b, 0x28, 0xae, 0xde, 0xb9, 0xf8, 0x38, + 0x4b, 0xfe, 0x5d, 0x01, 0xce, 0x53, 0xd9, 0x74, 0xab, 0x65, 0x1b, 0x5b, 0x0f, 0xb0, 0x62, 0xc7, + 0x0a, 0x9b, 0x5f, 0x82, 0x11, 0x06, 0x7f, 0x69, 0x8f, 0x1d, 0x5e, 0xcc, 0x12, 0x67, 0xa5, 0xea, + 0x98, 0x16, 0x71, 0x56, 0x78, 0x12, 0xaf, 0xa7, 0x02, 0xd3, 0x51, 0x65, 0x89, 0x79, 0x7d, 0x60, + 0x82, 0xfb, 0x8c, 0xa4, 0x8b, 0x97, 0x76, 0x88, 0xb3, 0x84, 0xca, 0x90, 0x55, 0xe9, 0x3f, 0xd9, + 0x39, 0x6c, 0x61, 0x2a, 0x3f, 0xdf, 0xcf, 0xdd, 0x64, 0x6c, 0xb5, 0xc3, 0x16, 0x26, 0x3e, 0xab, + 0xfb, 0x9f, 0xa8, 0x2b, 0x50, 0xd5, 0xbe, 0x0e, 0x2b, 0x1d, 0x5f, 0x34, 0xaf, 0xeb, 0xf3, 0x85, + 0x34, 0xf1, 0x3f, 0x92, 0x5c, 0x15, 0xec, 0x4d, 0x9c, 0x29, 0x56, 0x17, 0xe5, 0xbd, 0xd0, 0xae, + 0x57, 0xb0, 0xfa, 0x89, 0x13, 0x54, 0x3f, 0xb0, 0xdc, 0xee, 0x53, 0xd1, 0xbb, 0x10, 0x58, 0x50, + 0x97, 0x59, 0xcd, 0x5c, 0x08, 0x74, 0x12, 0xa5, 0x4c, 0xf8, 0x52, 0x18, 0xdd, 0x46, 0x25, 0x48, + 0xe3, 0x83, 0x96, 0xac, 0x61, 0x5b, 0xe5, 0x66, 0xad, 0xd8, 0x6b, 0x7b, 0xae, 0x0b, 0x14, 0x8c, + 0xe2, 0x83, 0x16, 0x21, 0xa2, 0x4d, 0x32, 0xc3, 0xb9, 0x3e, 0x02, 0x2d, 0xb6, 0x7d, 0x3c, 0xc6, + 0xf0, 0xfb, 0x0b, 0x17, 0x37, 0xee, 0xb9, 0x07, 0x4c, 0x04, 0x6f, 0xbb, 0x0f, 0x05, 0xb8, 0x10, + 0xd9, 0x76, 0x71, 0x4e, 0x76, 0x6f, 0x43, 0x8a, 0xaa, 0x20, 0x71, 0x42, 0x15, 0x50, 0xae, 0xe2, + 0x8f, 0xdc, 0x51, 0x2f, 0xe1, 0x86, 0x49, 0xd4, 0xfb, 0x19, 0x2c, 0x96, 0x8d, 0xba, 0xcd, 0x9e, + 0x38, 0x71, 0xb3, 0xbb, 0xac, 0x1d, 0x66, 0xa1, 0xa3, 0xb0, 0x71, 0x9a, 0x85, 0x7f, 0x27, 0xc0, + 0x64, 0x05, 0x2b, 0x96, 0xb3, 0x85, 0x15, 0x27, 0x66, 0x1f, 0xf7, 0x75, 0x48, 0x1a, 0xe6, 0xfe, + 0x49, 0xd6, 0x0b, 0x49, 0x7e, 0x7f, 0xda, 0x0a, 0x97, 0x2b, 0xce, 0x5a, 0xff, 0x56, 0x02, 0x32, + 0xf7, 0x4b, 0x71, 0xd6, 0xf5, 0x6d, 0xbe, 0x2e, 0xcd, 0x86, 0x7a, 0x54, 0xb7, 0xf4, 0xde, 0x37, + 0x77, 0xbf, 0xb4, 0x8a, 0x0f, 0xdd, 0x6e, 0x49, 0xb8, 0xd0, 0x02, 0x64, 0x9c, 0x1d, 0x0b, 0xdb, + 0x3b, 0x66, 0x43, 0x3b, 0x89, 0xcf, 0xe2, 0x73, 0x4d, 0xef, 0xc2, 0x30, 0x95, 0xeb, 0xc6, 0x46, + 0x08, 0x11, 0xb1, 0x11, 0xe4, 0x35, 0x9e, 0xdb, 0x97, 0x38, 0xc9, 0x6b, 0x5c, 0x02, 0x6b, 0x1c, + 0xcf, 0x37, 0x1a, 0x16, 0x47, 0x8a, 0x8f, 0x00, 0x48, 0xd5, 0xe2, 0x6c, 0x9e, 0x7f, 0x95, 0x84, + 0xfc, 0x46, 0xdb, 0xde, 0x89, 0xb9, 0x3f, 0x96, 0x00, 0x5a, 0x6d, 0x9b, 0xc2, 0x86, 0x03, 0x83, + 0xd7, 0xff, 0x98, 0xe0, 0x0b, 0x57, 0x01, 0x8c, 0xaf, 0x76, 0x60, 0xa0, 0x0a, 0x17, 0x82, 0x65, + 0x3f, 0x82, 0xe3, 0xa5, 0x7e, 0x00, 0xb3, 0x76, 0x60, 0xac, 0x61, 0x0f, 0x59, 0x32, 0x49, 0x98, + 0x48, 0x7a, 0x1b, 0x46, 0xc9, 0x83, 0xec, 0x98, 0x27, 0x69, 0xf2, 0x11, 0xc2, 0x53, 0x33, 0xd1, + 0x5d, 0xc8, 0x30, 0x6e, 0x32, 0x71, 0x8d, 0xd0, 0x89, 0x2b, 0xaa, 0x2e, 0x5c, 0x8d, 0x74, 0xca, + 0x4a, 0x53, 0x56, 0x32, 0x4d, 0x4d, 0xc1, 0xf0, 0xb6, 0x69, 0xa9, 0x98, 0x86, 0x65, 0xa4, 0x25, + 0xf6, 0x10, 0x6c, 0xd5, 0x95, 0x54, 0x3a, 0x2d, 0x66, 0x56, 0x52, 0xe9, 0x8c, 0x08, 0xc5, 0xef, + 0x09, 0x30, 0xee, 0x35, 0x47, 0x9c, 0xb6, 0xbc, 0x14, 0xd2, 0xe5, 0xc9, 0x1b, 0x84, 0xa8, 0xb1, + 0xf8, 0xdb, 0xd4, 0xb1, 0x51, 0xcd, 0x3d, 0xda, 0x3e, 0x71, 0xf6, 0x97, 0xbb, 0x2c, 0x4a, 0x27, + 0x71, 0xd2, 0x36, 0xa6, 0x01, 0x3b, 0xb7, 0x60, 0x4a, 0x6f, 0x12, 0x2b, 0xaf, 0x3b, 0x8d, 0x43, + 0x8e, 0xca, 0x1c, 0xec, 0x6e, 0xfc, 0x4e, 0xfa, 0x69, 0x25, 0x37, 0x89, 0x1b, 0x3e, 0xb6, 0x91, + 0xe3, 0xd7, 0x27, 0x4e, 0x85, 0x2f, 0xc3, 0x98, 0xc5, 0x44, 0x13, 0xef, 0xe4, 0x84, 0x3a, 0xcf, + 0x79, 0xac, 0x44, 0xed, 0x3f, 0x4c, 0xc0, 0xf8, 0xa3, 0x36, 0xb6, 0x0e, 0x3f, 0x4f, 0x4a, 0xbf, + 0x0a, 0xe3, 0xfb, 0x8a, 0xee, 0xc8, 0xdb, 0xa6, 0x25, 0xb7, 0x5b, 0x9a, 0xe2, 0xb8, 0xa1, 0x22, + 0x63, 0x84, 0x7c, 0xcf, 0xb4, 0x36, 0x29, 0x11, 0x61, 0x40, 0xbb, 0x86, 0xb9, 0x6f, 0xc8, 0x84, + 0x4c, 0xd1, 0xf0, 0x81, 0xc1, 0x57, 0x98, 0x17, 0xdf, 0xf8, 0x83, 0xa3, 0x99, 0x3b, 0x03, 0x05, + 0x83, 0xd1, 0x70, 0xb6, 0x76, 0x5b, 0xd7, 0xe6, 0x36, 0x37, 0x97, 0x97, 0x24, 0x91, 0x8a, 0x7c, + 0xc2, 0x24, 0xd6, 0x0e, 0x0c, 0x77, 0x16, 0xff, 0x2f, 0x09, 0x10, 0x7d, 0x4d, 0xc5, 0xd9, 0x9c, + 0x65, 0xc8, 0x3e, 0x6d, 0x63, 0x4b, 0x3f, 0x45, 0x63, 0x02, 0x67, 0x24, 0x86, 0xe8, 0x3d, 0xc8, + 0x85, 0xf4, 0x90, 0xfc, 0x74, 0x7a, 0xc8, 0xee, 0xfb, 0x2a, 0x40, 0x37, 0x61, 0xc2, 0x39, 0x30, + 0x64, 0x16, 0xec, 0xc7, 0xc2, 0x45, 0xdc, 0xd8, 0x86, 0x71, 0x87, 0xe8, 0x83, 0xd0, 0x69, 0xa8, + 0x88, 0x5d, 0xfc, 0x7f, 0x02, 0x20, 0xaa, 0xa8, 0x65, 0xb6, 0x11, 0xf0, 0x79, 0xe9, 0x55, 0xd7, + 0x41, 0xa4, 0x41, 0x93, 0xb2, 0xbe, 0x2d, 0x37, 0x75, 0xdb, 0xd6, 0x8d, 0x3a, 0xef, 0x56, 0x79, + 0x4a, 0x5f, 0xde, 0x5e, 0x63, 0x54, 0xde, 0xe0, 0xff, 0x08, 0x26, 0x43, 0xd5, 0x88, 0xb3, 0xc9, + 0x2f, 0x41, 0x6e, 0xdb, 0x6c, 0x1b, 0x9a, 0xcc, 0x36, 0x4b, 0xf8, 0xea, 0x61, 0x96, 0xd2, 0xd8, + 0xfb, 0x8a, 0x7f, 0x9e, 0x80, 0x29, 0x09, 0xdb, 0x66, 0x63, 0x0f, 0xc7, 0xaf, 0xc8, 0x0a, 0xf0, + 0x6d, 0x1a, 0xf9, 0x54, 0xfa, 0xcc, 0x30, 0x66, 0x36, 0xfd, 0x85, 0x17, 0xe2, 0x2f, 0xf7, 0xef, + 0xb7, 0xdd, 0x4b, 0xef, 0x7c, 0x09, 0x2f, 0x15, 0x5a, 0xc2, 0x33, 0x61, 0x5c, 0xaf, 0x1b, 0x26, + 0xb1, 0x6f, 0x36, 0x7e, 0x6a, 0xb4, 0x9b, 0x2e, 0xbe, 0x99, 0xeb, 0x57, 0xc8, 0x65, 0xc6, 0x52, + 0xc5, 0x4f, 0xd7, 0xdb, 0x4d, 0xea, 0x65, 0x2f, 0x9e, 0x25, 0xe5, 0x7d, 0x7e, 0x34, 0x93, 0x0f, + 0xa5, 0xd9, 0x52, 0x5e, 0xf7, 0x9e, 0x89, 0x74, 0xde, 0xe4, 0x5f, 0x87, 0x33, 0x1d, 0x2a, 0x8f, + 0xd3, 0x1f, 0xfa, 0xbf, 0x49, 0x38, 0x1f, 0x16, 0x1f, 0x37, 0x6a, 0xf9, 0xbc, 0x37, 0x6b, 0x05, + 0xc6, 0x9a, 0xba, 0x71, 0xba, 0x45, 0xcb, 0x5c, 0x53, 0x37, 0xfc, 0xb5, 0xdf, 0x88, 0x0e, 0x32, + 0xf2, 0x77, 0xd0, 0x41, 0x14, 0x98, 0x8e, 0x6a, 0xc1, 0x38, 0x7b, 0xc9, 0xfb, 0x02, 0xe4, 0xe2, + 0x5e, 0x87, 0x3b, 0x5d, 0x98, 0x1b, 0xaf, 0x73, 0x0d, 0xc6, 0x3e, 0x83, 0x85, 0xbb, 0x1f, 0x0a, + 0x80, 0x6a, 0x56, 0xdb, 0x20, 0x80, 0xf8, 0x81, 0x59, 0x8f, 0xb3, 0xb2, 0x53, 0x30, 0xac, 0x1b, + 0x1a, 0x3e, 0xa0, 0x95, 0x4d, 0x49, 0xec, 0x21, 0xb4, 0x03, 0x99, 0x1c, 0x68, 0x07, 0xd2, 0x8f, + 0x75, 0x09, 0x15, 0x34, 0x4e, 0x2d, 0xfc, 0xb7, 0x04, 0x4c, 0xf2, 0xea, 0xc4, 0xbe, 0x70, 0xf9, + 0x1a, 0x0c, 0x37, 0x88, 0xcc, 0x3e, 0x6d, 0x4e, 0xdf, 0xe9, 0xb6, 0x39, 0xcd, 0x8c, 0xbe, 0x04, + 0xd0, 0xb2, 0xf0, 0x9e, 0xcc, 0x58, 0x93, 0x03, 0xb1, 0x66, 0x08, 0x07, 0x25, 0xa0, 0xaf, 0xc2, + 0x38, 0x19, 0xe1, 0x2d, 0xcb, 0x6c, 0x99, 0x36, 0x71, 0x68, 0xec, 0xc1, 0x50, 0xd1, 0xc4, 0xf3, + 0xa3, 0x99, 0xb1, 0x35, 0xdd, 0xd8, 0xe0, 0x8c, 0xb5, 0xaa, 0x44, 0x4c, 0x85, 0xf7, 0xe8, 0x0e, + 0xc0, 0xdf, 0x13, 0x60, 0xea, 0x33, 0x5b, 0xea, 0xfd, 0xfb, 0xd0, 0x98, 0x37, 0xf3, 0x88, 0xf4, + 0x71, 0xd9, 0xd8, 0x36, 0xe3, 0x5f, 0x80, 0x7f, 0x5f, 0x80, 0x89, 0x80, 0xf8, 0x38, 0x3d, 0x99, + 0x53, 0xe9, 0xac, 0xf8, 0x35, 0xe2, 0xdb, 0x04, 0xbb, 0x7d, 0x9c, 0x83, 0xea, 0x7f, 0x25, 0xe0, + 0x6c, 0x89, 0xed, 0x4d, 0xbb, 0x81, 0x1b, 0x71, 0xf6, 0x92, 0x02, 0x8c, 0xee, 0x61, 0xcb, 0xd6, + 0x4d, 0x36, 0xc3, 0x8e, 0x49, 0xee, 0x23, 0x9a, 0x86, 0xb4, 0x6d, 0x28, 0x2d, 0x7b, 0xc7, 0x74, + 0x77, 0xee, 0xbc, 0x67, 0x2f, 0xc8, 0x64, 0xf8, 0xf4, 0x41, 0x26, 0x23, 0xfd, 0x83, 0x4c, 0x46, + 0x3f, 0x75, 0x90, 0x09, 0xdf, 0x26, 0xfb, 0xa9, 0x00, 0xe7, 0xba, 0xf4, 0x17, 0x67, 0x9f, 0xf9, + 0x16, 0x64, 0x55, 0x2e, 0x98, 0x58, 0x63, 0xb6, 0x13, 0xb8, 0x4c, 0xb2, 0x9d, 0x12, 0xac, 0x3c, + 0x3f, 0x9a, 0x01, 0xb7, 0xa8, 0xcb, 0x4b, 0x5c, 0x45, 0xe4, 0xbf, 0x56, 0xfc, 0xfd, 0x1c, 0x8c, + 0x97, 0x0f, 0xd8, 0x3a, 0x77, 0x95, 0xf9, 0x03, 0xe8, 0x1e, 0xa4, 0x5b, 0x96, 0xb9, 0xa7, 0xbb, + 0xd5, 0xc8, 0x87, 0x62, 0x0b, 0xdc, 0x6a, 0x74, 0x70, 0x6d, 0x70, 0x0e, 0xc9, 0xe3, 0x45, 0x35, + 0xc8, 0x3c, 0x30, 0x55, 0xa5, 0x71, 0x4f, 0x6f, 0xb8, 0xfd, 0xff, 0xd5, 0xe3, 0x05, 0xcd, 0x79, + 0x3c, 0x1b, 0x8a, 0xb3, 0xe3, 0x36, 0x85, 0x47, 0x44, 0xcb, 0x90, 0xae, 0x38, 0x4e, 0x8b, 0x24, + 0x72, 0x6b, 0x72, 0x6d, 0x00, 0xa1, 0x84, 0xc5, 0x0d, 0x57, 0x75, 0xd9, 0x51, 0x0d, 0x26, 0xee, + 0x9b, 0x66, 0xbd, 0x81, 0x4b, 0x0d, 0xb3, 0xad, 0x95, 0x4c, 0x63, 0x5b, 0xaf, 0x73, 0x7b, 0x7c, + 0x75, 0x00, 0x99, 0xf7, 0x4b, 0x55, 0xa9, 0x5b, 0x00, 0x5a, 0x80, 0x74, 0xf5, 0x0e, 0x17, 0xc6, + 0x1c, 0xb8, 0x2b, 0x03, 0x08, 0xab, 0xde, 0x91, 0x3c, 0x36, 0xb4, 0x02, 0xd9, 0x85, 0x67, 0x6d, + 0x0b, 0x73, 0x29, 0x23, 0x3d, 0x03, 0x1b, 0x3a, 0xa5, 0x50, 0x2e, 0x29, 0xc8, 0x8c, 0xaa, 0x90, + 0x7f, 0x62, 0x5a, 0xbb, 0x0d, 0x53, 0x71, 0x6b, 0x38, 0x4a, 0xc5, 0x7d, 0x61, 0x00, 0x71, 0x2e, + 0xa3, 0xd4, 0x21, 0x02, 0x7d, 0x1d, 0xc6, 0x49, 0x63, 0xd4, 0x94, 0xad, 0x86, 0x5b, 0xc8, 0x34, + 0x95, 0xfa, 0xf2, 0x00, 0x52, 0x3d, 0x4e, 0x77, 0xa3, 0xa5, 0x43, 0xd4, 0xf4, 0x57, 0x61, 0x2c, + 0xd4, 0x09, 0x10, 0x82, 0x54, 0x8b, 0xb4, 0xb7, 0x40, 0x03, 0x90, 0xe8, 0x7f, 0xf4, 0x0a, 0x8c, + 0x1a, 0xa6, 0x86, 0xdd, 0x11, 0x32, 0xb6, 0x38, 0xf5, 0xfc, 0x68, 0x66, 0x64, 0xdd, 0xd4, 0x98, + 0xbb, 0xc2, 0xff, 0x49, 0x23, 0x24, 0x93, 0xeb, 0xac, 0x4c, 0x5f, 0x85, 0x14, 0x69, 0x7d, 0x62, + 0xa4, 0xb6, 0x14, 0x1b, 0x6f, 0x5a, 0x3a, 0x97, 0xe9, 0x3e, 0xf2, 0x7c, 0xbf, 0x14, 0x20, 0x51, + 0xbd, 0x43, 0x1c, 0xf5, 0xad, 0xb6, 0xba, 0x8b, 0x1d, 0x9e, 0x8b, 0x3f, 0x51, 0x07, 0xde, 0xc2, + 0xdb, 0x3a, 0xf3, 0xa1, 0x32, 0x12, 0x7f, 0x42, 0x2f, 0x02, 0x28, 0xaa, 0x8a, 0x6d, 0x5b, 0x76, + 0x0f, 0xee, 0x65, 0xa4, 0x0c, 0xa3, 0xac, 0xe2, 0x43, 0xc2, 0x66, 0x63, 0xd5, 0xc2, 0x8e, 0x1b, + 0x49, 0xc5, 0x9e, 0x08, 0x9b, 0x83, 0x9b, 0x2d, 0xd9, 0x31, 0x77, 0xb1, 0x41, 0xfb, 0x4c, 0x86, + 0x18, 0x9f, 0x66, 0xab, 0x46, 0x08, 0xc4, 0x6e, 0x62, 0x43, 0xf3, 0x8d, 0x5c, 0x46, 0xf2, 0x9e, + 0x89, 0x48, 0x0b, 0xd7, 0x75, 0x7e, 0xf6, 0x2c, 0x23, 0xf1, 0x27, 0xa2, 0x31, 0xa5, 0xed, 0xec, + 0xd0, 0x56, 0xc9, 0x48, 0xf4, 0x3f, 0xaf, 0xda, 0x7f, 0x10, 0x20, 0x79, 0xbf, 0x54, 0x3d, 0x71, + 0xdd, 0x5c, 0x89, 0x49, 0x5f, 0x22, 0x0d, 0x60, 0xd4, 0x1b, 0x0d, 0xdd, 0xa8, 0x13, 0x97, 0xe6, + 0x5b, 0x58, 0x75, 0x6b, 0x96, 0xe7, 0xe4, 0x0d, 0x46, 0x45, 0xb3, 0x90, 0x55, 0x2d, 0xac, 0x61, + 0xc3, 0xd1, 0x95, 0x86, 0xcd, 0xab, 0x18, 0x24, 0xf1, 0xc2, 0x7d, 0x47, 0x80, 0x61, 0xda, 0x79, + 0xd1, 0x0b, 0x90, 0x51, 0x4d, 0xc3, 0x51, 0x74, 0x83, 0x5b, 0xa1, 0x8c, 0xe4, 0x13, 0x7a, 0x16, + 0xf2, 0x12, 0xe4, 0x14, 0x55, 0x35, 0xdb, 0x86, 0x23, 0x1b, 0x4a, 0x13, 0xf3, 0xc2, 0x66, 0x39, + 0x6d, 0x5d, 0x69, 0x62, 0x34, 0x03, 0xee, 0xa3, 0x77, 0x7c, 0x32, 0x23, 0x01, 0x27, 0xad, 0xe2, + 0x43, 0x5e, 0x92, 0x9f, 0x0a, 0x90, 0x76, 0x3b, 0x3d, 0x29, 0x4c, 0x1d, 0x1b, 0xd8, 0x52, 0x1c, + 0xd3, 0x2b, 0x8c, 0x47, 0xe8, 0x9c, 0xf1, 0x32, 0xfe, 0x8c, 0x37, 0x05, 0xc3, 0x0e, 0xe9, 0xd7, + 0xbc, 0x1c, 0xec, 0x81, 0xae, 0x4b, 0x37, 0x94, 0x3a, 0x5b, 0x8a, 0xcb, 0x48, 0xec, 0x81, 0x54, + 0x89, 0x07, 0xe1, 0x32, 0xed, 0xf0, 0x27, 0x52, 0x5e, 0x16, 0x24, 0xba, 0x85, 0xeb, 0xba, 0x41, + 0x3b, 0x40, 0x52, 0x02, 0x4a, 0x5a, 0x24, 0x14, 0x74, 0x01, 0x32, 0x2c, 0x03, 0x36, 0x34, 0xda, + 0x0b, 0x92, 0x52, 0x9a, 0x12, 0xca, 0xee, 0xf9, 0xb0, 0xe9, 0x5d, 0xc8, 0x78, 0x63, 0x8c, 0x34, + 0x64, 0xdb, 0xf6, 0x94, 0x4a, 0xff, 0xa3, 0x57, 0x61, 0xea, 0x69, 0x5b, 0x69, 0xe8, 0xdb, 0x74, + 0x95, 0x8d, 0x64, 0x63, 0xfa, 0x63, 0xf5, 0x41, 0x5e, 0x1a, 0x95, 0x40, 0xd5, 0xe8, 0x0e, 0xc9, + 0xa4, 0x3f, 0x24, 0x83, 0xdb, 0x26, 0xc5, 0x8f, 0x04, 0x98, 0x60, 0x21, 0x43, 0x2c, 0x94, 0x35, + 0x3e, 0x07, 0xe3, 0x2d, 0xc8, 0x68, 0x8a, 0xa3, 0xb0, 0x23, 0xa2, 0x89, 0xbe, 0x47, 0x44, 0xbd, + 0x03, 0x0a, 0x8a, 0xa3, 0xd0, 0x63, 0xa2, 0x08, 0x52, 0xe4, 0x3f, 0x3b, 0x53, 0x2b, 0xd1, 0xff, + 0x7e, 0x10, 0x46, 0xb0, 0xb8, 0x71, 0x3a, 0x5c, 0xf3, 0x70, 0x86, 0x68, 0xbf, 0x6c, 0xa8, 0xd6, + 0x61, 0xcb, 0xd1, 0x4d, 0xe3, 0x21, 0xfd, 0xb5, 0x91, 0x18, 0xd8, 0xc4, 0xa2, 0x7b, 0x57, 0xbc, + 0x2c, 0x3f, 0x19, 0x81, 0xb1, 0xf2, 0x41, 0xcb, 0xb4, 0x62, 0x5d, 0xd4, 0x5a, 0x84, 0x51, 0x8e, + 0xf8, 0xfb, 0x6c, 0x2b, 0x77, 0xd8, 0x6a, 0x77, 0xc7, 0x96, 0x33, 0xa2, 0x45, 0x00, 0x16, 0x74, + 0x4a, 0xe3, 0x8e, 0x92, 0x27, 0xd8, 0x5c, 0xa3, 0x6c, 0x84, 0x8a, 0xd6, 0x21, 0xdb, 0xdc, 0x53, + 0x55, 0x79, 0x5b, 0x6f, 0x38, 0x3c, 0x6a, 0x2f, 0x3a, 0xe4, 0x7c, 0xed, 0x71, 0xa9, 0x74, 0x8f, + 0x66, 0x62, 0x01, 0x74, 0xfe, 0xb3, 0x04, 0x44, 0x02, 0xfb, 0x8f, 0x5e, 0x06, 0x7e, 0x74, 0x47, + 0xb6, 0xdd, 0x53, 0x7a, 0x8b, 0x63, 0xcf, 0x8f, 0x66, 0x32, 0x12, 0xa5, 0x56, 0xab, 0x35, 0x29, + 0xc3, 0x32, 0x54, 0x6d, 0x07, 0xbd, 0x04, 0x63, 0x66, 0x53, 0x77, 0x64, 0xd7, 0x07, 0xe2, 0x6e, + 0x63, 0x8e, 0x10, 0x5d, 0x1f, 0x09, 0xd5, 0xe0, 0x1a, 0x36, 0xe8, 0x28, 0x20, 0xf5, 0x94, 0xb7, + 0xd8, 0x5a, 0xa4, 0xc3, 0xc6, 0xbb, 0x6c, 0xb6, 0x1c, 0xbd, 0xa9, 0x3f, 0xa3, 0x1b, 0xdb, 0x7c, + 0x6f, 0xe9, 0x25, 0x96, 0x9d, 0xd4, 0x6f, 0x91, 0x2e, 0x52, 0xf2, 0xbc, 0x0f, 0x03, 0x59, 0xd1, + 0x77, 0x04, 0x38, 0xcb, 0x15, 0x29, 0x6f, 0xd1, 0x98, 0x79, 0xa5, 0xa1, 0x3b, 0x87, 0xf2, 0xee, + 0x5e, 0x21, 0x4d, 0x9d, 0xd3, 0x2f, 0x46, 0x36, 0x48, 0xa0, 0x1f, 0xcc, 0xb9, 0xcd, 0x72, 0xf8, + 0x80, 0x33, 0xaf, 0xee, 0x95, 0x0d, 0xc7, 0x3a, 0x5c, 0x3c, 0xf7, 0xfc, 0x68, 0x66, 0xb2, 0x3b, + 0xf5, 0xb1, 0x34, 0x69, 0x77, 0xb3, 0xa0, 0x0a, 0x00, 0xf6, 0x7a, 0x23, 0x0d, 0x0f, 0x8c, 0x76, + 0x2f, 0x22, 0xbb, 0xad, 0x14, 0xe0, 0x45, 0xd7, 0x41, 0xe4, 0xa7, 0x66, 0xb6, 0xf5, 0x06, 0x96, + 0x6d, 0xfd, 0x19, 0x2e, 0x00, 0xb5, 0x41, 0x79, 0x46, 0x27, 0x22, 0xaa, 0xfa, 0x33, 0x3c, 0xfd, + 0x2d, 0x28, 0xf4, 0x2a, 0x7d, 0x70, 0x20, 0x64, 0xd8, 0x26, 0xee, 0x9b, 0xe1, 0x15, 0x99, 0x01, + 0xba, 0xaa, 0xbb, 0x2a, 0x93, 0x78, 0xd3, 0x35, 0x41, 0x3f, 0x4a, 0xc0, 0xd8, 0x62, 0xbb, 0xb1, + 0xfb, 0xb0, 0x55, 0x6d, 0x37, 0x9b, 0x8a, 0x75, 0x48, 0x4c, 0x25, 0x33, 0x1d, 0xa4, 0x98, 0x02, + 0x33, 0x95, 0xd4, 0x36, 0xe8, 0xcf, 0x30, 0x99, 0xcc, 0x82, 0xe7, 0xc4, 0xd9, 0x99, 0x00, 0x5a, + 0x93, 0xc0, 0xe1, 0x6f, 0x73, 0xdf, 0x46, 0x6f, 0x42, 0x21, 0x90, 0x91, 0x2e, 0x9f, 0xc8, 0xd8, + 0x70, 0x2c, 0x1d, 0xb3, 0xe5, 0xc0, 0xa4, 0x14, 0x08, 0xbd, 0x59, 0x26, 0xc9, 0x65, 0x96, 0x8a, + 0x6a, 0x90, 0x23, 0x19, 0x0f, 0x65, 0x3a, 0xd9, 0xb8, 0x8b, 0xb6, 0xb7, 0x22, 0x2a, 0x17, 0x2a, + 0xf7, 0x1c, 0xd5, 0x52, 0x89, 0xf2, 0xd0, 0xbf, 0x52, 0x16, 0xfb, 0x94, 0xe9, 0x77, 0x40, 0xec, + 0xcc, 0x10, 0xd4, 0x68, 0x8a, 0x69, 0x74, 0x2a, 0xa8, 0xd1, 0x64, 0x40, 0x5b, 0x2b, 0xa9, 0x74, + 0x4a, 0x1c, 0x2e, 0xfe, 0x2a, 0x09, 0x79, 0xb7, 0xb3, 0xc5, 0x89, 0x66, 0x16, 0x61, 0x98, 0x74, + 0x0d, 0x37, 0x50, 0xe4, 0x6a, 0x9f, 0x3e, 0xce, 0xe3, 0xcf, 0x49, 0x97, 0x71, 0xf1, 0x30, 0x65, + 0x8d, 0xc3, 0xec, 0x4c, 0xff, 0xe3, 0x04, 0xa4, 0x28, 0x80, 0xb8, 0x05, 0x29, 0x3a, 0x75, 0x08, + 0x83, 0x4c, 0x1d, 0x34, 0xab, 0x37, 0xd9, 0x25, 0x02, 0xfe, 0x27, 0x71, 0xe6, 0x76, 0x94, 0xd7, + 0x6f, 0xdd, 0xa6, 0x26, 0x27, 0x27, 0xf1, 0x27, 0xb4, 0x48, 0x23, 0x98, 0x4c, 0xcb, 0xc1, 0x1a, + 0x77, 0xdc, 0x67, 0x8f, 0x6b, 0x5f, 0x77, 0x9a, 0x72, 0xf9, 0xd0, 0x79, 0x48, 0x12, 0x5b, 0x36, + 0xca, 0xa2, 0x1b, 0x9e, 0x1f, 0xcd, 0x24, 0x89, 0x15, 0x23, 0x34, 0x34, 0x0f, 0xd9, 0xb0, 0xe1, + 0x10, 0xae, 0x67, 0x98, 0x79, 0x0c, 0x0c, 0x7a, 0x68, 0x78, 0x03, 0x8c, 0x81, 0x56, 0xde, 0xc6, + 0xdf, 0x1e, 0x86, 0xb1, 0xe5, 0x66, 0xdc, 0x13, 0xcb, 0x42, 0xb8, 0x85, 0xa3, 0xd0, 0x4e, 0xe8, + 0xa5, 0x11, 0x0d, 0x1c, 0x9a, 0xd3, 0x93, 0x27, 0x9b, 0xd3, 0x97, 0x89, 0x0b, 0xcc, 0x2f, 0x7e, + 0x48, 0xf6, 0x00, 0x36, 0xe1, 0xf7, 0x53, 0x2f, 0x46, 0x22, 0x3c, 0xfe, 0x89, 0x0c, 0x1a, 0xa1, + 0xf2, 0x0e, 0xf5, 0xb4, 0x59, 0x2f, 0x1b, 0x19, 0xbc, 0x97, 0x8d, 0x62, 0x43, 0xa3, 0x53, 0x5b, + 0xd8, 0xae, 0x8e, 0x9e, 0xde, 0xae, 0x4e, 0x3f, 0xe3, 0x9d, 0xf5, 0x2d, 0x48, 0x6a, 0xba, 0xdb, + 0x38, 0x83, 0x4f, 0xd8, 0x84, 0xe9, 0x98, 0x5e, 0x9b, 0x0a, 0xf6, 0xda, 0xe0, 0x02, 0xc7, 0xf4, + 0x43, 0x00, 0x5f, 0x43, 0x68, 0x16, 0x46, 0xcc, 0x86, 0xe6, 0x1e, 0x4c, 0x19, 0x5b, 0xcc, 0x3c, + 0x3f, 0x9a, 0x19, 0x7e, 0xd8, 0xd0, 0x96, 0x97, 0xa4, 0x61, 0xb3, 0xa1, 0x2d, 0x6b, 0xf4, 0xee, + 0x0d, 0xbc, 0x2f, 0x7b, 0x01, 0x6b, 0x39, 0x69, 0xd4, 0xc0, 0xfb, 0x4b, 0xd8, 0x56, 0x3b, 0x02, + 0x69, 0x48, 0x17, 0xfc, 0x40, 0x80, 0xbc, 0xdb, 0x1a, 0xf1, 0x9a, 0x99, 0xb4, 0xde, 0xe4, 0xc3, + 0x2e, 0x79, 0xb2, 0x61, 0xe7, 0xf2, 0xf1, 0x83, 0xbd, 0xdf, 0x15, 0x78, 0xb0, 0x72, 0x55, 0x55, + 0x1c, 0xe2, 0x6c, 0xc4, 0x38, 0x54, 0x6e, 0x80, 0x68, 0x29, 0x86, 0x66, 0x36, 0xf5, 0x67, 0x98, + 0xad, 0x88, 0xda, 0x7c, 0x73, 0x73, 0xdc, 0xa3, 0xd3, 0x25, 0x3f, 0x77, 0x41, 0xf7, 0x27, 0x09, + 0x1e, 0xd8, 0xec, 0x15, 0x26, 0x4e, 0xa5, 0x7d, 0x13, 0x26, 0x3a, 0xaf, 0x46, 0x71, 0x47, 0xf1, + 0x2b, 0x11, 0xf2, 0xa2, 0x0a, 0xc2, 0x02, 0x11, 0xdd, 0xc8, 0xf9, 0x8e, 0x6b, 0x52, 0x6c, 0x54, + 0x82, 0x6c, 0xf0, 0xc6, 0x95, 0xe4, 0xc0, 0x37, 0xae, 0x80, 0xe5, 0xdd, 0xb3, 0x32, 0xfd, 0x15, + 0x18, 0xa6, 0xc9, 0xa7, 0x30, 0xdd, 0xbc, 0x4d, 0xff, 0x38, 0x01, 0x97, 0x69, 0xe9, 0x1f, 0x63, + 0x4b, 0xdf, 0x3e, 0xdc, 0xb0, 0x4c, 0x07, 0xab, 0x0e, 0xd6, 0xfc, 0x13, 0x26, 0xb1, 0xda, 0xc3, + 0x4c, 0xcb, 0x7d, 0xc1, 0x89, 0x02, 0xd0, 0x3c, 0x2e, 0xb4, 0x0a, 0xe3, 0x3c, 0x98, 0x40, 0x69, + 0xe8, 0x7b, 0x58, 0x56, 0x9c, 0x93, 0xcc, 0x7a, 0x63, 0x8c, 0x77, 0x81, 0xb0, 0x2e, 0x38, 0x48, + 0x83, 0x0c, 0x17, 0xa6, 0x6b, 0xfc, 0xba, 0xa0, 0xfb, 0x9f, 0x6e, 0x35, 0x31, 0xcd, 0x22, 0x1a, + 0x96, 0x97, 0xa4, 0x34, 0x93, 0xec, 0xed, 0x06, 0xfd, 0x42, 0x80, 0x2b, 0xc7, 0x28, 0x3a, 0xce, + 0x0e, 0x3c, 0x0d, 0xe9, 0x3d, 0xf2, 0x22, 0x9d, 0x6b, 0x3a, 0x2d, 0x79, 0xcf, 0x68, 0x0d, 0xc6, + 0xb6, 0x15, 0xbd, 0xe1, 0x77, 0xec, 0xde, 0x51, 0x8b, 0xd1, 0xc1, 0xb4, 0x39, 0xc6, 0xce, 0x7a, + 0x72, 0xf1, 0x83, 0x04, 0x4c, 0x2c, 0x68, 0x5a, 0xb5, 0xca, 0x6d, 0x63, 0x7c, 0xfd, 0xc5, 0x05, + 0xa5, 0x09, 0x1f, 0x94, 0xa2, 0x57, 0x00, 0x69, 0xba, 0xcd, 0xae, 0x22, 0xb1, 0x77, 0x14, 0xcd, + 0xdc, 0xf7, 0xe3, 0x31, 0x26, 0xdc, 0x94, 0xaa, 0x9b, 0x80, 0xaa, 0x40, 0x11, 0x91, 0x6c, 0x3b, + 0x8a, 0xb7, 0xa5, 0x74, 0x65, 0xa0, 0x03, 0x61, 0x0c, 0x2a, 0x79, 0x8f, 0x52, 0x86, 0xc8, 0xa1, + 0x7f, 0x89, 0x6f, 0xaf, 0x93, 0xaa, 0x3b, 0xb2, 0x62, 0xbb, 0x07, 0x85, 0xd8, 0x25, 0x28, 0x79, + 0x46, 0x5f, 0xb0, 0x83, 0xe7, 0x7f, 0xd8, 0x39, 0x06, 0x5f, 0x41, 0x71, 0x42, 0xe8, 0xff, 0x2a, + 0x40, 0x5e, 0xc2, 0xdb, 0x16, 0xb6, 0x63, 0x5d, 0x4a, 0xb8, 0x07, 0x39, 0x8b, 0x49, 0x95, 0xb7, + 0x2d, 0xb3, 0x79, 0x92, 0x31, 0x96, 0xe5, 0x8c, 0xf7, 0x2c, 0xb3, 0x19, 0xba, 0x17, 0xe2, 0x31, + 0x8c, 0x7b, 0x25, 0x8d, 0x53, 0x05, 0x1f, 0xd1, 0x43, 0xd0, 0x4c, 0x70, 0xdc, 0x81, 0x11, 0x9f, + 0x85, 0x1e, 0xe8, 0x1e, 0x56, 0xb0, 0xb8, 0x71, 0x2a, 0xe3, 0x4f, 0x05, 0xc8, 0x57, 0xdb, 0x5b, + 0xec, 0x26, 0xac, 0xf8, 0xf4, 0x50, 0x86, 0x4c, 0x03, 0x6f, 0x3b, 0xf2, 0xa9, 0x62, 0xef, 0xd3, + 0x84, 0x95, 0x9e, 0x3f, 0xb8, 0x0f, 0x60, 0xd1, 0xd3, 0x75, 0x54, 0x4e, 0xf2, 0x84, 0x72, 0x32, + 0x94, 0xd7, 0x77, 0x9f, 0x8a, 0x1f, 0x25, 0x60, 0xdc, 0xab, 0x6c, 0x9c, 0xd6, 0xf3, 0x49, 0xc8, + 0x6a, 0x24, 0x4f, 0x62, 0x35, 0x26, 0x78, 0x5c, 0x48, 0xb4, 0xe5, 0x98, 0x83, 0x49, 0xea, 0xdc, + 0xc8, 0x4a, 0xab, 0xd5, 0xd0, 0x5d, 0x90, 0x4c, 0xed, 0x52, 0x4a, 0x9a, 0xa0, 0x49, 0x0b, 0x2c, + 0x85, 0xc2, 0x63, 0xd2, 0xff, 0xb6, 0x2d, 0x8c, 0x9f, 0x61, 0x99, 0xe2, 0xb5, 0x93, 0xc4, 0xbd, + 0x64, 0x19, 0x63, 0x95, 0xf0, 0xf1, 0x9e, 0xf7, 0x0d, 0x98, 0xa0, 0x9a, 0x8d, 0xfb, 0xd8, 0x2f, + 0x6f, 0x8e, 0xef, 0x27, 0x00, 0x05, 0xe5, 0x7f, 0x76, 0x2d, 0x92, 0x88, 0xaf, 0x45, 0x5e, 0x06, + 0xc4, 0x62, 0x21, 0x6d, 0xb9, 0x85, 0x2d, 0xd9, 0xc6, 0xaa, 0xc9, 0xef, 0x67, 0x12, 0x24, 0x91, + 0xa7, 0x6c, 0x60, 0xab, 0x4a, 0xe9, 0xe8, 0x2e, 0x80, 0xef, 0xb5, 0xf1, 0xe9, 0xa4, 0xaf, 0xd3, + 0x26, 0x65, 0x3c, 0x77, 0xad, 0xf8, 0xfe, 0x34, 0xe4, 0xb8, 0x26, 0x37, 0x0d, 0xdd, 0x34, 0xd0, + 0x2d, 0x48, 0xd6, 0xf9, 0x36, 0x43, 0x36, 0x72, 0xa1, 0xcf, 0xbf, 0x92, 0xae, 0x32, 0x24, 0x91, + 0xbc, 0x84, 0xa5, 0xd5, 0x76, 0x22, 0x9c, 0x27, 0x3f, 0xe2, 0x3b, 0xc8, 0xd2, 0x6a, 0x3b, 0xa8, + 0x0a, 0xe3, 0xaa, 0x7f, 0xc1, 0x96, 0x4c, 0xd8, 0x93, 0x3d, 0x01, 0x58, 0xe4, 0xc5, 0x66, 0x95, + 0x21, 0x29, 0xaf, 0x86, 0x12, 0x50, 0x29, 0x78, 0xa3, 0x53, 0xaa, 0x2b, 0x60, 0xcc, 0x3f, 0x5f, + 0x1c, 0xbe, 0x4d, 0xaa, 0x32, 0x14, 0xb8, 0xf8, 0x09, 0xbd, 0x05, 0x23, 0x1a, 0xbd, 0x29, 0x88, + 0xf7, 0xeb, 0xa8, 0xae, 0x17, 0xba, 0x9c, 0xa9, 0x32, 0x24, 0x71, 0x0e, 0xb4, 0x02, 0x39, 0xf6, + 0x8f, 0x39, 0x31, 0x1c, 0x95, 0x5e, 0xe9, 0x2d, 0x21, 0x30, 0x35, 0x54, 0x86, 0xa4, 0xac, 0xe6, + 0x53, 0xd1, 0x6b, 0x90, 0xb2, 0x55, 0xc5, 0xc5, 0xa5, 0x17, 0x7b, 0x5c, 0xf2, 0xe1, 0x33, 0xd3, + 0xdc, 0xe8, 0x2e, 0xbb, 0x6a, 0xd2, 0x39, 0x70, 0x17, 0x0a, 0xa3, 0x8a, 0x1f, 0x3a, 0x3a, 0x4e, + 0x8a, 0x8f, 0x29, 0x01, 0xdd, 0x87, 0xac, 0x42, 0xbc, 0x41, 0x99, 0x9e, 0xca, 0xa4, 0x2b, 0x83, + 0xd1, 0x7b, 0xf0, 0x5d, 0x27, 0x6a, 0x2b, 0xf4, 0x7c, 0xba, 0x4b, 0xf4, 0x05, 0x35, 0xb1, 0x55, + 0xc7, 0x85, 0x6c, 0x7f, 0x41, 0xc1, 0x00, 0x31, 0x4f, 0x10, 0x25, 0x12, 0xaf, 0x70, 0xc7, 0x3d, + 0x71, 0x43, 0x2b, 0x95, 0xeb, 0xb9, 0xdf, 0x1b, 0x71, 0x62, 0xa8, 0x32, 0x24, 0xe5, 0x76, 0x02, + 0x64, 0x34, 0x07, 0x89, 0xba, 0x5a, 0x18, 0xeb, 0x39, 0x42, 0xbc, 0xf3, 0x30, 0x95, 0x21, 0x29, + 0x51, 0x57, 0xd1, 0x3b, 0x90, 0x66, 0x07, 0x1a, 0x0e, 0x8c, 0x42, 0xbe, 0xa7, 0x9d, 0x08, 0x1f, + 0x0b, 0xa9, 0x0c, 0x49, 0xf4, 0x0c, 0x05, 0x79, 0xdf, 0x06, 0xe4, 0x2d, 0x16, 0x61, 0xe7, 0xc6, + 0xc6, 0x8a, 0x3d, 0xf7, 0xc0, 0xa3, 0xc2, 0x63, 0x2b, 0x14, 0x1d, 0x04, 0xe8, 0xe8, 0x9b, 0x30, + 0x15, 0x96, 0xc8, 0x7b, 0xda, 0x44, 0xcf, 0xfd, 0xdc, 0x9e, 0x41, 0x9a, 0x95, 0x21, 0x09, 0x59, + 0x5d, 0x89, 0xe8, 0x0d, 0x18, 0x66, 0xad, 0x86, 0xa8, 0xc8, 0xa8, 0xe0, 0x8e, 0x8e, 0x06, 0x63, + 0xf9, 0x49, 0xe7, 0x77, 0x78, 0x68, 0x99, 0xdc, 0x30, 0xeb, 0x85, 0xc9, 0x9e, 0x9d, 0xbf, 0x3b, + 0x54, 0x8e, 0x74, 0x7e, 0xc7, 0xa7, 0x92, 0x76, 0xb7, 0x58, 0x0a, 0x8f, 0x44, 0x9a, 0xea, 0xd9, + 0xee, 0x11, 0x11, 0x67, 0x15, 0x7a, 0x30, 0xc0, 0x27, 0x93, 0xa2, 0x59, 0xec, 0x46, 0x1a, 0x99, + 0x8e, 0xa9, 0x33, 0x3d, 0x8b, 0xd6, 0x7d, 0x71, 0x4f, 0x85, 0x7a, 0x4d, 0x1e, 0x15, 0x3d, 0x06, + 0x91, 0xdf, 0x15, 0xe1, 0xef, 0x4a, 0x9c, 0xa5, 0xf2, 0x6e, 0x44, 0x9a, 0xae, 0xa8, 0xd0, 0x9d, + 0xca, 0x90, 0x34, 0xae, 0x86, 0x53, 0xd0, 0xbb, 0x30, 0x41, 0xe5, 0xc9, 0xaa, 0x7f, 0xc9, 0x47, + 0xa1, 0xd0, 0x75, 0x59, 0x44, 0xef, 0xfb, 0x40, 0x5c, 0xc9, 0xa2, 0xda, 0x91, 0x44, 0xba, 0xb1, + 0x6e, 0xe8, 0x0e, 0xb5, 0xb2, 0xd3, 0x3d, 0xbb, 0x71, 0xf8, 0x42, 0x42, 0xd2, 0x8d, 0x75, 0x46, + 0x21, 0xdd, 0xd8, 0xe1, 0x61, 0x6a, 0xbc, 0x39, 0x5e, 0xe8, 0xd9, 0x8d, 0xa3, 0xe2, 0xd9, 0x48, + 0x37, 0x76, 0x82, 0x74, 0xd2, 0x8d, 0x99, 0x81, 0xe8, 0x90, 0xfb, 0x62, 0xcf, 0x6e, 0xdc, 0xf3, + 0x5c, 0x34, 0xe9, 0xc6, 0x4a, 0x57, 0x22, 0x5a, 0x02, 0x60, 0x4e, 0x0d, 0x9d, 0x14, 0x2f, 0xf6, + 0x9c, 0x0c, 0x3a, 0x03, 0xd5, 0xc8, 0x64, 0xd0, 0x70, 0x69, 0xc4, 0x90, 0x51, 0x28, 0x25, 0xd3, + 0x2d, 0xda, 0xc2, 0x4c, 0x4f, 0x43, 0xd6, 0xb5, 0x79, 0x4a, 0x0c, 0xd9, 0xbe, 0x47, 0x24, 0xb3, + 0x0a, 0x5b, 0x2f, 0x2e, 0xcc, 0xf6, 0x36, 0xcb, 0xc1, 0xcd, 0x23, 0x6a, 0x96, 0x29, 0x01, 0x2d, + 0x40, 0x86, 0xcc, 0xf9, 0x87, 0xd4, 0x0c, 0x5d, 0xea, 0xe9, 0x9f, 0x76, 0x9c, 0x7c, 0xa9, 0x0c, + 0x49, 0xe9, 0xa7, 0x9c, 0x44, 0x5e, 0xcf, 0xd6, 0xcd, 0x0a, 0xc5, 0x9e, 0xaf, 0x0f, 0xad, 0xba, + 0x92, 0xd7, 0x33, 0x0e, 0xa4, 0xc2, 0x19, 0xd6, 0x56, 0xfc, 0x58, 0xb2, 0xc5, 0xcf, 0xd0, 0x16, + 0x5e, 0xa2, 0xa2, 0x7a, 0x2e, 0x3d, 0x45, 0x9e, 0x96, 0xae, 0x0c, 0x49, 0x93, 0x4a, 0x77, 0x2a, + 0x19, 0xf0, 0x7c, 0xea, 0x61, 0x0b, 0x56, 0x85, 0xcb, 0x3d, 0x07, 0x7c, 0xc4, 0x6a, 0x1f, 0x19, + 0xf0, 0x4a, 0x80, 0xcc, 0x26, 0x20, 0x4d, 0xb6, 0x6d, 0xb6, 0xa1, 0x7f, 0xa5, 0xcf, 0x04, 0xd4, + 0xb1, 0x46, 0xc0, 0x26, 0x20, 0xad, 0xca, 0x38, 0x89, 0x20, 0xb5, 0x81, 0x15, 0x8b, 0x9b, 0xd9, + 0xab, 0x3d, 0x05, 0x75, 0xdd, 0xf1, 0x47, 0x04, 0xa9, 0x1e, 0x91, 0x38, 0x3c, 0x96, 0x7b, 0xc9, + 0x0c, 0x77, 0x18, 0xaf, 0xf5, 0x74, 0x78, 0x22, 0xef, 0xc2, 0x21, 0x0e, 0x8f, 0x15, 0x4a, 0x40, + 0x5f, 0x82, 0x51, 0x0e, 0xe8, 0x0a, 0xd7, 0xfb, 0xb8, 0xb1, 0x41, 0x24, 0x4e, 0xc6, 0x35, 0xe7, + 0x61, 0x56, 0x96, 0x01, 0x49, 0x56, 0xbd, 0x1b, 0x7d, 0xac, 0x6c, 0x17, 0x96, 0x65, 0x56, 0xd6, + 0x27, 0x13, 0x2b, 0xcb, 0xfa, 0x29, 0x9f, 0xeb, 0x6e, 0xf6, 0xb4, 0xb2, 0xdd, 0x27, 0x6a, 0x88, + 0x95, 0x7d, 0xea, 0x53, 0x49, 0xcd, 0x6c, 0x06, 0xa2, 0x0a, 0x5f, 0xe8, 0x59, 0xb3, 0x30, 0xa6, + 0x24, 0x35, 0xe3, 0x3c, 0xa4, 0xd9, 0x98, 0x4b, 0xcc, 0x34, 0xfd, 0x72, 0xef, 0x1b, 0x00, 0x3a, + 0xa1, 0x47, 0xc5, 0x5d, 0xcc, 0x64, 0x1a, 0xf6, 0x0c, 0x95, 0xc5, 0xcf, 0x3b, 0x73, 0x4d, 0xbd, + 0xd2, 0xdf, 0x50, 0x45, 0x1d, 0xe5, 0xf6, 0x0c, 0x55, 0x28, 0x91, 0x16, 0x95, 0x1d, 0x62, 0xa3, + 0xe3, 0x7b, 0xae, 0xcf, 0x65, 0x05, 0x1d, 0x07, 0x0a, 0x69, 0x51, 0x3d, 0xa2, 0x3f, 0x84, 0xda, + 0xec, 0x56, 0x8d, 0xc2, 0x7c, 0xff, 0x21, 0x14, 0xbe, 0xdd, 0xc3, 0x1b, 0x42, 0x9c, 0xec, 0xcd, + 0x99, 0xae, 0x87, 0xf1, 0x6a, 0xff, 0x39, 0xb3, 0xd3, 0xb5, 0x60, 0x73, 0x26, 0xf7, 0x29, 0xfe, + 0x89, 0x00, 0xb3, 0xac, 0x6c, 0x74, 0xbd, 0xef, 0x50, 0xf6, 0xd6, 0x4e, 0x03, 0xc7, 0x27, 0x6e, + 0xd1, 0x17, 0xbc, 0xd1, 0xab, 0xb8, 0xc7, 0xac, 0x05, 0x57, 0x86, 0xa4, 0x17, 0x95, 0x7e, 0xf9, + 0x16, 0x47, 0xf9, 0x96, 0xaa, 0x77, 0x8e, 0x74, 0x5c, 0x14, 0x57, 0x52, 0xe9, 0x73, 0x62, 0x61, + 0x25, 0x95, 0x3e, 0x2f, 0x4e, 0xaf, 0xa4, 0xd2, 0x17, 0xc4, 0x17, 0x8a, 0x7f, 0x76, 0x1e, 0xc6, + 0x5c, 0xe4, 0xc7, 0x10, 0xd1, 0xed, 0x20, 0x22, 0xba, 0xd8, 0x0b, 0x11, 0x71, 0xac, 0xc8, 0x21, + 0xd1, 0xed, 0x20, 0x24, 0xba, 0xd8, 0x0b, 0x12, 0xf9, 0x3c, 0x04, 0x13, 0xd5, 0x7a, 0x61, 0xa2, + 0x1b, 0x03, 0x60, 0x22, 0x4f, 0x54, 0x27, 0x28, 0x5a, 0xea, 0x06, 0x45, 0x97, 0xfb, 0x83, 0x22, + 0x4f, 0x54, 0x00, 0x15, 0xdd, 0xed, 0x40, 0x45, 0x97, 0xfa, 0xa0, 0x22, 0x8f, 0xdf, 0x85, 0x45, + 0xab, 0x91, 0xb0, 0xe8, 0xea, 0x71, 0xb0, 0xc8, 0x93, 0x13, 0xc2, 0x45, 0xaf, 0x87, 0x70, 0xd1, + 0x4c, 0x4f, 0x5c, 0xe4, 0x71, 0x33, 0x60, 0xf4, 0x76, 0x27, 0x30, 0xba, 0xd4, 0x07, 0x18, 0xf9, + 0x35, 0xe0, 0xc8, 0xa8, 0x12, 0x85, 0x8c, 0xae, 0x1c, 0x83, 0x8c, 0x3c, 0x29, 0x41, 0x68, 0x54, + 0x89, 0x82, 0x46, 0x57, 0x8e, 0x81, 0x46, 0x1d, 0x92, 0x18, 0x36, 0x5a, 0x8f, 0xc6, 0x46, 0xd7, + 0x8e, 0xc5, 0x46, 0x9e, 0xb4, 0x30, 0x38, 0x9a, 0x0f, 0x80, 0xa3, 0x17, 0x7b, 0x80, 0x23, 0x8f, + 0x95, 0xa0, 0xa3, 0x2f, 0x77, 0xa1, 0xa3, 0x62, 0x3f, 0x74, 0xe4, 0xf1, 0x7a, 0xf0, 0xe8, 0x51, + 0x0f, 0x78, 0x74, 0xfd, 0x78, 0x78, 0xe4, 0x09, 0xeb, 0xc0, 0x47, 0x4a, 0x5f, 0x7c, 0xf4, 0xca, + 0x80, 0xf8, 0xc8, 0x93, 0x1e, 0x05, 0x90, 0xde, 0x0c, 0x03, 0xa4, 0xd9, 0xde, 0x00, 0xc9, 0x13, + 0xc3, 0x11, 0xd2, 0x6a, 0x24, 0x42, 0xba, 0x7a, 0x1c, 0x42, 0xf2, 0xc7, 0x41, 0x10, 0x22, 0xad, + 0x47, 0x43, 0xa4, 0x6b, 0xc7, 0x42, 0x24, 0xbf, 0xf9, 0x43, 0x18, 0x69, 0x35, 0x12, 0x23, 0x5d, + 0x3d, 0x0e, 0x23, 0xf9, 0x85, 0x0b, 0x82, 0xa4, 0x27, 0x3d, 0x41, 0xd2, 0xcd, 0x41, 0x40, 0x92, + 0x27, 0xb4, 0x0b, 0x25, 0xbd, 0xd7, 0x1b, 0x25, 0x7d, 0xe1, 0x04, 0xb7, 0x26, 0x46, 0xc2, 0xa4, + 0x2f, 0x77, 0xc1, 0xa4, 0x62, 0x3f, 0x98, 0xe4, 0xf7, 0x67, 0x17, 0x27, 0x29, 0x7d, 0x51, 0xcd, + 0x2b, 0x03, 0xa2, 0x1a, 0xbf, 0xf3, 0x45, 0xc0, 0x9a, 0x72, 0x04, 0xac, 0xb9, 0xdc, 0x1f, 0xd6, + 0xf8, 0xe6, 0xdc, 0xc7, 0x35, 0x95, 0x28, 0x5c, 0x73, 0xe5, 0x18, 0x5c, 0xe3, 0x5b, 0xa1, 0x00, + 0xb0, 0xb9, 0xdb, 0x01, 0x6c, 0x2e, 0x1d, 0x1b, 0x31, 0x14, 0x40, 0x36, 0x8b, 0xdd, 0xc8, 0xe6, + 0xa5, 0xbe, 0xc8, 0xc6, 0x93, 0xe0, 0x43, 0x9b, 0xbb, 0x1d, 0xd0, 0xe6, 0x52, 0x1f, 0x68, 0xe3, + 0x17, 0x80, 0x63, 0x1b, 0xad, 0x3f, 0xb6, 0x99, 0x1b, 0x14, 0xdb, 0x78, 0x82, 0x23, 0xc1, 0xcd, + 0x7a, 0x34, 0xb8, 0xb9, 0x36, 0xe0, 0xa6, 0x7d, 0x17, 0xba, 0xa9, 0x44, 0xa1, 0x9b, 0x2b, 0xc7, + 0xa0, 0x9b, 0xe0, 0x1c, 0xe2, 0xc1, 0x9b, 0x4a, 0x14, 0xbc, 0xb9, 0x72, 0x0c, 0xbc, 0xf1, 0x25, + 0x05, 0xf0, 0x4d, 0xad, 0x17, 0xbe, 0xb9, 0x31, 0x00, 0xbe, 0xf1, 0x9d, 0x97, 0x0e, 0x80, 0xf3, + 0x4e, 0x27, 0xc0, 0x29, 0xf6, 0x03, 0x38, 0xfe, 0x88, 0x74, 0x11, 0xce, 0x7a, 0x34, 0xc2, 0xb9, + 0x76, 0x2c, 0xc2, 0x09, 0x1a, 0xc9, 0x00, 0xc4, 0x59, 0x8d, 0x84, 0x38, 0x57, 0x8f, 0x83, 0x38, + 0xbe, 0x91, 0x0c, 0x62, 0x9c, 0x77, 0x3a, 0x31, 0x4e, 0xb1, 0x1f, 0xc6, 0xf1, 0x2b, 0xe7, 0x82, + 0x9c, 0x4a, 0x14, 0xc8, 0xb9, 0x72, 0x0c, 0xc8, 0xf1, 0x1b, 0x2f, 0x80, 0x72, 0x94, 0xbe, 0x28, + 0xe7, 0x95, 0x01, 0x51, 0x4e, 0x87, 0xe1, 0x0a, 0xc3, 0x9c, 0x4a, 0x14, 0xcc, 0xb9, 0x72, 0x0c, + 0xcc, 0x09, 0x14, 0xd6, 0xc7, 0x39, 0xeb, 0xd1, 0x38, 0xe7, 0xda, 0xb1, 0x38, 0xa7, 0x63, 0x34, + 0xb9, 0x40, 0x67, 0x35, 0x12, 0xe8, 0x5c, 0x3d, 0x0e, 0xe8, 0x74, 0x4c, 0x7c, 0xdc, 0x39, 0xf8, + 0xa7, 0x83, 0x23, 0x9d, 0x37, 0x4f, 0x8e, 0x74, 0xbc, 0x77, 0xc6, 0x02, 0x75, 0x56, 0x52, 0xe9, + 0x17, 0xc4, 0x17, 0x8b, 0xff, 0x72, 0x14, 0x46, 0x2a, 0x5e, 0x2c, 0x8c, 0x5f, 0x4a, 0xe1, 0x34, + 0x97, 0x31, 0xa1, 0x25, 0x32, 0x62, 0xa9, 0xdd, 0x3b, 0xfe, 0xde, 0xbd, 0xee, 0x3b, 0xe1, 0x38, + 0xeb, 0x29, 0xce, 0x37, 0xa3, 0xd7, 0x61, 0xac, 0x6d, 0x63, 0x4b, 0x6e, 0x59, 0xba, 0x69, 0xe9, + 0x0e, 0x3b, 0x2b, 0x22, 0x2c, 0x8a, 0x9f, 0x1c, 0xcd, 0xe4, 0x36, 0x6d, 0x6c, 0x6d, 0x70, 0xba, + 0x94, 0x6b, 0x07, 0x9e, 0xdc, 0xcf, 0x5e, 0x0d, 0x0f, 0xfe, 0xd9, 0xab, 0x47, 0x20, 0x5a, 0x58, + 0xd1, 0x42, 0x1e, 0x08, 0xbb, 0xec, 0x28, 0xba, 0xcf, 0xd0, 0x63, 0x58, 0x6e, 0x4e, 0x7a, 0xe9, + 0xd1, 0xb8, 0x15, 0x26, 0xa2, 0x5b, 0x70, 0xa6, 0xa9, 0x1c, 0xd0, 0x78, 0x4a, 0xd9, 0x75, 0xea, + 0x68, 0x8c, 0x24, 0xfb, 0xa2, 0x14, 0x6a, 0x2a, 0x07, 0xf4, 0x1b, 0x5a, 0x2c, 0x89, 0x7e, 0xf4, + 0xe2, 0x0a, 0xe4, 0x35, 0xdd, 0x76, 0x74, 0x43, 0x75, 0xf8, 0xdd, 0xb7, 0xec, 0xde, 0xd8, 0x31, + 0x97, 0xca, 0x2e, 0xb8, 0xbd, 0x09, 0x13, 0x3c, 0xdc, 0x3e, 0xb0, 0x45, 0x08, 0x3c, 0x86, 0x8d, + 0x26, 0x78, 0xbb, 0x82, 0xa8, 0x04, 0xe3, 0x75, 0xc5, 0xc1, 0xfb, 0xca, 0xa1, 0xec, 0x9e, 0xd5, + 0xca, 0xd2, 0x5b, 0x22, 0x2f, 0x3c, 0x3f, 0x9a, 0x19, 0xbb, 0xcf, 0x92, 0xba, 0x8e, 0x6c, 0x8d, + 0xd5, 0x03, 0x09, 0x1a, 0xba, 0x06, 0xe3, 0x8a, 0x7d, 0x68, 0xa8, 0x54, 0x3d, 0xd8, 0xb0, 0xdb, + 0x36, 0x85, 0x14, 0x69, 0x29, 0x4f, 0xc9, 0x25, 0x97, 0x8a, 0x2e, 0x41, 0x8e, 0xc7, 0xa2, 0xb3, + 0x0f, 0xf1, 0x8c, 0xd3, 0xaa, 0xf2, 0xaf, 0x3a, 0xd0, 0x6f, 0xf1, 0xa0, 0xbb, 0x30, 0xcd, 0x6f, + 0xbb, 0xdf, 0x57, 0x2c, 0x4d, 0xa6, 0x5a, 0xf7, 0xfb, 0xa7, 0x48, 0xc5, 0x9e, 0x63, 0xb7, 0xdb, + 0x93, 0x0c, 0x44, 0xd5, 0xfe, 0xa5, 0x0a, 0xeb, 0x30, 0xa1, 0x36, 0x74, 0x0f, 0x01, 0xb0, 0x9a, + 0x4f, 0xf4, 0xb4, 0xb3, 0x25, 0x9a, 0xd7, 0xdf, 0x22, 0x1d, 0x57, 0xc3, 0x04, 0x54, 0x05, 0x7a, + 0x89, 0x8c, 0xdc, 0x32, 0x1b, 0xba, 0x7a, 0x48, 0x9d, 0xff, 0xf0, 0x4d, 0xdd, 0x7d, 0xef, 0xce, + 0x7f, 0xa2, 0xe8, 0xce, 0x06, 0xe5, 0x94, 0x60, 0xdf, 0xfb, 0xcf, 0x2e, 0xe1, 0x5d, 0x49, 0xa5, + 0x73, 0xe2, 0xd8, 0x4a, 0x2a, 0x9d, 0x17, 0xc7, 0x8b, 0xff, 0x56, 0x80, 0xf1, 0x8e, 0xb2, 0xa0, + 0x0a, 0x9c, 0xd1, 0xbc, 0xa1, 0x22, 0xf3, 0xa3, 0x4c, 0xba, 0x69, 0xf0, 0xcb, 0xc7, 0x27, 0x3f, + 0x39, 0x9a, 0x19, 0xa7, 0xb9, 0xef, 0x7b, 0x49, 0xd2, 0x94, 0xcf, 0xe1, 0x53, 0xd1, 0x9b, 0x90, + 0x67, 0xee, 0xa3, 0xf7, 0xb5, 0x39, 0x1a, 0x5f, 0xbe, 0x38, 0xf1, 0xc9, 0xd1, 0xcc, 0x18, 0xf5, + 0x19, 0xdd, 0x1b, 0x84, 0xa5, 0xb1, 0x46, 0xf0, 0xb1, 0xf8, 0x6f, 0x04, 0xc8, 0x85, 0x0e, 0x07, + 0xdd, 0xed, 0xd8, 0x41, 0x3f, 0x1f, 0x8d, 0x3b, 0x7b, 0x05, 0xdd, 0xa5, 0x79, 0x3f, 0x77, 0x23, + 0x18, 0x67, 0x7a, 0xe3, 0x16, 0xba, 0x0a, 0xe3, 0x86, 0x6d, 0xb8, 0x6c, 0x6f, 0xa5, 0xfe, 0xfd, + 0x87, 0x33, 0x43, 0xc5, 0x8f, 0x52, 0x30, 0x16, 0x3e, 0x04, 0xb4, 0xdc, 0x51, 0xae, 0xa8, 0x79, + 0x21, 0xc4, 0x31, 0xd7, 0xe7, 0xde, 0xc4, 0x8c, 0x7f, 0xd7, 0x3f, 0x2b, 0xe6, 0x6c, 0x9f, 0x38, + 0x81, 0x60, 0x39, 0x7d, 0xc6, 0xe9, 0x7f, 0x96, 0xf4, 0xec, 0xeb, 0x1c, 0x0c, 0xd3, 0xdb, 0x79, + 0x78, 0xd1, 0xa2, 0xce, 0x97, 0x97, 0x49, 0xba, 0xc4, 0xb2, 0x11, 0x7b, 0x5c, 0x3b, 0xd5, 0xe5, + 0x78, 0xfe, 0x30, 0x38, 0xf9, 0x67, 0xfd, 0xf8, 0x15, 0x89, 0xc3, 0x27, 0xbb, 0x22, 0x91, 0xed, + 0xe8, 0x37, 0x1a, 0x6c, 0xae, 0x63, 0x16, 0x69, 0xa4, 0xeb, 0x10, 0x37, 0x15, 0xc1, 0xbf, 0xb6, + 0x38, 0x27, 0xf1, 0xaf, 0x2d, 0x06, 0xa2, 0x40, 0xf3, 0x9e, 0x08, 0x66, 0xbe, 0x3a, 0x02, 0x52, + 0x47, 0x4f, 0x13, 0x90, 0xca, 0x42, 0x99, 0x79, 0x7f, 0xf9, 0x1d, 0x81, 0x87, 0x83, 0x3c, 0x30, + 0xcd, 0xdd, 0xb6, 0x17, 0x48, 0x3a, 0x1d, 0xbc, 0xa0, 0x30, 0xfd, 0xc9, 0xd1, 0x4c, 0x4a, 0xf2, + 0x6e, 0x28, 0x8c, 0xb2, 0xf7, 0x89, 0x4f, 0x67, 0xef, 0x2f, 0x41, 0xae, 0x65, 0xe1, 0x6d, 0xec, + 0xa8, 0x3b, 0xb2, 0xd1, 0x6e, 0xf2, 0x73, 0x28, 0x59, 0x97, 0xb6, 0xde, 0x6e, 0xa2, 0x1b, 0x20, + 0x7a, 0x59, 0x38, 0xb2, 0x76, 0xef, 0xa8, 0x72, 0xe9, 0x1c, 0x87, 0x17, 0xff, 0x42, 0x80, 0xc9, + 0x50, 0x9d, 0xf8, 0x48, 0x58, 0x81, 0xac, 0x6f, 0x04, 0xec, 0x82, 0x70, 0xc2, 0x80, 0xca, 0x20, + 0x33, 0x92, 0xe1, 0xac, 0xfb, 0x5a, 0x7a, 0x93, 0xbd, 0x2f, 0x36, 0x71, 0x42, 0xb1, 0x67, 0x7c, + 0x39, 0x4b, 0x81, 0x17, 0x78, 0x43, 0x23, 0x39, 0xd0, 0xd0, 0x28, 0x7e, 0x20, 0x80, 0x48, 0x5f, + 0x70, 0x0f, 0x63, 0x2d, 0x16, 0x9b, 0xe4, 0x86, 0x2b, 0x27, 0x06, 0x3f, 0x69, 0x12, 0xfa, 0x12, + 0x47, 0x32, 0xfc, 0x25, 0x8e, 0xe2, 0x87, 0x02, 0xe4, 0xbd, 0x12, 0xb2, 0xaf, 0xd8, 0xf5, 0xb9, + 0x07, 0xf3, 0x74, 0xdf, 0x6e, 0x73, 0xaf, 0xeb, 0x18, 0xe8, 0xc3, 0x7a, 0xc1, 0xeb, 0x3a, 0xd8, + 0x77, 0xc6, 0xfe, 0xa3, 0xdb, 0x73, 0x48, 0x11, 0x4b, 0xfe, 0x55, 0x0c, 0xa7, 0x38, 0x74, 0x23, + 0xd1, 0x8f, 0x81, 0x9a, 0x8d, 0x3d, 0x76, 0x4f, 0xca, 0x40, 0xc6, 0x0a, 0xf1, 0x20, 0x28, 0xe0, + 0x6b, 0x70, 0x5a, 0xad, 0x4a, 0x3f, 0x13, 0xca, 0xfe, 0xdb, 0xc5, 0x7b, 0x01, 0x05, 0xd2, 0xc6, + 0x27, 0x5a, 0x1a, 0xc8, 0x80, 0xba, 0x5a, 0x62, 0x7d, 0xe5, 0x67, 0xc1, 0x96, 0x28, 0xef, 0x11, + 0xec, 0x75, 0x07, 0x92, 0x7b, 0x4a, 0xa3, 0x5f, 0xf0, 0x57, 0xa8, 0xe5, 0x24, 0x92, 0x1b, 0xdd, + 0x0b, 0xdd, 0x60, 0x91, 0xe8, 0x8d, 0x13, 0xba, 0x55, 0x1a, 0xba, 0xe9, 0xe2, 0x8d, 0x70, 0x5f, + 0xef, 0xfb, 0xfa, 0x60, 0xa7, 0x7f, 0x2b, 0xf5, 0xf1, 0x87, 0x33, 0x42, 0xf1, 0x0d, 0x38, 0x7f, + 0xdf, 0xb4, 0x6d, 0xbd, 0x45, 0xb0, 0x21, 0x1d, 0x40, 0xc4, 0x76, 0x7b, 0x96, 0x2c, 0xdd, 0xa2, + 0xab, 0x04, 0x06, 0x1b, 0xf1, 0x19, 0xc9, 0x7b, 0x2e, 0xfe, 0x6f, 0x01, 0xce, 0x75, 0x73, 0x32, + 0x85, 0x44, 0x1d, 0xea, 0x1b, 0x55, 0x4d, 0xff, 0x46, 0xb7, 0xe3, 0x3b, 0x96, 0x9b, 0x9d, 0xf8, + 0x80, 0xfc, 0x9d, 0x72, 0x53, 0xa1, 0x23, 0x9d, 0x1f, 0x3c, 0xce, 0x73, 0xf2, 0x1a, 0xa3, 0xfa, + 0x83, 0x3e, 0x35, 0xd0, 0xa0, 0xbf, 0x59, 0x85, 0xc9, 0x08, 0xfb, 0x8a, 0xf2, 0x00, 0x81, 0x2f, + 0x93, 0xf0, 0x6f, 0xaa, 0x2e, 0x2c, 0xc9, 0x9b, 0xeb, 0xa5, 0x87, 0x6b, 0x6b, 0xcb, 0xb5, 0x5a, + 0x79, 0x49, 0x14, 0x90, 0x08, 0xb9, 0xd0, 0x77, 0x4d, 0x12, 0xec, 0x2b, 0xab, 0x37, 0xff, 0x01, + 0x80, 0xff, 0xb9, 0x24, 0x22, 0x6b, 0xb5, 0xfc, 0xae, 0xfc, 0x78, 0xe1, 0xc1, 0x66, 0xb9, 0x2a, + 0x0e, 0x21, 0x04, 0xf9, 0xc5, 0x85, 0x5a, 0xa9, 0x22, 0x4b, 0xe5, 0xea, 0xc6, 0xc3, 0xf5, 0x6a, + 0xd9, 0xfd, 0x3a, 0xeb, 0xcd, 0x25, 0xc8, 0x05, 0x6f, 0x39, 0x41, 0x93, 0x30, 0x5e, 0xaa, 0x94, + 0x4b, 0xab, 0xf2, 0xe3, 0xe5, 0x05, 0xf9, 0xd1, 0x66, 0x79, 0xb3, 0x2c, 0x0e, 0xd1, 0xa2, 0x51, + 0xe2, 0xbd, 0xcd, 0x07, 0x0f, 0x44, 0x01, 0x8d, 0x43, 0x96, 0x3d, 0xd3, 0x6f, 0xa0, 0x88, 0x89, + 0x9b, 0x6b, 0x90, 0x0d, 0xdc, 0x87, 0x4a, 0x5e, 0xb7, 0xb1, 0x59, 0xad, 0xc8, 0xb5, 0xe5, 0xb5, + 0x72, 0xb5, 0xb6, 0xb0, 0xb6, 0xc1, 0x64, 0x50, 0xda, 0xc2, 0xe2, 0x43, 0xa9, 0x26, 0x0a, 0xde, + 0x73, 0xed, 0xe1, 0x66, 0xa9, 0xe2, 0x56, 0xa3, 0x98, 0x4a, 0x27, 0xc5, 0xe4, 0xcd, 0x6f, 0x0b, + 0x70, 0xae, 0xc7, 0x5d, 0x1f, 0x28, 0x0b, 0xa3, 0x9b, 0x06, 0xbd, 0x10, 0x52, 0x1c, 0x42, 0x63, + 0x81, 0xeb, 0x3e, 0x44, 0x01, 0xa5, 0xd9, 0x55, 0x0b, 0x62, 0x02, 0x8d, 0x40, 0xa2, 0x7a, 0x47, + 0x4c, 0x92, 0x92, 0x06, 0x6e, 0xcb, 0x10, 0x53, 0x28, 0xc3, 0x0f, 0xfb, 0x8b, 0xc3, 0x28, 0xe7, + 0x9f, 0xb6, 0x17, 0x47, 0x88, 0x28, 0xef, 0xbc, 0xba, 0x38, 0x7a, 0xf3, 0x12, 0x04, 0xce, 0xfe, + 0x22, 0x80, 0x91, 0x07, 0x8a, 0x83, 0x6d, 0x47, 0x1c, 0x42, 0xa3, 0x90, 0x5c, 0x68, 0x34, 0x44, + 0xe1, 0xf6, 0x3f, 0x4f, 0x42, 0xda, 0xfd, 0xca, 0x07, 0x7a, 0x00, 0xc3, 0x6c, 0x29, 0x71, 0xa6, + 0xb7, 0xa7, 0x46, 0xfb, 0xf6, 0xf4, 0xec, 0x71, 0xae, 0x5c, 0x71, 0x08, 0xfd, 0x43, 0xc8, 0x06, + 0xe6, 0x42, 0xd4, 0x73, 0x39, 0x24, 0x34, 0xff, 0x4f, 0x5f, 0x3d, 0x2e, 0x9b, 0x27, 0xff, 0x09, + 0x64, 0xbc, 0xb1, 0x89, 0x5e, 0xea, 0x37, 0x72, 0x5d, 0xd9, 0xfd, 0x87, 0x37, 0x19, 0x7c, 0xc5, + 0xa1, 0x57, 0x05, 0x64, 0x01, 0xea, 0x1e, 0x9b, 0x28, 0x6a, 0x87, 0xb9, 0xe7, 0xe0, 0x9f, 0xbe, + 0x39, 0x50, 0x6e, 0xef, 0x9d, 0x8b, 0x37, 0x3e, 0xfe, 0xd5, 0xc5, 0xa1, 0x8f, 0x9f, 0x5f, 0x14, + 0x7e, 0xfe, 0xfc, 0xa2, 0xf0, 0xcb, 0xe7, 0x17, 0x85, 0x3f, 0x7a, 0x7e, 0x51, 0xf8, 0xd7, 0xbf, + 0xbe, 0x38, 0xf4, 0xf3, 0x5f, 0x5f, 0x1c, 0xfa, 0xe5, 0xaf, 0x2f, 0x0e, 0xbd, 0x37, 0xca, 0xc5, + 0x6c, 0x8d, 0xd0, 0xef, 0x5e, 0xdf, 0xf9, 0xdb, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x74, 0x5b, + 0x6f, 0x1a, 0x7c, 0x00, 0x00, } diff --git a/pkg/roachpb/api.proto b/pkg/roachpb/api.proto index 0876ed697c1c..6d19f14cbfab 100644 --- a/pkg/roachpb/api.proto +++ b/pkg/roachpb/api.proto @@ -657,13 +657,22 @@ message EndTxnRequest { // reliably for these transactions - a TransactionStatusError might be // returned instead if 1PC execution fails. bool require_1pc = 6 [(gogoproto.customname) = "Require1PC"]; + // DeprecatedCanCommitAtHigherTimestamp indicates that the batch this EndTxn + // is part of can be evaluated at a higher timestamp than the transaction's + // read timestamp. This is set by the client if the transaction has not + // performed any reads that must be refreshed prior to sending this current + // batch. When set, it allows the server to handle pushes and write too old + // conditions locally. + // TODO(nvanbenschoten): remove this in favor of can_forward_read_timestamp + // in v21.1. The flag is not read in v20.2. + bool deprecated_can_commit_at_higher_timestamp = 8; // True to indicate that lock spans should be resolved with poison=true. // This is used when the transaction is being aborted independently of the // main thread of client operation, as in the case of an asynchronous abort // from the TxnCoordSender on a failed heartbeat. It should only be set to // true when commit=false. bool poison = 9; - reserved 7, 8; + reserved 7; } // An EndTxnResponse is the return value from the EndTxn() method. The final @@ -2015,6 +2024,10 @@ message Header { // has not performed any reads that must be refreshed prior to sending this // current batch. When set, it allows the server to handle pushes and write // too old conditions locally. + // + // NOTE: this flag is a generalization of EndTxn.CanCommitAtHigherTimestamp. + // That flag should be deprecated in favor of this one. + // TODO(nvanbenschoten): perform this migration. bool can_forward_read_timestamp = 16; reserved 7, 12, 14; } diff --git a/pkg/server/serverpb/status.pb.go b/pkg/server/serverpb/status.pb.go index 82d0d5866f7d..ca36a0dd2540 100644 --- a/pkg/server/serverpb/status.pb.go +++ b/pkg/server/serverpb/status.pb.go @@ -65,7 +65,7 @@ func (x StacksType) String() string { return proto.EnumName(StacksType_name, int32(x)) } func (StacksType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{0} + return fileDescriptor_status_0225a3e6e509791f, []int{0} } // Represents the type of file. @@ -92,7 +92,7 @@ func (x FileType) String() string { return proto.EnumName(FileType_name, int32(x)) } func (FileType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{1} + return fileDescriptor_status_0225a3e6e509791f, []int{1} } // We use an enum to allow reporting of client certs and potential others (eg: @@ -129,7 +129,7 @@ func (x CertificateDetails_CertificateType) String() string { return proto.EnumName(CertificateDetails_CertificateType_name, int32(x)) } func (CertificateDetails_CertificateType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{1, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{1, 0} } type ProfileRequest_Type int32 @@ -152,7 +152,7 @@ func (x ProfileRequest_Type) String() string { return proto.EnumName(ProfileRequest_Type_name, int32(x)) } func (ProfileRequest_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{37, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{37, 0} } // Enum for phase of execution. @@ -176,7 +176,7 @@ func (x ActiveQuery_Phase) String() string { return proto.EnumName(ActiveQuery_Phase_name, int32(x)) } func (ActiveQuery_Phase) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{45, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{45, 0} } type CertificatesRequest struct { @@ -189,7 +189,7 @@ func (m *CertificatesRequest) Reset() { *m = CertificatesRequest{} } func (m *CertificatesRequest) String() string { return proto.CompactTextString(m) } func (*CertificatesRequest) ProtoMessage() {} func (*CertificatesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{0} + return fileDescriptor_status_0225a3e6e509791f, []int{0} } func (m *CertificatesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -228,7 +228,7 @@ func (m *CertificateDetails) Reset() { *m = CertificateDetails{} } func (m *CertificateDetails) String() string { return proto.CompactTextString(m) } func (*CertificateDetails) ProtoMessage() {} func (*CertificateDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{1} + return fileDescriptor_status_0225a3e6e509791f, []int{1} } func (m *CertificateDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -269,7 +269,7 @@ func (m *CertificateDetails_Fields) Reset() { *m = CertificateDetails_Fi func (m *CertificateDetails_Fields) String() string { return proto.CompactTextString(m) } func (*CertificateDetails_Fields) ProtoMessage() {} func (*CertificateDetails_Fields) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{1, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{1, 0} } func (m *CertificateDetails_Fields) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -302,7 +302,7 @@ func (m *CertificatesResponse) Reset() { *m = CertificatesResponse{} } func (m *CertificatesResponse) String() string { return proto.CompactTextString(m) } func (*CertificatesResponse) ProtoMessage() {} func (*CertificatesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{2} + return fileDescriptor_status_0225a3e6e509791f, []int{2} } func (m *CertificatesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -339,7 +339,7 @@ func (m *DetailsRequest) Reset() { *m = DetailsRequest{} } func (m *DetailsRequest) String() string { return proto.CompactTextString(m) } func (*DetailsRequest) ProtoMessage() {} func (*DetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{3} + return fileDescriptor_status_0225a3e6e509791f, []int{3} } func (m *DetailsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -376,7 +376,7 @@ func (m *SystemInfo) Reset() { *m = SystemInfo{} } func (m *SystemInfo) String() string { return proto.CompactTextString(m) } func (*SystemInfo) ProtoMessage() {} func (*SystemInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{4} + return fileDescriptor_status_0225a3e6e509791f, []int{4} } func (m *SystemInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -413,7 +413,7 @@ func (m *DetailsResponse) Reset() { *m = DetailsResponse{} } func (m *DetailsResponse) String() string { return proto.CompactTextString(m) } func (*DetailsResponse) ProtoMessage() {} func (*DetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{5} + return fileDescriptor_status_0225a3e6e509791f, []int{5} } func (m *DetailsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -445,7 +445,7 @@ func (m *NodesRequest) Reset() { *m = NodesRequest{} } func (m *NodesRequest) String() string { return proto.CompactTextString(m) } func (*NodesRequest) ProtoMessage() {} func (*NodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{6} + return fileDescriptor_status_0225a3e6e509791f, []int{6} } func (m *NodesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -479,7 +479,7 @@ func (m *NodesResponse) Reset() { *m = NodesResponse{} } func (m *NodesResponse) String() string { return proto.CompactTextString(m) } func (*NodesResponse) ProtoMessage() {} func (*NodesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{7} + return fileDescriptor_status_0225a3e6e509791f, []int{7} } func (m *NodesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -514,7 +514,7 @@ func (m *NodeRequest) Reset() { *m = NodeRequest{} } func (m *NodeRequest) String() string { return proto.CompactTextString(m) } func (*NodeRequest) ProtoMessage() {} func (*NodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{8} + return fileDescriptor_status_0225a3e6e509791f, []int{8} } func (m *NodeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -559,7 +559,7 @@ func (m *RaftState) Reset() { *m = RaftState{} } func (m *RaftState) String() string { return proto.CompactTextString(m) } func (*RaftState) ProtoMessage() {} func (*RaftState) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{9} + return fileDescriptor_status_0225a3e6e509791f, []int{9} } func (m *RaftState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -596,7 +596,7 @@ func (m *RaftState_Progress) Reset() { *m = RaftState_Progress{} } func (m *RaftState_Progress) String() string { return proto.CompactTextString(m) } func (*RaftState_Progress) ProtoMessage() {} func (*RaftState_Progress) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{9, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{9, 0} } func (m *RaftState_Progress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -641,7 +641,7 @@ func (m *RangeProblems) Reset() { *m = RangeProblems{} } func (m *RangeProblems) String() string { return proto.CompactTextString(m) } func (*RangeProblems) ProtoMessage() {} func (*RangeProblems) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{10} + return fileDescriptor_status_0225a3e6e509791f, []int{10} } func (m *RangeProblems) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -677,7 +677,7 @@ func (m *RangeStatistics) Reset() { *m = RangeStatistics{} } func (m *RangeStatistics) String() string { return proto.CompactTextString(m) } func (*RangeStatistics) ProtoMessage() {} func (*RangeStatistics) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{11} + return fileDescriptor_status_0225a3e6e509791f, []int{11} } func (m *RangeStatistics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -711,7 +711,7 @@ func (m *PrettySpan) Reset() { *m = PrettySpan{} } func (m *PrettySpan) String() string { return proto.CompactTextString(m) } func (*PrettySpan) ProtoMessage() {} func (*PrettySpan) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{12} + return fileDescriptor_status_0225a3e6e509791f, []int{12} } func (m *PrettySpan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -757,7 +757,7 @@ func (m *RangeInfo) Reset() { *m = RangeInfo{} } func (m *RangeInfo) String() string { return proto.CompactTextString(m) } func (*RangeInfo) ProtoMessage() {} func (*RangeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{13} + return fileDescriptor_status_0225a3e6e509791f, []int{13} } func (m *RangeInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -793,7 +793,7 @@ func (m *RangesRequest) Reset() { *m = RangesRequest{} } func (m *RangesRequest) String() string { return proto.CompactTextString(m) } func (*RangesRequest) ProtoMessage() {} func (*RangesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{14} + return fileDescriptor_status_0225a3e6e509791f, []int{14} } func (m *RangesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -826,7 +826,7 @@ func (m *RangesResponse) Reset() { *m = RangesResponse{} } func (m *RangesResponse) String() string { return proto.CompactTextString(m) } func (*RangesResponse) ProtoMessage() {} func (*RangesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{15} + return fileDescriptor_status_0225a3e6e509791f, []int{15} } func (m *RangesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -861,7 +861,7 @@ func (m *GossipRequest) Reset() { *m = GossipRequest{} } func (m *GossipRequest) String() string { return proto.CompactTextString(m) } func (*GossipRequest) ProtoMessage() {} func (*GossipRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{16} + return fileDescriptor_status_0225a3e6e509791f, []int{16} } func (m *GossipRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -896,7 +896,7 @@ func (m *EngineStatsInfo) Reset() { *m = EngineStatsInfo{} } func (m *EngineStatsInfo) String() string { return proto.CompactTextString(m) } func (*EngineStatsInfo) ProtoMessage() {} func (*EngineStatsInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{17} + return fileDescriptor_status_0225a3e6e509791f, []int{17} } func (m *EngineStatsInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -931,7 +931,7 @@ func (m *EngineStatsRequest) Reset() { *m = EngineStatsRequest{} } func (m *EngineStatsRequest) String() string { return proto.CompactTextString(m) } func (*EngineStatsRequest) ProtoMessage() {} func (*EngineStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{18} + return fileDescriptor_status_0225a3e6e509791f, []int{18} } func (m *EngineStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -964,7 +964,7 @@ func (m *EngineStatsResponse) Reset() { *m = EngineStatsResponse{} } func (m *EngineStatsResponse) String() string { return proto.CompactTextString(m) } func (*EngineStatsResponse) ProtoMessage() {} func (*EngineStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{19} + return fileDescriptor_status_0225a3e6e509791f, []int{19} } func (m *EngineStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -998,7 +998,7 @@ func (m *TraceEvent) Reset() { *m = TraceEvent{} } func (m *TraceEvent) String() string { return proto.CompactTextString(m) } func (*TraceEvent) ProtoMessage() {} func (*TraceEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{20} + return fileDescriptor_status_0225a3e6e509791f, []int{20} } func (m *TraceEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1032,7 +1032,7 @@ func (m *AllocatorDryRun) Reset() { *m = AllocatorDryRun{} } func (m *AllocatorDryRun) String() string { return proto.CompactTextString(m) } func (*AllocatorDryRun) ProtoMessage() {} func (*AllocatorDryRun) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{21} + return fileDescriptor_status_0225a3e6e509791f, []int{21} } func (m *AllocatorDryRun) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1065,7 +1065,7 @@ func (m *AllocatorRangeRequest) Reset() { *m = AllocatorRangeRequest{} } func (m *AllocatorRangeRequest) String() string { return proto.CompactTextString(m) } func (*AllocatorRangeRequest) ProtoMessage() {} func (*AllocatorRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{22} + return fileDescriptor_status_0225a3e6e509791f, []int{22} } func (m *AllocatorRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1101,7 +1101,7 @@ func (m *AllocatorRangeResponse) Reset() { *m = AllocatorRangeResponse{} func (m *AllocatorRangeResponse) String() string { return proto.CompactTextString(m) } func (*AllocatorRangeResponse) ProtoMessage() {} func (*AllocatorRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{23} + return fileDescriptor_status_0225a3e6e509791f, []int{23} } func (m *AllocatorRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1135,7 +1135,7 @@ func (m *AllocatorRequest) Reset() { *m = AllocatorRequest{} } func (m *AllocatorRequest) String() string { return proto.CompactTextString(m) } func (*AllocatorRequest) ProtoMessage() {} func (*AllocatorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{24} + return fileDescriptor_status_0225a3e6e509791f, []int{24} } func (m *AllocatorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1168,7 +1168,7 @@ func (m *AllocatorResponse) Reset() { *m = AllocatorResponse{} } func (m *AllocatorResponse) String() string { return proto.CompactTextString(m) } func (*AllocatorResponse) ProtoMessage() {} func (*AllocatorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{25} + return fileDescriptor_status_0225a3e6e509791f, []int{25} } func (m *AllocatorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1201,7 +1201,7 @@ func (m *JSONResponse) Reset() { *m = JSONResponse{} } func (m *JSONResponse) String() string { return proto.CompactTextString(m) } func (*JSONResponse) ProtoMessage() {} func (*JSONResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{26} + return fileDescriptor_status_0225a3e6e509791f, []int{26} } func (m *JSONResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1237,7 +1237,7 @@ func (m *ResponseError) Reset() { *m = ResponseError{} } func (m *ResponseError) String() string { return proto.CompactTextString(m) } func (*ResponseError) ProtoMessage() {} func (*ResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{27} + return fileDescriptor_status_0225a3e6e509791f, []int{27} } func (m *ResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1289,7 +1289,7 @@ func (m *LogsRequest) Reset() { *m = LogsRequest{} } func (m *LogsRequest) String() string { return proto.CompactTextString(m) } func (*LogsRequest) ProtoMessage() {} func (*LogsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{28} + return fileDescriptor_status_0225a3e6e509791f, []int{28} } func (m *LogsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1322,7 +1322,7 @@ func (m *LogEntriesResponse) Reset() { *m = LogEntriesResponse{} } func (m *LogEntriesResponse) String() string { return proto.CompactTextString(m) } func (*LogEntriesResponse) ProtoMessage() {} func (*LogEntriesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{29} + return fileDescriptor_status_0225a3e6e509791f, []int{29} } func (m *LogEntriesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1357,7 +1357,7 @@ func (m *LogFilesListRequest) Reset() { *m = LogFilesListRequest{} } func (m *LogFilesListRequest) String() string { return proto.CompactTextString(m) } func (*LogFilesListRequest) ProtoMessage() {} func (*LogFilesListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{30} + return fileDescriptor_status_0225a3e6e509791f, []int{30} } func (m *LogFilesListRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1390,7 +1390,7 @@ func (m *LogFilesListResponse) Reset() { *m = LogFilesListResponse{} } func (m *LogFilesListResponse) String() string { return proto.CompactTextString(m) } func (*LogFilesListResponse) ProtoMessage() {} func (*LogFilesListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{31} + return fileDescriptor_status_0225a3e6e509791f, []int{31} } func (m *LogFilesListResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1438,7 +1438,7 @@ func (m *LogFileRequest) Reset() { *m = LogFileRequest{} } func (m *LogFileRequest) String() string { return proto.CompactTextString(m) } func (*LogFileRequest) ProtoMessage() {} func (*LogFileRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{32} + return fileDescriptor_status_0225a3e6e509791f, []int{32} } func (m *LogFileRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1474,7 +1474,7 @@ func (m *StacksRequest) Reset() { *m = StacksRequest{} } func (m *StacksRequest) String() string { return proto.CompactTextString(m) } func (*StacksRequest) ProtoMessage() {} func (*StacksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{33} + return fileDescriptor_status_0225a3e6e509791f, []int{33} } func (m *StacksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1510,7 +1510,7 @@ func (m *File) Reset() { *m = File{} } func (m *File) String() string { return proto.CompactTextString(m) } func (*File) ProtoMessage() {} func (*File) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{34} + return fileDescriptor_status_0225a3e6e509791f, []int{34} } func (m *File) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1554,7 +1554,7 @@ func (m *GetFilesRequest) Reset() { *m = GetFilesRequest{} } func (m *GetFilesRequest) String() string { return proto.CompactTextString(m) } func (*GetFilesRequest) ProtoMessage() {} func (*GetFilesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{35} + return fileDescriptor_status_0225a3e6e509791f, []int{35} } func (m *GetFilesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1587,7 +1587,7 @@ func (m *GetFilesResponse) Reset() { *m = GetFilesResponse{} } func (m *GetFilesResponse) String() string { return proto.CompactTextString(m) } func (*GetFilesResponse) ProtoMessage() {} func (*GetFilesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{36} + return fileDescriptor_status_0225a3e6e509791f, []int{36} } func (m *GetFilesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1625,7 +1625,7 @@ func (m *ProfileRequest) Reset() { *m = ProfileRequest{} } func (m *ProfileRequest) String() string { return proto.CompactTextString(m) } func (*ProfileRequest) ProtoMessage() {} func (*ProfileRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{37} + return fileDescriptor_status_0225a3e6e509791f, []int{37} } func (m *ProfileRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1660,7 +1660,7 @@ func (m *MetricsRequest) Reset() { *m = MetricsRequest{} } func (m *MetricsRequest) String() string { return proto.CompactTextString(m) } func (*MetricsRequest) ProtoMessage() {} func (*MetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{38} + return fileDescriptor_status_0225a3e6e509791f, []int{38} } func (m *MetricsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1694,7 +1694,7 @@ func (m *RaftRangeNode) Reset() { *m = RaftRangeNode{} } func (m *RaftRangeNode) String() string { return proto.CompactTextString(m) } func (*RaftRangeNode) ProtoMessage() {} func (*RaftRangeNode) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{39} + return fileDescriptor_status_0225a3e6e509791f, []int{39} } func (m *RaftRangeNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1727,7 +1727,7 @@ func (m *RaftRangeError) Reset() { *m = RaftRangeError{} } func (m *RaftRangeError) String() string { return proto.CompactTextString(m) } func (*RaftRangeError) ProtoMessage() {} func (*RaftRangeError) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{40} + return fileDescriptor_status_0225a3e6e509791f, []int{40} } func (m *RaftRangeError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1762,7 +1762,7 @@ func (m *RaftRangeStatus) Reset() { *m = RaftRangeStatus{} } func (m *RaftRangeStatus) String() string { return proto.CompactTextString(m) } func (*RaftRangeStatus) ProtoMessage() {} func (*RaftRangeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{41} + return fileDescriptor_status_0225a3e6e509791f, []int{41} } func (m *RaftRangeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1795,7 +1795,7 @@ func (m *RaftDebugRequest) Reset() { *m = RaftDebugRequest{} } func (m *RaftDebugRequest) String() string { return proto.CompactTextString(m) } func (*RaftDebugRequest) ProtoMessage() {} func (*RaftDebugRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{42} + return fileDescriptor_status_0225a3e6e509791f, []int{42} } func (m *RaftDebugRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1829,7 +1829,7 @@ func (m *RaftDebugResponse) Reset() { *m = RaftDebugResponse{} } func (m *RaftDebugResponse) String() string { return proto.CompactTextString(m) } func (*RaftDebugResponse) ProtoMessage() {} func (*RaftDebugResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{43} + return fileDescriptor_status_0225a3e6e509791f, []int{43} } func (m *RaftDebugResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1868,7 +1868,7 @@ func (m *TxnInfo) Reset() { *m = TxnInfo{} } func (m *TxnInfo) String() string { return proto.CompactTextString(m) } func (*TxnInfo) ProtoMessage() {} func (*TxnInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{44} + return fileDescriptor_status_0225a3e6e509791f, []int{44} } func (m *TxnInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1914,7 +1914,7 @@ func (m *ActiveQuery) Reset() { *m = ActiveQuery{} } func (m *ActiveQuery) String() string { return proto.CompactTextString(m) } func (*ActiveQuery) ProtoMessage() {} func (*ActiveQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{45} + return fileDescriptor_status_0225a3e6e509791f, []int{45} } func (m *ActiveQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1949,7 +1949,7 @@ func (m *ListSessionsRequest) Reset() { *m = ListSessionsRequest{} } func (m *ListSessionsRequest) String() string { return proto.CompactTextString(m) } func (*ListSessionsRequest) ProtoMessage() {} func (*ListSessionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{46} + return fileDescriptor_status_0225a3e6e509791f, []int{46} } func (m *ListSessionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2008,7 +2008,7 @@ func (m *Session) Reset() { *m = Session{} } func (m *Session) String() string { return proto.CompactTextString(m) } func (*Session) ProtoMessage() {} func (*Session) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{47} + return fileDescriptor_status_0225a3e6e509791f, []int{47} } func (m *Session) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2045,7 +2045,7 @@ func (m *ListSessionsError) Reset() { *m = ListSessionsError{} } func (m *ListSessionsError) String() string { return proto.CompactTextString(m) } func (*ListSessionsError) ProtoMessage() {} func (*ListSessionsError) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{48} + return fileDescriptor_status_0225a3e6e509791f, []int{48} } func (m *ListSessionsError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2082,7 +2082,7 @@ func (m *ListSessionsResponse) Reset() { *m = ListSessionsResponse{} } func (m *ListSessionsResponse) String() string { return proto.CompactTextString(m) } func (*ListSessionsResponse) ProtoMessage() {} func (*ListSessionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{49} + return fileDescriptor_status_0225a3e6e509791f, []int{49} } func (m *ListSessionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2127,7 +2127,7 @@ func (m *CancelQueryRequest) Reset() { *m = CancelQueryRequest{} } func (m *CancelQueryRequest) String() string { return proto.CompactTextString(m) } func (*CancelQueryRequest) ProtoMessage() {} func (*CancelQueryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{50} + return fileDescriptor_status_0225a3e6e509791f, []int{50} } func (m *CancelQueryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2164,7 +2164,7 @@ func (m *CancelQueryResponse) Reset() { *m = CancelQueryResponse{} } func (m *CancelQueryResponse) String() string { return proto.CompactTextString(m) } func (*CancelQueryResponse) ProtoMessage() {} func (*CancelQueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{51} + return fileDescriptor_status_0225a3e6e509791f, []int{51} } func (m *CancelQueryResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2204,7 +2204,7 @@ func (m *CancelSessionRequest) Reset() { *m = CancelSessionRequest{} } func (m *CancelSessionRequest) String() string { return proto.CompactTextString(m) } func (*CancelSessionRequest) ProtoMessage() {} func (*CancelSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{52} + return fileDescriptor_status_0225a3e6e509791f, []int{52} } func (m *CancelSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2238,7 +2238,7 @@ func (m *CancelSessionResponse) Reset() { *m = CancelSessionResponse{} } func (m *CancelSessionResponse) String() string { return proto.CompactTextString(m) } func (*CancelSessionResponse) ProtoMessage() {} func (*CancelSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{53} + return fileDescriptor_status_0225a3e6e509791f, []int{53} } func (m *CancelSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2273,7 +2273,7 @@ func (m *SpanStatsRequest) Reset() { *m = SpanStatsRequest{} } func (m *SpanStatsRequest) String() string { return proto.CompactTextString(m) } func (*SpanStatsRequest) ProtoMessage() {} func (*SpanStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{54} + return fileDescriptor_status_0225a3e6e509791f, []int{54} } func (m *SpanStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2308,7 +2308,7 @@ func (m *SpanStatsResponse) Reset() { *m = SpanStatsResponse{} } func (m *SpanStatsResponse) String() string { return proto.CompactTextString(m) } func (*SpanStatsResponse) ProtoMessage() {} func (*SpanStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{55} + return fileDescriptor_status_0225a3e6e509791f, []int{55} } func (m *SpanStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2342,7 +2342,7 @@ func (m *ProblemRangesRequest) Reset() { *m = ProblemRangesRequest{} } func (m *ProblemRangesRequest) String() string { return proto.CompactTextString(m) } func (*ProblemRangesRequest) ProtoMessage() {} func (*ProblemRangesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{56} + return fileDescriptor_status_0225a3e6e509791f, []int{56} } func (m *ProblemRangesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2377,7 +2377,7 @@ func (m *ProblemRangesResponse) Reset() { *m = ProblemRangesResponse{} } func (m *ProblemRangesResponse) String() string { return proto.CompactTextString(m) } func (*ProblemRangesResponse) ProtoMessage() {} func (*ProblemRangesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{57} + return fileDescriptor_status_0225a3e6e509791f, []int{57} } func (m *ProblemRangesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2418,7 +2418,7 @@ func (m *ProblemRangesResponse_NodeProblems) Reset() { *m = ProblemRange func (m *ProblemRangesResponse_NodeProblems) String() string { return proto.CompactTextString(m) } func (*ProblemRangesResponse_NodeProblems) ProtoMessage() {} func (*ProblemRangesResponse_NodeProblems) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{57, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{57, 0} } func (m *ProblemRangesResponse_NodeProblems) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2443,8 +2443,18 @@ func (m *ProblemRangesResponse_NodeProblems) XXX_DiscardUnknown() { var xxx_messageInfo_ProblemRangesResponse_NodeProblems proto.InternalMessageInfo +// HotRangesRequest queries one or more cluster nodes for a list +// of ranges currently considered “hot” by the node(s). +// +// The server responds with a HotRangesResponse payload. type HotRangesRequest struct { - // If left empty, hot ranges for all nodes/stores will be returned. + // NodeID indicates which node to query for a hot range report. + // It is posssible to populate any node ID; if the node receiving + // the request is not the target node, it will forward the + // request to the target node. + // + // If left empty, the request is forwarded to every node + // in the cluster. NodeID string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` } @@ -2452,7 +2462,7 @@ func (m *HotRangesRequest) Reset() { *m = HotRangesRequest{} } func (m *HotRangesRequest) String() string { return proto.CompactTextString(m) } func (*HotRangesRequest) ProtoMessage() {} func (*HotRangesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{58} + return fileDescriptor_status_0225a3e6e509791f, []int{58} } func (m *HotRangesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2477,9 +2487,14 @@ func (m *HotRangesRequest) XXX_DiscardUnknown() { var xxx_messageInfo_HotRangesRequest proto.InternalMessageInfo +// HotRangesResponse is the payload produced in response +// to a HotRangesRequest. type HotRangesResponse struct { - // NodeID is the node that submitted all the requests. - NodeID github_com_cockroachdb_cockroach_pkg_roachpb.NodeID `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3,casttype=github.com/cockroachdb/cockroach/pkg/roachpb.NodeID" json:"node_id,omitempty"` + // NodeID is the node that received the HotRangesRequest and + // forwarded requests to the selected target node(s). + NodeID github_com_cockroachdb_cockroach_pkg_roachpb.NodeID `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3,casttype=github.com/cockroachdb/cockroach/pkg/roachpb.NodeID" json:"node_id,omitempty"` + // HotRangesByNodeID contains a hot range report for each selected + // target node ID in the HotRangesRequest. HotRangesByNodeID map[github_com_cockroachdb_cockroach_pkg_roachpb.NodeID]HotRangesResponse_NodeResponse `protobuf:"bytes,2,rep,name=hot_ranges_by_node_id,json=hotRangesByNodeId,proto3,castkey=github.com/cockroachdb/cockroach/pkg/roachpb.NodeID" json:"hot_ranges_by_node_id" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } @@ -2487,7 +2502,7 @@ func (m *HotRangesResponse) Reset() { *m = HotRangesResponse{} } func (m *HotRangesResponse) String() string { return proto.CompactTextString(m) } func (*HotRangesResponse) ProtoMessage() {} func (*HotRangesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{59} + return fileDescriptor_status_0225a3e6e509791f, []int{59} } func (m *HotRangesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2512,16 +2527,26 @@ func (m *HotRangesResponse) XXX_DiscardUnknown() { var xxx_messageInfo_HotRangesResponse proto.InternalMessageInfo +// HotRange is a hot range report for a single store on one of the +// target node(s) selected in a HotRangesRequest. type HotRangesResponse_HotRange struct { - Desc roachpb.RangeDescriptor `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc"` - QueriesPerSecond float64 `protobuf:"fixed64,2,opt,name=queries_per_second,json=queriesPerSecond,proto3" json:"queries_per_second,omitempty"` + // Desc is the descriptor of the range for which the report + // was produced. + // + // Note: this field is generally RESERVED and will likely be removed + // or replaced in a later version. + // See: https://github.com/cockroachdb/cockroach/issues/53212 + Desc roachpb.RangeDescriptor `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc"` + // QueriesPerSecond is the recent number of queries per second + // on this range. + QueriesPerSecond float64 `protobuf:"fixed64,2,opt,name=queries_per_second,json=queriesPerSecond,proto3" json:"queries_per_second,omitempty"` } func (m *HotRangesResponse_HotRange) Reset() { *m = HotRangesResponse_HotRange{} } func (m *HotRangesResponse_HotRange) String() string { return proto.CompactTextString(m) } func (*HotRangesResponse_HotRange) ProtoMessage() {} func (*HotRangesResponse_HotRange) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{59, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{59, 0} } func (m *HotRangesResponse_HotRange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2546,16 +2571,22 @@ func (m *HotRangesResponse_HotRange) XXX_DiscardUnknown() { var xxx_messageInfo_HotRangesResponse_HotRange proto.InternalMessageInfo +// StoreResponse contains the part of a hot ranges report that +// pertains to a single store on a target node. type HotRangesResponse_StoreResponse struct { - StoreID github_com_cockroachdb_cockroach_pkg_roachpb.StoreID `protobuf:"varint,1,opt,name=store_id,json=storeId,proto3,casttype=github.com/cockroachdb/cockroach/pkg/roachpb.StoreID" json:"store_id,omitempty"` - HotRanges []HotRangesResponse_HotRange `protobuf:"bytes,2,rep,name=hot_ranges,json=hotRanges,proto3" json:"hot_ranges"` + // StoreID identifies the store for which the report was + // produced. + StoreID github_com_cockroachdb_cockroach_pkg_roachpb.StoreID `protobuf:"varint,1,opt,name=store_id,json=storeId,proto3,casttype=github.com/cockroachdb/cockroach/pkg/roachpb.StoreID" json:"store_id,omitempty"` + // HotRanges is the hot ranges report for this store + // on the target node. + HotRanges []HotRangesResponse_HotRange `protobuf:"bytes,2,rep,name=hot_ranges,json=hotRanges,proto3" json:"hot_ranges"` } func (m *HotRangesResponse_StoreResponse) Reset() { *m = HotRangesResponse_StoreResponse{} } func (m *HotRangesResponse_StoreResponse) String() string { return proto.CompactTextString(m) } func (*HotRangesResponse_StoreResponse) ProtoMessage() {} func (*HotRangesResponse_StoreResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{59, 1} + return fileDescriptor_status_0225a3e6e509791f, []int{59, 1} } func (m *HotRangesResponse_StoreResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2580,16 +2611,24 @@ func (m *HotRangesResponse_StoreResponse) XXX_DiscardUnknown() { var xxx_messageInfo_HotRangesResponse_StoreResponse proto.InternalMessageInfo +// NodeResponse is a hot range report for a single target node. type HotRangesResponse_NodeResponse struct { - ErrorMessage string `protobuf:"bytes,1,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - Stores []*HotRangesResponse_StoreResponse `protobuf:"bytes,2,rep,name=stores,proto3" json:"stores,omitempty"` + // ErrorMessage is set to a non-empty string if this target + // node was unable to produce a hot range report. + // + // The contents of this string indicates the cause of the failure. + ErrorMessage string `protobuf:"bytes,1,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + // Stores contains the hot ranges report if no error was encountered. + // There is one part to the report for each store in the + // target node. + Stores []*HotRangesResponse_StoreResponse `protobuf:"bytes,2,rep,name=stores,proto3" json:"stores,omitempty"` } func (m *HotRangesResponse_NodeResponse) Reset() { *m = HotRangesResponse_NodeResponse{} } func (m *HotRangesResponse_NodeResponse) String() string { return proto.CompactTextString(m) } func (*HotRangesResponse_NodeResponse) ProtoMessage() {} func (*HotRangesResponse_NodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{59, 2} + return fileDescriptor_status_0225a3e6e509791f, []int{59, 2} } func (m *HotRangesResponse_NodeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2622,7 +2661,7 @@ func (m *RangeRequest) Reset() { *m = RangeRequest{} } func (m *RangeRequest) String() string { return proto.CompactTextString(m) } func (*RangeRequest) ProtoMessage() {} func (*RangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{60} + return fileDescriptor_status_0225a3e6e509791f, []int{60} } func (m *RangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2658,7 +2697,7 @@ func (m *RangeResponse) Reset() { *m = RangeResponse{} } func (m *RangeResponse) String() string { return proto.CompactTextString(m) } func (*RangeResponse) ProtoMessage() {} func (*RangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{61} + return fileDescriptor_status_0225a3e6e509791f, []int{61} } func (m *RangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2693,7 +2732,7 @@ func (m *RangeResponse_NodeResponse) Reset() { *m = RangeResponse_NodeRe func (m *RangeResponse_NodeResponse) String() string { return proto.CompactTextString(m) } func (*RangeResponse_NodeResponse) ProtoMessage() {} func (*RangeResponse_NodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{61, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{61, 0} } func (m *RangeResponse_NodeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2729,7 +2768,7 @@ func (m *DiagnosticsRequest) Reset() { *m = DiagnosticsRequest{} } func (m *DiagnosticsRequest) String() string { return proto.CompactTextString(m) } func (*DiagnosticsRequest) ProtoMessage() {} func (*DiagnosticsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{62} + return fileDescriptor_status_0225a3e6e509791f, []int{62} } func (m *DiagnosticsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2764,7 +2803,7 @@ func (m *StoresRequest) Reset() { *m = StoresRequest{} } func (m *StoresRequest) String() string { return proto.CompactTextString(m) } func (*StoresRequest) ProtoMessage() {} func (*StoresRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{63} + return fileDescriptor_status_0225a3e6e509791f, []int{63} } func (m *StoresRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2807,7 +2846,7 @@ func (m *StoreDetails) Reset() { *m = StoreDetails{} } func (m *StoreDetails) String() string { return proto.CompactTextString(m) } func (*StoreDetails) ProtoMessage() {} func (*StoreDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{64} + return fileDescriptor_status_0225a3e6e509791f, []int{64} } func (m *StoreDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2840,7 +2879,7 @@ func (m *StoresResponse) Reset() { *m = StoresResponse{} } func (m *StoresResponse) String() string { return proto.CompactTextString(m) } func (*StoresResponse) ProtoMessage() {} func (*StoresResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{65} + return fileDescriptor_status_0225a3e6e509791f, []int{65} } func (m *StoresResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2873,7 +2912,7 @@ func (m *StatementsRequest) Reset() { *m = StatementsRequest{} } func (m *StatementsRequest) String() string { return proto.CompactTextString(m) } func (*StatementsRequest) ProtoMessage() {} func (*StatementsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{66} + return fileDescriptor_status_0225a3e6e509791f, []int{66} } func (m *StatementsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2914,7 +2953,7 @@ func (m *StatementsResponse) Reset() { *m = StatementsResponse{} } func (m *StatementsResponse) String() string { return proto.CompactTextString(m) } func (*StatementsResponse) ProtoMessage() {} func (*StatementsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{67} + return fileDescriptor_status_0225a3e6e509791f, []int{67} } func (m *StatementsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2952,7 +2991,7 @@ func (m *StatementsResponse_ExtendedStatementStatisticsKey) String() string { } func (*StatementsResponse_ExtendedStatementStatisticsKey) ProtoMessage() {} func (*StatementsResponse_ExtendedStatementStatisticsKey) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{67, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{67, 0} } func (m *StatementsResponse_ExtendedStatementStatisticsKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2990,7 +3029,7 @@ func (m *StatementsResponse_CollectedStatementStatistics) String() string { } func (*StatementsResponse_CollectedStatementStatistics) ProtoMessage() {} func (*StatementsResponse_CollectedStatementStatistics) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{67, 1} + return fileDescriptor_status_0225a3e6e509791f, []int{67, 1} } func (m *StatementsResponse_CollectedStatementStatistics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3028,7 +3067,7 @@ func (m *StatementsResponse_ExtendedCollectedTransactionStatistics) String() str } func (*StatementsResponse_ExtendedCollectedTransactionStatistics) ProtoMessage() {} func (*StatementsResponse_ExtendedCollectedTransactionStatistics) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{67, 2} + return fileDescriptor_status_0225a3e6e509791f, []int{67, 2} } func (m *StatementsResponse_ExtendedCollectedTransactionStatistics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3065,7 +3104,7 @@ func (m *StatementDiagnosticsReport) Reset() { *m = StatementDiagnostics func (m *StatementDiagnosticsReport) String() string { return proto.CompactTextString(m) } func (*StatementDiagnosticsReport) ProtoMessage() {} func (*StatementDiagnosticsReport) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{68} + return fileDescriptor_status_0225a3e6e509791f, []int{68} } func (m *StatementDiagnosticsReport) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3100,7 +3139,7 @@ func (m *CreateStatementDiagnosticsReportRequest) Reset() { func (m *CreateStatementDiagnosticsReportRequest) String() string { return proto.CompactTextString(m) } func (*CreateStatementDiagnosticsReportRequest) ProtoMessage() {} func (*CreateStatementDiagnosticsReportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{69} + return fileDescriptor_status_0225a3e6e509791f, []int{69} } func (m *CreateStatementDiagnosticsReportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3135,7 +3174,7 @@ func (m *CreateStatementDiagnosticsReportResponse) Reset() { func (m *CreateStatementDiagnosticsReportResponse) String() string { return proto.CompactTextString(m) } func (*CreateStatementDiagnosticsReportResponse) ProtoMessage() {} func (*CreateStatementDiagnosticsReportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{70} + return fileDescriptor_status_0225a3e6e509791f, []int{70} } func (m *CreateStatementDiagnosticsReportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3167,7 +3206,7 @@ func (m *StatementDiagnosticsReportsRequest) Reset() { *m = StatementDia func (m *StatementDiagnosticsReportsRequest) String() string { return proto.CompactTextString(m) } func (*StatementDiagnosticsReportsRequest) ProtoMessage() {} func (*StatementDiagnosticsReportsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{71} + return fileDescriptor_status_0225a3e6e509791f, []int{71} } func (m *StatementDiagnosticsReportsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3200,7 +3239,7 @@ func (m *StatementDiagnosticsReportsResponse) Reset() { *m = StatementDi func (m *StatementDiagnosticsReportsResponse) String() string { return proto.CompactTextString(m) } func (*StatementDiagnosticsReportsResponse) ProtoMessage() {} func (*StatementDiagnosticsReportsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{72} + return fileDescriptor_status_0225a3e6e509791f, []int{72} } func (m *StatementDiagnosticsReportsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3236,7 +3275,7 @@ func (m *StatementDiagnostics) Reset() { *m = StatementDiagnostics{} } func (m *StatementDiagnostics) String() string { return proto.CompactTextString(m) } func (*StatementDiagnostics) ProtoMessage() {} func (*StatementDiagnostics) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{73} + return fileDescriptor_status_0225a3e6e509791f, []int{73} } func (m *StatementDiagnostics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3269,7 +3308,7 @@ func (m *StatementDiagnosticsRequest) Reset() { *m = StatementDiagnostic func (m *StatementDiagnosticsRequest) String() string { return proto.CompactTextString(m) } func (*StatementDiagnosticsRequest) ProtoMessage() {} func (*StatementDiagnosticsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{74} + return fileDescriptor_status_0225a3e6e509791f, []int{74} } func (m *StatementDiagnosticsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3302,7 +3341,7 @@ func (m *StatementDiagnosticsResponse) Reset() { *m = StatementDiagnosti func (m *StatementDiagnosticsResponse) String() string { return proto.CompactTextString(m) } func (*StatementDiagnosticsResponse) ProtoMessage() {} func (*StatementDiagnosticsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{75} + return fileDescriptor_status_0225a3e6e509791f, []int{75} } func (m *StatementDiagnosticsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3335,7 +3374,7 @@ func (m *JobRegistryStatusRequest) Reset() { *m = JobRegistryStatusReque func (m *JobRegistryStatusRequest) String() string { return proto.CompactTextString(m) } func (*JobRegistryStatusRequest) ProtoMessage() {} func (*JobRegistryStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{76} + return fileDescriptor_status_0225a3e6e509791f, []int{76} } func (m *JobRegistryStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3369,7 +3408,7 @@ func (m *JobRegistryStatusResponse) Reset() { *m = JobRegistryStatusResp func (m *JobRegistryStatusResponse) String() string { return proto.CompactTextString(m) } func (*JobRegistryStatusResponse) ProtoMessage() {} func (*JobRegistryStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{77} + return fileDescriptor_status_0225a3e6e509791f, []int{77} } func (m *JobRegistryStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3402,7 +3441,7 @@ func (m *JobRegistryStatusResponse_Job) Reset() { *m = JobRegistryStatus func (m *JobRegistryStatusResponse_Job) String() string { return proto.CompactTextString(m) } func (*JobRegistryStatusResponse_Job) ProtoMessage() {} func (*JobRegistryStatusResponse_Job) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{77, 0} + return fileDescriptor_status_0225a3e6e509791f, []int{77, 0} } func (m *JobRegistryStatusResponse_Job) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3435,7 +3474,7 @@ func (m *JobStatusRequest) Reset() { *m = JobStatusRequest{} } func (m *JobStatusRequest) String() string { return proto.CompactTextString(m) } func (*JobStatusRequest) ProtoMessage() {} func (*JobStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{78} + return fileDescriptor_status_0225a3e6e509791f, []int{78} } func (m *JobStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3468,7 +3507,7 @@ func (m *JobStatusResponse) Reset() { *m = JobStatusResponse{} } func (m *JobStatusResponse) String() string { return proto.CompactTextString(m) } func (*JobStatusResponse) ProtoMessage() {} func (*JobStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_status_bcb064aca6987b84, []int{79} + return fileDescriptor_status_0225a3e6e509791f, []int{79} } func (m *JobStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -22006,10 +22045,10 @@ var ( ) func init() { - proto.RegisterFile("server/serverpb/status.proto", fileDescriptor_status_bcb064aca6987b84) + proto.RegisterFile("server/serverpb/status.proto", fileDescriptor_status_0225a3e6e509791f) } -var fileDescriptor_status_bcb064aca6987b84 = []byte{ +var fileDescriptor_status_0225a3e6e509791f = []byte{ // 5982 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0xdb, 0x6f, 0x1b, 0x49, 0x76, 0xb7, 0x9b, 0xa4, 0x28, 0xf2, 0x50, 0x17, 0xaa, 0x2c, 0xc9, 0x34, 0xed, 0x11, 0xbd, 0xed, diff --git a/pkg/server/serverpb/status.proto b/pkg/server/serverpb/status.proto index 87f6ffcf70de..b6c40f01a91b 100644 --- a/pkg/server/serverpb/status.proto +++ b/pkg/server/serverpb/status.proto @@ -692,34 +692,80 @@ message ProblemRangesResponse { ]; } +// HotRangesRequest queries one or more cluster nodes for a list +// of ranges currently considered “hot” by the node(s). +// +// The server responds with a HotRangesResponse payload. message HotRangesRequest { - // If left empty, hot ranges for all nodes/stores will be returned. + // NodeID indicates which node to query for a hot range report. + // It is posssible to populate any node ID; if the node receiving + // the request is not the target node, it will forward the + // request to the target node. + // + // If left empty, the request is forwarded to every node + // in the cluster. string node_id = 1 [(gogoproto.customname) = "NodeID"]; } +// HotRangesResponse is the payload produced in response +// to a HotRangesRequest. message HotRangesResponse { + // NodeID is the node that received the HotRangesRequest and + // forwarded requests to the selected target node(s). + int32 node_id = 1 [ + (gogoproto.customname) = "NodeID", + (gogoproto.casttype) = + "github.com/cockroachdb/cockroach/pkg/roachpb.NodeID" + ]; + + // HotRange is a hot range report for a single store on one of the + // target node(s) selected in a HotRangesRequest. message HotRange { + // Desc is the descriptor of the range for which the report + // was produced. + // + // Note: this field is generally RESERVED and will likely be removed + // or replaced in a later version. + // See: https://github.com/cockroachdb/cockroach/issues/53212 cockroach.roachpb.RangeDescriptor desc = 1 [(gogoproto.nullable) = false]; + + // QueriesPerSecond is the recent number of queries per second + // on this range. double queries_per_second = 2; } + + // StoreResponse contains the part of a hot ranges report that + // pertains to a single store on a target node. message StoreResponse { + // StoreID identifies the store for which the report was + // produced. int32 store_id = 1 [ (gogoproto.customname) = "StoreID", (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/roachpb.StoreID" ]; + + // HotRanges is the hot ranges report for this store + // on the target node. repeated HotRange hot_ranges = 2 [(gogoproto.nullable) = false]; } + + // NodeResponse is a hot range report for a single target node. message NodeResponse { + // ErrorMessage is set to a non-empty string if this target + // node was unable to produce a hot range report. + // + // The contents of this string indicates the cause of the failure. string error_message = 1; + + // Stores contains the hot ranges report if no error was encountered. + // There is one part to the report for each store in the + // target node. repeated StoreResponse stores = 2; } - // NodeID is the node that submitted all the requests. - int32 node_id = 1 [ - (gogoproto.customname) = "NodeID", - (gogoproto.casttype) = - "github.com/cockroachdb/cockroach/pkg/roachpb.NodeID" - ]; + + // HotRangesByNodeID contains a hot range report for each selected + // target node ID in the HotRangesRequest. map hot_ranges_by_node_id = 2 [ (gogoproto.castkey) = "github.com/cockroachdb/cockroach/pkg/roachpb.NodeID", (gogoproto.customname) = "HotRangesByNodeID", diff --git a/vendor b/vendor index a15f2178a398..866b5c67ce25 160000 --- a/vendor +++ b/vendor @@ -1 +1 @@ -Subproject commit a15f2178a398bd58e9717cf96d6b1a555b290d78 +Subproject commit 866b5c67ce250ea715aa150626d0db65cb557324