diff --git a/internal/core/src/pb/milvus.pb.cc b/internal/core/src/pb/milvus.pb.cc index 184fa86f37..5966b3f2df 100644 --- a/internal/core/src/pb/milvus.pb.cc +++ b/internal/core/src/pb/milvus.pb.cc @@ -1525,6 +1525,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_milvus_2eproto::offsets[] PROT PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::SearchRequest, output_fields_), PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::SearchRequest, search_params_), PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::SearchRequest, travel_timestamp_), + PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::SearchRequest, guarantee_timestamp_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::RetrieveRequest, _internal_metadata_), ~0u, // no _extensions_ @@ -1537,6 +1538,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_milvus_2eproto::offsets[] PROT PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::RetrieveRequest, ids_), PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::RetrieveRequest, output_fields_), PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::RetrieveRequest, travel_timestamp_), + PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::RetrieveRequest, guarantee_timestamp_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::RetrieveResults, _internal_metadata_), ~0u, // no _extensions_ @@ -1721,25 +1723,25 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB { 326, -1, sizeof(::milvus::proto::milvus::PlaceholderValue)}, { 334, -1, sizeof(::milvus::proto::milvus::PlaceholderGroup)}, { 340, -1, sizeof(::milvus::proto::milvus::SearchRequest)}, - { 355, -1, sizeof(::milvus::proto::milvus::RetrieveRequest)}, - { 367, -1, sizeof(::milvus::proto::milvus::RetrieveResults)}, - { 375, -1, sizeof(::milvus::proto::milvus::Hits)}, - { 383, -1, sizeof(::milvus::proto::milvus::SearchResults)}, - { 390, -1, sizeof(::milvus::proto::milvus::FlushRequest)}, - { 398, 405, sizeof(::milvus::proto::milvus::FlushResponse_CollSegIDsEntry_DoNotUse)}, - { 407, -1, sizeof(::milvus::proto::milvus::FlushResponse)}, - { 415, -1, sizeof(::milvus::proto::milvus::QueryRequest)}, - { 426, -1, sizeof(::milvus::proto::milvus::QueryResults)}, - { 433, -1, sizeof(::milvus::proto::milvus::PersistentSegmentInfo)}, - { 443, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoRequest)}, - { 451, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoResponse)}, - { 458, -1, sizeof(::milvus::proto::milvus::QuerySegmentInfo)}, - { 470, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoRequest)}, - { 478, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoResponse)}, - { 485, -1, sizeof(::milvus::proto::milvus::DummyRequest)}, - { 491, -1, sizeof(::milvus::proto::milvus::DummyResponse)}, - { 497, -1, sizeof(::milvus::proto::milvus::RegisterLinkRequest)}, - { 502, -1, sizeof(::milvus::proto::milvus::RegisterLinkResponse)}, + { 356, -1, sizeof(::milvus::proto::milvus::RetrieveRequest)}, + { 369, -1, sizeof(::milvus::proto::milvus::RetrieveResults)}, + { 377, -1, sizeof(::milvus::proto::milvus::Hits)}, + { 385, -1, sizeof(::milvus::proto::milvus::SearchResults)}, + { 392, -1, sizeof(::milvus::proto::milvus::FlushRequest)}, + { 400, 407, sizeof(::milvus::proto::milvus::FlushResponse_CollSegIDsEntry_DoNotUse)}, + { 409, -1, sizeof(::milvus::proto::milvus::FlushResponse)}, + { 417, -1, sizeof(::milvus::proto::milvus::QueryRequest)}, + { 428, -1, sizeof(::milvus::proto::milvus::QueryResults)}, + { 435, -1, sizeof(::milvus::proto::milvus::PersistentSegmentInfo)}, + { 445, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoRequest)}, + { 453, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoResponse)}, + { 460, -1, sizeof(::milvus::proto::milvus::QuerySegmentInfo)}, + { 472, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoRequest)}, + { 480, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoResponse)}, + { 487, -1, sizeof(::milvus::proto::milvus::DummyRequest)}, + { 493, -1, sizeof(::milvus::proto::milvus::DummyResponse)}, + { 499, -1, sizeof(::milvus::proto::milvus::RegisterLinkRequest)}, + { 504, -1, sizeof(::milvus::proto::milvus::RegisterLinkResponse)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { @@ -1938,7 +1940,7 @@ const char descriptor_table_protodef_milvus_2eproto[] PROTOBUF_SECTION_VARIABLE( "milvus.proto.milvus.PlaceholderType\022\016\n\006v" "alues\030\003 \003(\014\"O\n\020PlaceholderGroup\022;\n\014place" "holders\030\001 \003(\0132%.milvus.proto.milvus.Plac" - "eholderValue\"\301\002\n\rSearchRequest\022*\n\004base\030\001" + "eholderValue\"\336\002\n\rSearchRequest\022*\n\004base\030\001" " \001(\0132\034.milvus.proto.common.MsgBase\022\017\n\007db" "_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017" "partition_names\030\004 \003(\t\022\013\n\003dsl\030\005 \001(\t\022\031\n\021pl" @@ -1946,143 +1948,145 @@ const char descriptor_table_protodef_milvus_2eproto[] PROTOBUF_SECTION_VARIABLE( "\034.milvus.proto.common.DslType\022\025\n\routput_" "fields\030\010 \003(\t\0228\n\rsearch_params\030\t \003(\0132!.mi" "lvus.proto.common.KeyValuePair\022\030\n\020travel" - "_timestamp\030\n \001(\004\"\330\001\n\017RetrieveRequest\022*\n\004" - "base\030\001 \001(\0132\034.milvus.proto.common.MsgBase" - "\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001" - "(\t\022\027\n\017partition_names\030\004 \003(\t\022%\n\003ids\030\005 \001(\013" - "2\030.milvus.proto.schema.IDs\022\025\n\routput_fie" - "lds\030\006 \003(\t\022\030\n\020travel_timestamp\030\007 \001(\004\"\232\001\n\017" - "RetrieveResults\022+\n\006status\030\001 \001(\0132\033.milvus" - ".proto.common.Status\022%\n\003ids\030\002 \001(\0132\030.milv" - "us.proto.schema.IDs\0223\n\013fields_data\030\003 \003(\013" - "2\036.milvus.proto.schema.FieldData\"5\n\004Hits" - "\022\013\n\003IDs\030\001 \003(\003\022\020\n\010row_data\030\002 \003(\014\022\016\n\006score" - "s\030\003 \003(\002\"t\n\rSearchResults\022+\n\006status\030\001 \001(\013" - "2\033.milvus.proto.common.Status\0226\n\007results" - "\030\002 \001(\0132%.milvus.proto.schema.SearchResul" - "tData\"e\n\014FlushRequest\022*\n\004base\030\001 \001(\0132\034.mi" - "lvus.proto.common.MsgBase\022\017\n\007db_name\030\002 \001" - "(\t\022\030\n\020collection_names\030\003 \003(\t\"\351\001\n\rFlushRe" - "sponse\022+\n\006status\030\001 \001(\0132\033.milvus.proto.co" - "mmon.Status\022\017\n\007db_name\030\002 \001(\t\022G\n\013coll_seg" - "IDs\030\003 \003(\01322.milvus.proto.milvus.FlushRes" - "ponse.CollSegIDsEntry\032Q\n\017CollSegIDsEntry" - "\022\013\n\003key\030\001 \001(\t\022-\n\005value\030\002 \001(\0132\036.milvus.pr" - "oto.schema.LongArray:\0028\001\"\242\001\n\014QueryReques" - "t\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common.Ms" - "gBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_nam" - "e\030\003 \001(\t\022\014\n\004expr\030\004 \001(\t\022\025\n\routput_fields\030\005" - " \003(\t\022\027\n\017partition_names\030\006 \003(\t\"p\n\014QueryRe" - "sults\022+\n\006status\030\001 \001(\0132\033.milvus.proto.com" - "mon.Status\0223\n\013fields_data\030\002 \003(\0132\036.milvus" - ".proto.schema.FieldData\"\231\001\n\025PersistentSe" - "gmentInfo\022\021\n\tsegmentID\030\001 \001(\003\022\024\n\014collecti" - "onID\030\002 \001(\003\022\023\n\013partitionID\030\003 \001(\003\022\020\n\010num_r" - "ows\030\004 \001(\003\0220\n\005state\030\005 \001(\0162!.milvus.proto." - "common.SegmentState\"u\n\037GetPersistentSegm" - "entInfoRequest\022*\n\004base\030\001 \001(\0132\034.milvus.pr" - "oto.common.MsgBase\022\016\n\006dbName\030\002 \001(\t\022\026\n\016co" - "llectionName\030\003 \001(\t\"\212\001\n GetPersistentSegm" - "entInfoResponse\022+\n\006status\030\001 \001(\0132\033.milvus" - ".proto.common.Status\0229\n\005infos\030\002 \003(\0132*.mi" - "lvus.proto.milvus.PersistentSegmentInfo\"" - "\231\001\n\020QuerySegmentInfo\022\021\n\tsegmentID\030\001 \001(\003\022" - "\024\n\014collectionID\030\002 \001(\003\022\023\n\013partitionID\030\003 \001" - "(\003\022\020\n\010mem_size\030\004 \001(\003\022\020\n\010num_rows\030\005 \001(\003\022\022" - "\n\nindex_name\030\006 \001(\t\022\017\n\007indexID\030\007 \001(\003\"p\n\032G" - "etQuerySegmentInfoRequest\022*\n\004base\030\001 \001(\0132" - "\034.milvus.proto.common.MsgBase\022\016\n\006dbName\030" - "\002 \001(\t\022\026\n\016collectionName\030\003 \001(\t\"\200\001\n\033GetQue" - "rySegmentInfoResponse\022+\n\006status\030\001 \001(\0132\033." - "milvus.proto.common.Status\0224\n\005infos\030\002 \003(" - "\0132%.milvus.proto.milvus.QuerySegmentInfo" - "\"$\n\014DummyRequest\022\024\n\014request_type\030\001 \001(\t\"!" - "\n\rDummyResponse\022\020\n\010response\030\001 \001(\t\"\025\n\023Reg" - "isterLinkRequest\"r\n\024RegisterLinkResponse" - "\022-\n\007address\030\001 \001(\0132\034.milvus.proto.common." - "Address\022+\n\006status\030\002 \001(\0132\033.milvus.proto.c" - "ommon.Status*,\n\023ShowCollectionsType\022\007\n\003A" - "ll\020\000\022\014\n\010InMemory\020\001*>\n\017PlaceholderType\022\010\n" - "\004None\020\000\022\020\n\014BinaryVector\020d\022\017\n\013FloatVector" - "\020e2\224\027\n\rMilvusService\022_\n\020CreateCollection" - "\022,.milvus.proto.milvus.CreateCollectionR" - "equest\032\033.milvus.proto.common.Status\"\000\022[\n" - "\016DropCollection\022*.milvus.proto.milvus.Dr" - "opCollectionRequest\032\033.milvus.proto.commo" - "n.Status\"\000\022_\n\rHasCollection\022).milvus.pro" - "to.milvus.HasCollectionRequest\032!.milvus." - "proto.milvus.BoolResponse\"\000\022[\n\016LoadColle" - "ction\022*.milvus.proto.milvus.LoadCollecti" - "onRequest\032\033.milvus.proto.common.Status\"\000" - "\022a\n\021ReleaseCollection\022-.milvus.proto.mil" - "vus.ReleaseCollectionRequest\032\033.milvus.pr" - "oto.common.Status\"\000\022w\n\022DescribeCollectio" - "n\022..milvus.proto.milvus.DescribeCollecti" - "onRequest\032/.milvus.proto.milvus.Describe" - "CollectionResponse\"\000\022\206\001\n\027GetCollectionSt" - "atistics\0223.milvus.proto.milvus.GetCollec" - "tionStatisticsRequest\0324.milvus.proto.mil" - "vus.GetCollectionStatisticsResponse\"\000\022n\n" - "\017ShowCollections\022+.milvus.proto.milvus.S" - "howCollectionsRequest\032,.milvus.proto.mil" - "vus.ShowCollectionsResponse\"\000\022]\n\017CreateP" - "artition\022+.milvus.proto.milvus.CreatePar" - "titionRequest\032\033.milvus.proto.common.Stat" - "us\"\000\022Y\n\rDropPartition\022).milvus.proto.mil" - "vus.DropPartitionRequest\032\033.milvus.proto." - "common.Status\"\000\022]\n\014HasPartition\022(.milvus" - ".proto.milvus.HasPartitionRequest\032!.milv" - "us.proto.milvus.BoolResponse\"\000\022[\n\016LoadPa" - "rtitions\022*.milvus.proto.milvus.LoadParti" - "tionsRequest\032\033.milvus.proto.common.Statu" - "s\"\000\022a\n\021ReleasePartitions\022-.milvus.proto." - "milvus.ReleasePartitionsRequest\032\033.milvus" - ".proto.common.Status\"\000\022\203\001\n\026GetPartitionS" - "tatistics\0222.milvus.proto.milvus.GetParti" - "tionStatisticsRequest\0323.milvus.proto.mil" - "vus.GetPartitionStatisticsResponse\"\000\022k\n\016" - "ShowPartitions\022*.milvus.proto.milvus.Sho" - "wPartitionsRequest\032+.milvus.proto.milvus" - ".ShowPartitionsResponse\"\000\022U\n\013CreateIndex" - "\022\'.milvus.proto.milvus.CreateIndexReques" - "t\032\033.milvus.proto.common.Status\"\000\022h\n\rDesc" - "ribeIndex\022).milvus.proto.milvus.Describe" - "IndexRequest\032*.milvus.proto.milvus.Descr" - "ibeIndexResponse\"\000\022h\n\rGetIndexState\022).mi" - "lvus.proto.milvus.GetIndexStateRequest\032*" - ".milvus.proto.milvus.GetIndexStateRespon" - "se\"\000\022\200\001\n\025GetIndexBuildProgress\0221.milvus." - "proto.milvus.GetIndexBuildProgressReques" - "t\0322.milvus.proto.milvus.GetIndexBuildPro" - "gressResponse\"\000\022Q\n\tDropIndex\022%.milvus.pr" - "oto.milvus.DropIndexRequest\032\033.milvus.pro" - "to.common.Status\"\000\022S\n\006Insert\022\".milvus.pr" - "oto.milvus.InsertRequest\032#.milvus.proto." - "milvus.MutationResult\"\000\022R\n\006Search\022\".milv" - "us.proto.milvus.SearchRequest\032\".milvus.p" - "roto.milvus.SearchResults\"\000\022X\n\010Retrieve\022" - "$.milvus.proto.milvus.RetrieveRequest\032$." - "milvus.proto.milvus.RetrieveResults\"\000\022P\n" - "\005Flush\022!.milvus.proto.milvus.FlushReques" - "t\032\".milvus.proto.milvus.FlushResponse\"\000\022" - "O\n\005Query\022!.milvus.proto.milvus.QueryRequ" - "est\032!.milvus.proto.milvus.QueryResults\"\000" - "\022\211\001\n\030GetPersistentSegmentInfo\0224.milvus.p" - "roto.milvus.GetPersistentSegmentInfoRequ" - "est\0325.milvus.proto.milvus.GetPersistentS" - "egmentInfoResponse\"\000\022z\n\023GetQuerySegmentI" - "nfo\022/.milvus.proto.milvus.GetQuerySegmen" - "tInfoRequest\0320.milvus.proto.milvus.GetQu" - "erySegmentInfoResponse\"\000\022P\n\005Dummy\022!.milv" - "us.proto.milvus.DummyRequest\032\".milvus.pr" - "oto.milvus.DummyResponse\"\000\022e\n\014RegisterLi" - "nk\022(.milvus.proto.milvus.RegisterLinkReq" - "uest\032).milvus.proto.milvus.RegisterLinkR" - "esponse\"\0002u\n\014ProxyService\022e\n\014RegisterLin" - "k\022(.milvus.proto.milvus.RegisterLinkRequ" - "est\032).milvus.proto.milvus.RegisterLinkRe" - "sponse\"\000B5Z3github.com/milvus-io/milvus/" - "internal/proto/milvuspbb\006proto3" + "_timestamp\030\n \001(\004\022\033\n\023guarantee_timestamp\030" + "\013 \001(\004\"\365\001\n\017RetrieveRequest\022*\n\004base\030\001 \001(\0132" + "\034.milvus.proto.common.MsgBase\022\017\n\007db_name" + "\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017parti" + "tion_names\030\004 \003(\t\022%\n\003ids\030\005 \001(\0132\030.milvus.p" + "roto.schema.IDs\022\025\n\routput_fields\030\006 \003(\t\022\030" + "\n\020travel_timestamp\030\007 \001(\004\022\033\n\023guarantee_ti" + "mestamp\030\010 \001(\004\"\232\001\n\017RetrieveResults\022+\n\006sta" + "tus\030\001 \001(\0132\033.milvus.proto.common.Status\022%" + "\n\003ids\030\002 \001(\0132\030.milvus.proto.schema.IDs\0223\n" + "\013fields_data\030\003 \003(\0132\036.milvus.proto.schema" + ".FieldData\"5\n\004Hits\022\013\n\003IDs\030\001 \003(\003\022\020\n\010row_d" + "ata\030\002 \003(\014\022\016\n\006scores\030\003 \003(\002\"t\n\rSearchResul" + "ts\022+\n\006status\030\001 \001(\0132\033.milvus.proto.common" + ".Status\0226\n\007results\030\002 \001(\0132%.milvus.proto." + "schema.SearchResultData\"e\n\014FlushRequest\022" + "*\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgB" + "ase\022\017\n\007db_name\030\002 \001(\t\022\030\n\020collection_names" + "\030\003 \003(\t\"\351\001\n\rFlushResponse\022+\n\006status\030\001 \001(\013" + "2\033.milvus.proto.common.Status\022\017\n\007db_name" + "\030\002 \001(\t\022G\n\013coll_segIDs\030\003 \003(\01322.milvus.pro" + "to.milvus.FlushResponse.CollSegIDsEntry\032" + "Q\n\017CollSegIDsEntry\022\013\n\003key\030\001 \001(\t\022-\n\005value" + "\030\002 \001(\0132\036.milvus.proto.schema.LongArray:\002" + "8\001\"\242\001\n\014QueryRequest\022*\n\004base\030\001 \001(\0132\034.milv" + "us.proto.common.MsgBase\022\017\n\007db_name\030\002 \001(\t" + "\022\027\n\017collection_name\030\003 \001(\t\022\014\n\004expr\030\004 \001(\t\022" + "\025\n\routput_fields\030\005 \003(\t\022\027\n\017partition_name" + "s\030\006 \003(\t\"p\n\014QueryResults\022+\n\006status\030\001 \001(\0132" + "\033.milvus.proto.common.Status\0223\n\013fields_d" + "ata\030\002 \003(\0132\036.milvus.proto.schema.FieldDat" + "a\"\231\001\n\025PersistentSegmentInfo\022\021\n\tsegmentID" + "\030\001 \001(\003\022\024\n\014collectionID\030\002 \001(\003\022\023\n\013partitio" + "nID\030\003 \001(\003\022\020\n\010num_rows\030\004 \001(\003\0220\n\005state\030\005 \001" + "(\0162!.milvus.proto.common.SegmentState\"u\n" + "\037GetPersistentSegmentInfoRequest\022*\n\004base" + "\030\001 \001(\0132\034.milvus.proto.common.MsgBase\022\016\n\006" + "dbName\030\002 \001(\t\022\026\n\016collectionName\030\003 \001(\t\"\212\001\n" + " GetPersistentSegmentInfoResponse\022+\n\006sta" + "tus\030\001 \001(\0132\033.milvus.proto.common.Status\0229" + "\n\005infos\030\002 \003(\0132*.milvus.proto.milvus.Pers" + "istentSegmentInfo\"\231\001\n\020QuerySegmentInfo\022\021" + "\n\tsegmentID\030\001 \001(\003\022\024\n\014collectionID\030\002 \001(\003\022" + "\023\n\013partitionID\030\003 \001(\003\022\020\n\010mem_size\030\004 \001(\003\022\020" + "\n\010num_rows\030\005 \001(\003\022\022\n\nindex_name\030\006 \001(\t\022\017\n\007" + "indexID\030\007 \001(\003\"p\n\032GetQuerySegmentInfoRequ" + "est\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common." + "MsgBase\022\016\n\006dbName\030\002 \001(\t\022\026\n\016collectionNam" + "e\030\003 \001(\t\"\200\001\n\033GetQuerySegmentInfoResponse\022" + "+\n\006status\030\001 \001(\0132\033.milvus.proto.common.St" + "atus\0224\n\005infos\030\002 \003(\0132%.milvus.proto.milvu" + "s.QuerySegmentInfo\"$\n\014DummyRequest\022\024\n\014re" + "quest_type\030\001 \001(\t\"!\n\rDummyResponse\022\020\n\010res" + "ponse\030\001 \001(\t\"\025\n\023RegisterLinkRequest\"r\n\024Re" + "gisterLinkResponse\022-\n\007address\030\001 \001(\0132\034.mi" + "lvus.proto.common.Address\022+\n\006status\030\002 \001(" + "\0132\033.milvus.proto.common.Status*,\n\023ShowCo" + "llectionsType\022\007\n\003All\020\000\022\014\n\010InMemory\020\001*>\n\017" + "PlaceholderType\022\010\n\004None\020\000\022\020\n\014BinaryVecto" + "r\020d\022\017\n\013FloatVector\020e2\224\027\n\rMilvusService\022_" + "\n\020CreateCollection\022,.milvus.proto.milvus" + ".CreateCollectionRequest\032\033.milvus.proto." + "common.Status\"\000\022[\n\016DropCollection\022*.milv" + "us.proto.milvus.DropCollectionRequest\032\033." + "milvus.proto.common.Status\"\000\022_\n\rHasColle" + "ction\022).milvus.proto.milvus.HasCollectio" + "nRequest\032!.milvus.proto.milvus.BoolRespo" + "nse\"\000\022[\n\016LoadCollection\022*.milvus.proto.m" + "ilvus.LoadCollectionRequest\032\033.milvus.pro" + "to.common.Status\"\000\022a\n\021ReleaseCollection\022" + "-.milvus.proto.milvus.ReleaseCollectionR" + "equest\032\033.milvus.proto.common.Status\"\000\022w\n" + "\022DescribeCollection\022..milvus.proto.milvu" + "s.DescribeCollectionRequest\032/.milvus.pro" + "to.milvus.DescribeCollectionResponse\"\000\022\206" + "\001\n\027GetCollectionStatistics\0223.milvus.prot" + "o.milvus.GetCollectionStatisticsRequest\032" + "4.milvus.proto.milvus.GetCollectionStati" + "sticsResponse\"\000\022n\n\017ShowCollections\022+.mil" + "vus.proto.milvus.ShowCollectionsRequest\032" + ",.milvus.proto.milvus.ShowCollectionsRes" + "ponse\"\000\022]\n\017CreatePartition\022+.milvus.prot" + "o.milvus.CreatePartitionRequest\032\033.milvus" + ".proto.common.Status\"\000\022Y\n\rDropPartition\022" + ").milvus.proto.milvus.DropPartitionReque" + "st\032\033.milvus.proto.common.Status\"\000\022]\n\014Has" + "Partition\022(.milvus.proto.milvus.HasParti" + "tionRequest\032!.milvus.proto.milvus.BoolRe" + "sponse\"\000\022[\n\016LoadPartitions\022*.milvus.prot" + "o.milvus.LoadPartitionsRequest\032\033.milvus." + "proto.common.Status\"\000\022a\n\021ReleasePartitio" + "ns\022-.milvus.proto.milvus.ReleasePartitio" + "nsRequest\032\033.milvus.proto.common.Status\"\000" + "\022\203\001\n\026GetPartitionStatistics\0222.milvus.pro" + "to.milvus.GetPartitionStatisticsRequest\032" + "3.milvus.proto.milvus.GetPartitionStatis" + "ticsResponse\"\000\022k\n\016ShowPartitions\022*.milvu" + "s.proto.milvus.ShowPartitionsRequest\032+.m" + "ilvus.proto.milvus.ShowPartitionsRespons" + "e\"\000\022U\n\013CreateIndex\022\'.milvus.proto.milvus" + ".CreateIndexRequest\032\033.milvus.proto.commo" + "n.Status\"\000\022h\n\rDescribeIndex\022).milvus.pro" + "to.milvus.DescribeIndexRequest\032*.milvus." + "proto.milvus.DescribeIndexResponse\"\000\022h\n\r" + "GetIndexState\022).milvus.proto.milvus.GetI" + "ndexStateRequest\032*.milvus.proto.milvus.G" + "etIndexStateResponse\"\000\022\200\001\n\025GetIndexBuild" + "Progress\0221.milvus.proto.milvus.GetIndexB" + "uildProgressRequest\0322.milvus.proto.milvu" + "s.GetIndexBuildProgressResponse\"\000\022Q\n\tDro" + "pIndex\022%.milvus.proto.milvus.DropIndexRe" + "quest\032\033.milvus.proto.common.Status\"\000\022S\n\006" + "Insert\022\".milvus.proto.milvus.InsertReque" + "st\032#.milvus.proto.milvus.MutationResult\"" + "\000\022R\n\006Search\022\".milvus.proto.milvus.Search" + "Request\032\".milvus.proto.milvus.SearchResu" + "lts\"\000\022X\n\010Retrieve\022$.milvus.proto.milvus." + "RetrieveRequest\032$.milvus.proto.milvus.Re" + "trieveResults\"\000\022P\n\005Flush\022!.milvus.proto." + "milvus.FlushRequest\032\".milvus.proto.milvu" + "s.FlushResponse\"\000\022O\n\005Query\022!.milvus.prot" + "o.milvus.QueryRequest\032!.milvus.proto.mil" + "vus.QueryResults\"\000\022\211\001\n\030GetPersistentSegm" + "entInfo\0224.milvus.proto.milvus.GetPersist" + "entSegmentInfoRequest\0325.milvus.proto.mil" + "vus.GetPersistentSegmentInfoResponse\"\000\022z" + "\n\023GetQuerySegmentInfo\022/.milvus.proto.mil" + "vus.GetQuerySegmentInfoRequest\0320.milvus." + "proto.milvus.GetQuerySegmentInfoResponse" + "\"\000\022P\n\005Dummy\022!.milvus.proto.milvus.DummyR" + "equest\032\".milvus.proto.milvus.DummyRespon" + "se\"\000\022e\n\014RegisterLink\022(.milvus.proto.milv" + "us.RegisterLinkRequest\032).milvus.proto.mi" + "lvus.RegisterLinkResponse\"\0002u\n\014ProxyServ" + "ice\022e\n\014RegisterLink\022(.milvus.proto.milvu" + "s.RegisterLinkRequest\032).milvus.proto.mil" + "vus.RegisterLinkResponse\"\000B5Z3github.com" + "/milvus-io/milvus/internal/proto/milvusp" + "bb\006proto3" ; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_milvus_2eproto_deps[2] = { &::descriptor_table_common_2eproto, @@ -2152,7 +2156,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_mil static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_milvus_2eproto_once; static bool descriptor_table_milvus_2eproto_initialized = false; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_milvus_2eproto = { - &descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 11111, + &descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 11169, &descriptor_table_milvus_2eproto_once, descriptor_table_milvus_2eproto_sccs, descriptor_table_milvus_2eproto_deps, 59, 2, schemas, file_default_instances, TableStruct_milvus_2eproto::offsets, file_level_metadata_milvus_2eproto, 59, file_level_enum_descriptors_milvus_2eproto, file_level_service_descriptors_milvus_2eproto, @@ -19135,6 +19139,13 @@ const char* SearchRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ CHK_(ptr); } else goto handle_unusual; continue; + // uint64 guarantee_timestamp = 11; + case 11: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { + guarantee_timestamp_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -19302,6 +19313,19 @@ bool SearchRequest::MergePartialFromCodedStream( break; } + // uint64 guarantee_timestamp = 11; + case 11: { + if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (88 & 0xFF)) { + + DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive< + ::PROTOBUF_NAMESPACE_ID::uint64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT64>( + input, &guarantee_timestamp_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -19411,6 +19435,11 @@ void SearchRequest::SerializeWithCachedSizes( ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64(10, this->travel_timestamp(), output); } + // uint64 guarantee_timestamp = 11; + if (this->guarantee_timestamp() != 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64(11, this->guarantee_timestamp(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -19510,6 +19539,11 @@ void SearchRequest::SerializeWithCachedSizes( target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(10, this->travel_timestamp(), target); } + // uint64 guarantee_timestamp = 11; + if (this->guarantee_timestamp() != 0) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(11, this->guarantee_timestamp(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -19600,6 +19634,13 @@ size_t SearchRequest::ByteSizeLong() const { this->travel_timestamp()); } + // uint64 guarantee_timestamp = 11; + if (this->guarantee_timestamp() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size( + this->guarantee_timestamp()); + } + // .milvus.proto.common.DslType dsl_type = 7; if (this->dsl_type() != 0) { total_size += 1 + @@ -19658,6 +19699,9 @@ void SearchRequest::MergeFrom(const SearchRequest& from) { if (from.travel_timestamp() != 0) { set_travel_timestamp(from.travel_timestamp()); } + if (from.guarantee_timestamp() != 0) { + set_guarantee_timestamp(from.guarantee_timestamp()); + } if (from.dsl_type() != 0) { set_dsl_type(from.dsl_type()); } @@ -19697,6 +19741,7 @@ void SearchRequest::InternalSwap(SearchRequest* other) { GetArenaNoVirtual()); swap(base_, other->base_); swap(travel_timestamp_, other->travel_timestamp_); + swap(guarantee_timestamp_, other->guarantee_timestamp_); swap(dsl_type_, other->dsl_type_); } @@ -19768,7 +19813,9 @@ RetrieveRequest::RetrieveRequest(const RetrieveRequest& from) } else { ids_ = nullptr; } - travel_timestamp_ = from.travel_timestamp_; + ::memcpy(&travel_timestamp_, &from.travel_timestamp_, + static_cast(reinterpret_cast(&guarantee_timestamp_) - + reinterpret_cast(&travel_timestamp_)) + sizeof(guarantee_timestamp_)); // @@protoc_insertion_point(copy_constructor:milvus.proto.milvus.RetrieveRequest) } @@ -19777,8 +19824,8 @@ void RetrieveRequest::SharedCtor() { db_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); collection_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(&base_, 0, static_cast( - reinterpret_cast(&travel_timestamp_) - - reinterpret_cast(&base_)) + sizeof(travel_timestamp_)); + reinterpret_cast(&guarantee_timestamp_) - + reinterpret_cast(&base_)) + sizeof(guarantee_timestamp_)); } RetrieveRequest::~RetrieveRequest() { @@ -19820,7 +19867,9 @@ void RetrieveRequest::Clear() { delete ids_; } ids_ = nullptr; - travel_timestamp_ = PROTOBUF_ULONGLONG(0); + ::memset(&travel_timestamp_, 0, static_cast( + reinterpret_cast(&guarantee_timestamp_) - + reinterpret_cast(&travel_timestamp_)) + sizeof(guarantee_timestamp_)); _internal_metadata_.Clear(); } @@ -19891,6 +19940,13 @@ const char* RetrieveRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPAC CHK_(ptr); } else goto handle_unusual; continue; + // uint64 guarantee_timestamp = 8; + case 8: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { + guarantee_timestamp_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -20018,6 +20074,19 @@ bool RetrieveRequest::MergePartialFromCodedStream( break; } + // uint64 guarantee_timestamp = 8; + case 8: { + if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (64 & 0xFF)) { + + DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive< + ::PROTOBUF_NAMESPACE_ID::uint64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT64>( + input, &guarantee_timestamp_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -20102,6 +20171,11 @@ void RetrieveRequest::SerializeWithCachedSizes( ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64(7, this->travel_timestamp(), output); } + // uint64 guarantee_timestamp = 8; + if (this->guarantee_timestamp() != 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64(8, this->guarantee_timestamp(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -20176,6 +20250,11 @@ void RetrieveRequest::SerializeWithCachedSizes( target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(7, this->travel_timestamp(), target); } + // uint64 guarantee_timestamp = 8; + if (this->guarantee_timestamp() != 0) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(8, this->guarantee_timestamp(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -20248,6 +20327,13 @@ size_t RetrieveRequest::ByteSizeLong() const { this->travel_timestamp()); } + // uint64 guarantee_timestamp = 8; + if (this->guarantee_timestamp() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size( + this->guarantee_timestamp()); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -20294,6 +20380,9 @@ void RetrieveRequest::MergeFrom(const RetrieveRequest& from) { if (from.travel_timestamp() != 0) { set_travel_timestamp(from.travel_timestamp()); } + if (from.guarantee_timestamp() != 0) { + set_guarantee_timestamp(from.guarantee_timestamp()); + } } void RetrieveRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { @@ -20326,6 +20415,7 @@ void RetrieveRequest::InternalSwap(RetrieveRequest* other) { swap(base_, other->base_); swap(ids_, other->ids_); swap(travel_timestamp_, other->travel_timestamp_); + swap(guarantee_timestamp_, other->guarantee_timestamp_); } ::PROTOBUF_NAMESPACE_ID::Metadata RetrieveRequest::GetMetadata() const { diff --git a/internal/core/src/pb/milvus.pb.h b/internal/core/src/pb/milvus.pb.h index 69967093b2..446a9bf2d9 100644 --- a/internal/core/src/pb/milvus.pb.h +++ b/internal/core/src/pb/milvus.pb.h @@ -6976,6 +6976,7 @@ class SearchRequest : kPlaceholderGroupFieldNumber = 6, kBaseFieldNumber = 1, kTravelTimestampFieldNumber = 10, + kGuaranteeTimestampFieldNumber = 11, kDslTypeFieldNumber = 7, }; // repeated string partition_names = 4; @@ -7080,6 +7081,11 @@ class SearchRequest : ::PROTOBUF_NAMESPACE_ID::uint64 travel_timestamp() const; void set_travel_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 value); + // uint64 guarantee_timestamp = 11; + void clear_guarantee_timestamp(); + ::PROTOBUF_NAMESPACE_ID::uint64 guarantee_timestamp() const; + void set_guarantee_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 value); + // .milvus.proto.common.DslType dsl_type = 7; void clear_dsl_type(); ::milvus::proto::common::DslType dsl_type() const; @@ -7099,6 +7105,7 @@ class SearchRequest : ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr placeholder_group_; ::milvus::proto::common::MsgBase* base_; ::PROTOBUF_NAMESPACE_ID::uint64 travel_timestamp_; + ::PROTOBUF_NAMESPACE_ID::uint64 guarantee_timestamp_; int dsl_type_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_milvus_2eproto; @@ -7225,6 +7232,7 @@ class RetrieveRequest : kBaseFieldNumber = 1, kIdsFieldNumber = 5, kTravelTimestampFieldNumber = 7, + kGuaranteeTimestampFieldNumber = 8, }; // repeated string partition_names = 4; int partition_names_size() const; @@ -7303,6 +7311,11 @@ class RetrieveRequest : ::PROTOBUF_NAMESPACE_ID::uint64 travel_timestamp() const; void set_travel_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 value); + // uint64 guarantee_timestamp = 8; + void clear_guarantee_timestamp(); + ::PROTOBUF_NAMESPACE_ID::uint64 guarantee_timestamp() const; + void set_guarantee_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 value); + // @@protoc_insertion_point(class_scope:milvus.proto.milvus.RetrieveRequest) private: class _Internal; @@ -7315,6 +7328,7 @@ class RetrieveRequest : ::milvus::proto::common::MsgBase* base_; ::milvus::proto::schema::IDs* ids_; ::PROTOBUF_NAMESPACE_ID::uint64 travel_timestamp_; + ::PROTOBUF_NAMESPACE_ID::uint64 guarantee_timestamp_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_milvus_2eproto; }; @@ -16580,6 +16594,20 @@ inline void SearchRequest::set_travel_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 // @@protoc_insertion_point(field_set:milvus.proto.milvus.SearchRequest.travel_timestamp) } +// uint64 guarantee_timestamp = 11; +inline void SearchRequest::clear_guarantee_timestamp() { + guarantee_timestamp_ = PROTOBUF_ULONGLONG(0); +} +inline ::PROTOBUF_NAMESPACE_ID::uint64 SearchRequest::guarantee_timestamp() const { + // @@protoc_insertion_point(field_get:milvus.proto.milvus.SearchRequest.guarantee_timestamp) + return guarantee_timestamp_; +} +inline void SearchRequest::set_guarantee_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 value) { + + guarantee_timestamp_ = value; + // @@protoc_insertion_point(field_set:milvus.proto.milvus.SearchRequest.guarantee_timestamp) +} + // ------------------------------------------------------------------- // RetrieveRequest @@ -16920,6 +16948,20 @@ inline void RetrieveRequest::set_travel_timestamp(::PROTOBUF_NAMESPACE_ID::uint6 // @@protoc_insertion_point(field_set:milvus.proto.milvus.RetrieveRequest.travel_timestamp) } +// uint64 guarantee_timestamp = 8; +inline void RetrieveRequest::clear_guarantee_timestamp() { + guarantee_timestamp_ = PROTOBUF_ULONGLONG(0); +} +inline ::PROTOBUF_NAMESPACE_ID::uint64 RetrieveRequest::guarantee_timestamp() const { + // @@protoc_insertion_point(field_get:milvus.proto.milvus.RetrieveRequest.guarantee_timestamp) + return guarantee_timestamp_; +} +inline void RetrieveRequest::set_guarantee_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 value) { + + guarantee_timestamp_ = value; + // @@protoc_insertion_point(field_set:milvus.proto.milvus.RetrieveRequest.guarantee_timestamp) +} + // ------------------------------------------------------------------- // RetrieveResults diff --git a/internal/msgstream/msg.go b/internal/msgstream/msg.go index 7e31b28613..3e05f199e9 100644 --- a/internal/msgstream/msg.go +++ b/internal/msgstream/msg.go @@ -284,6 +284,14 @@ func (st *SearchMsg) SourceID() int64 { return st.Base.SourceID } +func (st *SearchMsg) GuaranteeTs() Timestamp { + return st.GetGuaranteeTimestamp() +} + +func (st *SearchMsg) TravelTs() Timestamp { + return st.GetTravelTimestamp() +} + func (st *SearchMsg) Marshal(input TsMsg) (MarshalType, error) { searchTask := input.(*SearchMsg) searchRequest := &searchTask.SearchRequest @@ -390,6 +398,14 @@ func (rm *RetrieveMsg) SourceID() int64 { return rm.Base.SourceID } +func (rm *RetrieveMsg) GuaranteeTs() Timestamp { + return rm.GetGuaranteeTimestamp() +} + +func (rm *RetrieveMsg) TravelTs() Timestamp { + return rm.GetTravelTimestamp() +} + func (rm *RetrieveMsg) Marshal(input TsMsg) (MarshalType, error) { retrieveTask := input.(*RetrieveMsg) retrieveRequest := &retrieveTask.RetrieveRequest diff --git a/internal/proto/internal.proto b/internal/proto/internal.proto index af0ed29590..519c0e6ccd 100644 --- a/internal/proto/internal.proto +++ b/internal/proto/internal.proto @@ -134,6 +134,7 @@ message SearchRequest { bytes serialized_expr_plan = 9; repeated int64 output_fields_id = 10; uint64 travel_timestamp = 11; + uint64 guarantee_timestamp = 12; } message SearchResults { @@ -163,6 +164,7 @@ message RetrieveRequest { schema.IDs ids = 6; repeated string output_fields = 7; uint64 travel_timestamp = 8; + uint64 guarantee_timestamp = 9; } message RetrieveResults { diff --git a/internal/proto/internalpb/internal.pb.go b/internal/proto/internalpb/internal.pb.go index 4a403e7bd0..d139b4c7ce 100644 --- a/internal/proto/internalpb/internal.pb.go +++ b/internal/proto/internalpb/internal.pb.go @@ -1048,6 +1048,7 @@ type SearchRequest struct { SerializedExprPlan []byte `protobuf:"bytes,9,opt,name=serialized_expr_plan,json=serializedExprPlan,proto3" json:"serialized_expr_plan,omitempty"` OutputFieldsId []int64 `protobuf:"varint,10,rep,packed,name=output_fields_id,json=outputFieldsId,proto3" json:"output_fields_id,omitempty"` TravelTimestamp uint64 `protobuf:"varint,11,opt,name=travel_timestamp,json=travelTimestamp,proto3" json:"travel_timestamp,omitempty"` + GuaranteeTimestamp uint64 `protobuf:"varint,12,opt,name=guarantee_timestamp,json=guaranteeTimestamp,proto3" json:"guarantee_timestamp,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1155,6 +1156,13 @@ func (m *SearchRequest) GetTravelTimestamp() uint64 { return 0 } +func (m *SearchRequest) GetGuaranteeTimestamp() uint64 { + if m != nil { + return m.GuaranteeTimestamp + } + return 0 +} + type SearchResults struct { Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` Status *commonpb.Status `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` @@ -1284,6 +1292,7 @@ type RetrieveRequest struct { Ids *schemapb.IDs `protobuf:"bytes,6,opt,name=ids,proto3" json:"ids,omitempty"` OutputFields []string `protobuf:"bytes,7,rep,name=output_fields,json=outputFields,proto3" json:"output_fields,omitempty"` TravelTimestamp uint64 `protobuf:"varint,8,opt,name=travel_timestamp,json=travelTimestamp,proto3" json:"travel_timestamp,omitempty"` + GuaranteeTimestamp uint64 `protobuf:"varint,9,opt,name=guarantee_timestamp,json=guaranteeTimestamp,proto3" json:"guarantee_timestamp,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1370,6 +1379,13 @@ func (m *RetrieveRequest) GetTravelTimestamp() uint64 { return 0 } +func (m *RetrieveRequest) GetGuaranteeTimestamp() uint64 { + if m != nil { + return m.GuaranteeTimestamp + } + return 0 +} + type RetrieveResults struct { Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` Status *commonpb.Status `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` @@ -2228,126 +2244,127 @@ func init() { func init() { proto.RegisterFile("internal.proto", fileDescriptor_41f4a519b878ee3b) } var fileDescriptor_41f4a519b878ee3b = []byte{ - // 1927 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcd, 0x73, 0x23, 0x47, - 0x15, 0x67, 0x34, 0xb2, 0x25, 0x3d, 0xc9, 0xb6, 0xb6, 0xd7, 0xbb, 0x19, 0x7b, 0x37, 0x1b, 0x65, - 0xc2, 0x87, 0xc9, 0x16, 0xeb, 0xc5, 0x01, 0x92, 0xa2, 0x28, 0x36, 0xb1, 0x95, 0x2c, 0xaa, 0x8d, - 0x8d, 0x19, 0x6f, 0x52, 0x05, 0x97, 0xa9, 0xd6, 0x4c, 0x5b, 0x9a, 0x64, 0xbe, 0x98, 0x6e, 0x79, - 0x57, 0x39, 0x71, 0xe0, 0x46, 0xc1, 0x81, 0x2a, 0xfe, 0x0d, 0xae, 0x9c, 0xf8, 0xa8, 0x1c, 0x80, - 0x2a, 0xfe, 0x02, 0xfe, 0x0a, 0xee, 0x9c, 0xa8, 0x7e, 0xdd, 0xf3, 0x21, 0x79, 0x6c, 0x1c, 0x6f, - 0x51, 0x90, 0x22, 0xb7, 0xe9, 0xdf, 0x7b, 0xfd, 0xf1, 0x7e, 0xef, 0xbd, 0x7e, 0x4f, 0x2d, 0x58, - 0x0f, 0x62, 0xc1, 0xb2, 0x98, 0x86, 0x0f, 0xd2, 0x2c, 0x11, 0x09, 0xb9, 0x15, 0x05, 0xe1, 0xd9, - 0x8c, 0xab, 0xd1, 0x83, 0x5c, 0xb8, 0xdd, 0xf3, 0x92, 0x28, 0x4a, 0x62, 0x05, 0x6f, 0xf7, 0xb8, - 0x37, 0x65, 0x11, 0x55, 0x23, 0xfb, 0x0f, 0x06, 0xac, 0x1d, 0x24, 0x51, 0x9a, 0xc4, 0x2c, 0x16, - 0xa3, 0xf8, 0x34, 0x21, 0xb7, 0x61, 0x35, 0x4e, 0x7c, 0x36, 0x1a, 0x5a, 0xc6, 0xc0, 0xd8, 0x31, - 0x1d, 0x3d, 0x22, 0x04, 0x9a, 0x59, 0x12, 0x32, 0xab, 0x31, 0x30, 0x76, 0x3a, 0x0e, 0x7e, 0x93, - 0x47, 0x00, 0x5c, 0x50, 0xc1, 0x5c, 0x2f, 0xf1, 0x99, 0x65, 0x0e, 0x8c, 0x9d, 0xf5, 0xbd, 0xc1, - 0x83, 0xda, 0x53, 0x3c, 0x38, 0x91, 0x8a, 0x07, 0x89, 0xcf, 0x9c, 0x0e, 0xcf, 0x3f, 0xc9, 0xdb, - 0x00, 0xec, 0xb9, 0xc8, 0xa8, 0x1b, 0xc4, 0xa7, 0x89, 0xd5, 0x1c, 0x98, 0x3b, 0xdd, 0xbd, 0x57, - 0x17, 0x17, 0xd0, 0x87, 0x7f, 0xc2, 0xe6, 0x1f, 0xd2, 0x70, 0xc6, 0x8e, 0x69, 0x90, 0x39, 0x1d, - 0x9c, 0x24, 0x8f, 0x6b, 0xff, 0xdd, 0x80, 0x8d, 0xc2, 0x00, 0xdc, 0x83, 0x93, 0xef, 0xc2, 0x0a, - 0x6e, 0x81, 0x16, 0x74, 0xf7, 0xbe, 0x7c, 0xc1, 0x89, 0x16, 0xec, 0x76, 0xd4, 0x14, 0xf2, 0x01, - 0xdc, 0xe4, 0xb3, 0xb1, 0x97, 0x8b, 0x5c, 0x44, 0xb9, 0xd5, 0xc0, 0xa3, 0x5d, 0x6d, 0x25, 0x52, - 0x5d, 0x40, 0x1f, 0xe9, 0x0d, 0x58, 0x95, 0x2b, 0xcd, 0x38, 0xb2, 0xd4, 0xdd, 0xbb, 0x53, 0x6b, - 0xe4, 0x09, 0xaa, 0x38, 0x5a, 0xd5, 0xbe, 0x03, 0x5b, 0x8f, 0x99, 0x58, 0xb2, 0xce, 0x61, 0x3f, - 0x9d, 0x31, 0x2e, 0xb4, 0xf0, 0x69, 0x10, 0xb1, 0xa7, 0x81, 0xf7, 0xf1, 0xc1, 0x94, 0xc6, 0x31, - 0x0b, 0x73, 0xe1, 0xcb, 0x70, 0xe7, 0x31, 0xc3, 0x09, 0x01, 0x17, 0x81, 0xc7, 0x97, 0xc4, 0xb7, - 0xe0, 0xe6, 0x63, 0x26, 0x86, 0xfe, 0x12, 0xfc, 0x21, 0xb4, 0x8f, 0xa4, 0xb3, 0x65, 0x18, 0x7c, - 0x07, 0x5a, 0xd4, 0xf7, 0x33, 0xc6, 0xb9, 0x66, 0xf1, 0x6e, 0xed, 0x89, 0xdf, 0x51, 0x3a, 0x4e, - 0xae, 0x5c, 0x17, 0x26, 0xf6, 0x47, 0x00, 0xa3, 0x38, 0x10, 0xc7, 0x34, 0xa3, 0x11, 0xbf, 0x30, - 0xc0, 0x86, 0xd0, 0xe3, 0x82, 0x66, 0xc2, 0x4d, 0x51, 0x4f, 0x53, 0x7e, 0x85, 0x68, 0xe8, 0xe2, - 0x34, 0xb5, 0xba, 0xfd, 0x63, 0x80, 0x13, 0x91, 0x05, 0xf1, 0xe4, 0xfd, 0x80, 0x0b, 0xb9, 0xd7, - 0x99, 0xd4, 0x93, 0x46, 0x98, 0x3b, 0x1d, 0x47, 0x8f, 0x2a, 0xee, 0x68, 0x5c, 0xdd, 0x1d, 0x8f, - 0xa0, 0x9b, 0xd3, 0x7d, 0xc8, 0x27, 0xe4, 0x21, 0x34, 0xc7, 0x94, 0xb3, 0x4b, 0xe9, 0x39, 0xe4, - 0x93, 0x7d, 0xca, 0x99, 0x83, 0x9a, 0xf6, 0xa7, 0x0d, 0x78, 0xe9, 0x20, 0x63, 0x18, 0xfc, 0x61, - 0xc8, 0x3c, 0x11, 0x24, 0xb1, 0xe6, 0xfe, 0xb3, 0xaf, 0x46, 0x5e, 0x82, 0x96, 0x3f, 0x76, 0x63, - 0x1a, 0xe5, 0x64, 0xaf, 0xfa, 0xe3, 0x23, 0x1a, 0x31, 0xf2, 0x55, 0x58, 0xf7, 0x8a, 0xf5, 0x25, - 0x82, 0x31, 0xd7, 0x71, 0x96, 0x50, 0xe9, 0x2a, 0x7f, 0x3c, 0x1a, 0x5a, 0x4d, 0x74, 0x03, 0x7e, - 0x13, 0x1b, 0x7a, 0xa5, 0xd6, 0x68, 0x68, 0xad, 0xa0, 0x6c, 0x01, 0x93, 0xa4, 0xaa, 0x3b, 0xc4, - 0x5a, 0x1d, 0x18, 0x3b, 0x3d, 0x47, 0x8f, 0xc8, 0x43, 0xb8, 0x79, 0x16, 0x64, 0x62, 0x46, 0x43, - 0x1d, 0x57, 0x72, 0x17, 0x6e, 0xb5, 0x90, 0xf9, 0x3a, 0x11, 0xd9, 0x83, 0xcd, 0x74, 0x3a, 0xe7, - 0x81, 0xb7, 0x34, 0xa5, 0x8d, 0x53, 0x6a, 0x65, 0xf6, 0xa7, 0x06, 0xdc, 0x1a, 0x66, 0x49, 0xfa, - 0x79, 0xa6, 0xd0, 0xfe, 0x65, 0x03, 0x6e, 0xab, 0x48, 0x38, 0xa6, 0x99, 0x08, 0xfe, 0x43, 0x56, - 0x7c, 0x0d, 0x36, 0xca, 0x5d, 0x95, 0x42, 0xbd, 0x19, 0x5f, 0x81, 0xf5, 0x34, 0x3f, 0x87, 0xd2, - 0x6b, 0xa2, 0xde, 0x5a, 0x81, 0x2e, 0x58, 0xbb, 0x72, 0x89, 0xb5, 0xab, 0x35, 0x01, 0x33, 0x80, - 0x6e, 0xb1, 0xd0, 0x68, 0x68, 0xb5, 0x50, 0xa5, 0x0a, 0xd9, 0xbf, 0x68, 0xc0, 0xa6, 0x74, 0xea, - 0x17, 0x6c, 0x48, 0x36, 0xfe, 0xd8, 0x00, 0xa2, 0xa2, 0x63, 0x14, 0xfb, 0xec, 0xf9, 0x7f, 0x93, - 0x8b, 0x97, 0x01, 0x4e, 0x03, 0x16, 0xfa, 0x55, 0x1e, 0x3a, 0x88, 0xbc, 0x10, 0x07, 0x16, 0xb4, - 0x70, 0x91, 0xc2, 0xfe, 0x7c, 0x28, 0xab, 0x80, 0xea, 0x08, 0x74, 0x15, 0x68, 0x5f, 0xb9, 0x0a, - 0xe0, 0x34, 0x5d, 0x05, 0x7e, 0x6b, 0xc2, 0xda, 0x28, 0xe6, 0x2c, 0x13, 0xff, 0xcf, 0x81, 0x44, - 0xee, 0x42, 0x87, 0xb3, 0x49, 0x24, 0x1b, 0x93, 0xa1, 0xd5, 0x46, 0x79, 0x09, 0x48, 0xa9, 0xa7, - 0x6e, 0xd6, 0xd1, 0xd0, 0xea, 0x28, 0xd7, 0x16, 0x00, 0xb9, 0x07, 0x20, 0x82, 0x88, 0x71, 0x41, - 0xa3, 0x94, 0x5b, 0x30, 0x30, 0x77, 0x9a, 0x4e, 0x05, 0x91, 0x55, 0x20, 0x4b, 0x9e, 0x8d, 0x86, - 0xdc, 0xea, 0x0e, 0x4c, 0x59, 0xc6, 0xd5, 0x88, 0x7c, 0x0b, 0xda, 0x59, 0xf2, 0xcc, 0xf5, 0xa9, - 0xa0, 0x56, 0x0f, 0x9d, 0xb7, 0x55, 0x4b, 0xf6, 0x7e, 0x98, 0x8c, 0x9d, 0x56, 0x96, 0x3c, 0x1b, - 0x52, 0x41, 0xed, 0xbf, 0x98, 0xb0, 0x76, 0xc2, 0x68, 0xe6, 0x4d, 0xaf, 0xef, 0xb0, 0xaf, 0x43, - 0x3f, 0x63, 0x7c, 0x16, 0x0a, 0xb7, 0x34, 0x4b, 0x79, 0x6e, 0x43, 0xe1, 0x07, 0x85, 0x71, 0x39, - 0xe5, 0xe6, 0x25, 0x94, 0x37, 0x6b, 0x28, 0xb7, 0xa1, 0x57, 0xe1, 0x97, 0x5b, 0x2b, 0x68, 0xfa, - 0x02, 0x46, 0xfa, 0x60, 0xfa, 0x3c, 0x44, 0x8f, 0x75, 0x1c, 0xf9, 0x49, 0xee, 0xc3, 0x8d, 0x34, - 0xa4, 0x1e, 0x9b, 0x26, 0xa1, 0xcf, 0x32, 0x77, 0x92, 0x25, 0xb3, 0x14, 0xdd, 0xd5, 0x73, 0xfa, - 0x15, 0xc1, 0x63, 0x89, 0x93, 0x37, 0xa1, 0xed, 0xf3, 0xd0, 0x15, 0xf3, 0x94, 0xa1, 0xcb, 0xd6, - 0x2f, 0xb0, 0x7d, 0xc8, 0xc3, 0xa7, 0xf3, 0x94, 0x39, 0x2d, 0x5f, 0x7d, 0x90, 0x87, 0xb0, 0xc9, - 0x59, 0x16, 0xd0, 0x30, 0xf8, 0x84, 0xf9, 0x2e, 0x7b, 0x9e, 0x66, 0x6e, 0x1a, 0xd2, 0x18, 0x3d, - 0xdb, 0x73, 0x48, 0x29, 0x7b, 0xf7, 0x79, 0x9a, 0x1d, 0x87, 0x34, 0x26, 0x3b, 0xd0, 0x4f, 0x66, - 0x22, 0x9d, 0x09, 0x17, 0xb3, 0x8f, 0xbb, 0x81, 0x8f, 0x8e, 0x36, 0x9d, 0x75, 0x85, 0xbf, 0x87, - 0xf0, 0xc8, 0x97, 0xd4, 0x8a, 0x8c, 0x9e, 0xb1, 0xd0, 0x2d, 0x22, 0xc0, 0xea, 0x0e, 0x8c, 0x9d, - 0xa6, 0xb3, 0xa1, 0xf0, 0xa7, 0x39, 0x6c, 0xff, 0xa3, 0xe2, 0x49, 0x49, 0x3a, 0xbf, 0x86, 0x27, - 0xaf, 0xd3, 0x9e, 0xd5, 0xba, 0xdf, 0xac, 0x77, 0xff, 0x2b, 0xd0, 0x8d, 0x98, 0xc8, 0x02, 0x4f, - 0xd1, 0xac, 0xb2, 0x12, 0x14, 0x84, 0x5c, 0x12, 0x68, 0x4e, 0x03, 0xa1, 0xfc, 0xdb, 0x73, 0xf0, - 0x5b, 0x4e, 0xe2, 0x61, 0xe0, 0x31, 0xdf, 0x1d, 0x87, 0xc9, 0x58, 0xd3, 0x0a, 0x0a, 0x92, 0xc1, - 0x2c, 0xe9, 0xd4, 0x0a, 0xf1, 0x2c, 0x72, 0xbd, 0x64, 0x16, 0x0b, 0x0b, 0x30, 0x88, 0xd6, 0x15, - 0x7e, 0x34, 0x8b, 0x0e, 0x24, 0x4a, 0x5e, 0x83, 0x35, 0xad, 0x99, 0x9c, 0x9e, 0x72, 0x26, 0x90, - 0x4b, 0xd3, 0xe9, 0x29, 0xf0, 0x87, 0x88, 0x91, 0xef, 0xc1, 0x36, 0x67, 0x34, 0x64, 0xbe, 0x5b, - 0xa4, 0x2c, 0x77, 0x39, 0x32, 0xcb, 0x7c, 0x6b, 0x15, 0xfd, 0x64, 0x29, 0x8d, 0x93, 0x42, 0xe1, - 0x44, 0xcb, 0xc9, 0x2e, 0xdc, 0x2c, 0x68, 0xa8, 0x4c, 0x53, 0xcd, 0x18, 0x29, 0x45, 0xc5, 0x84, - 0xb7, 0xc0, 0x9a, 0x84, 0xc9, 0x98, 0x86, 0xee, 0xb9, 0x5d, 0xf1, 0x12, 0x36, 0x9d, 0xdb, 0x4a, - 0x7e, 0xb2, 0xb4, 0xa5, 0xfd, 0xe7, 0x06, 0x6c, 0x38, 0x92, 0x3b, 0x76, 0xc6, 0x3e, 0xf7, 0xd9, - 0xfb, 0x3a, 0x98, 0x81, 0xcf, 0x31, 0x7b, 0xbb, 0x7b, 0xd6, 0xe2, 0xb9, 0xf5, 0x2f, 0xe7, 0xd1, - 0x90, 0x3b, 0x52, 0x49, 0xba, 0x71, 0x21, 0x7f, 0x34, 0xbb, 0xbd, 0x6a, 0xf2, 0xd4, 0xa6, 0x4e, - 0xbb, 0x3e, 0x75, 0x7e, 0x6f, 0x56, 0x89, 0xfc, 0x5f, 0x4d, 0x1e, 0xcd, 0x50, 0xf3, 0x2a, 0x0c, - 0x3d, 0x82, 0xae, 0xbe, 0x5a, 0xb0, 0x1e, 0xac, 0x60, 0x3d, 0xb8, 0x57, 0x3b, 0x07, 0xe9, 0x92, - 0xb5, 0xc0, 0x51, 0x1d, 0x07, 0x97, 0xdf, 0xe4, 0xfb, 0x70, 0xe7, 0x7c, 0x12, 0x64, 0x9a, 0xa3, - 0x3c, 0x0b, 0xb6, 0x96, 0xb3, 0x20, 0x27, 0xd1, 0x27, 0xdf, 0x84, 0xcd, 0x4a, 0x1a, 0x94, 0x13, - 0xf5, 0x8f, 0x92, 0x52, 0x56, 0x4e, 0xb9, 0x7e, 0x22, 0xfc, 0xcd, 0x80, 0xb5, 0x21, 0x0b, 0x99, - 0x78, 0x81, 0x34, 0xa8, 0x69, 0x2e, 0x1a, 0xb5, 0xcd, 0xc5, 0x42, 0xf5, 0x36, 0x2f, 0xaf, 0xde, - 0xcd, 0x73, 0xd5, 0xfb, 0x55, 0xe8, 0xa5, 0x59, 0x10, 0xd1, 0x6c, 0xee, 0x7e, 0xcc, 0xe6, 0x79, - 0x2a, 0x74, 0x35, 0xf6, 0x84, 0xcd, 0xb9, 0x1d, 0xc3, 0xf6, 0xfb, 0x09, 0xf5, 0xf7, 0x69, 0x48, - 0x63, 0x8f, 0x69, 0x33, 0xf9, 0xf5, 0x2d, 0xbb, 0x07, 0x50, 0x61, 0xb2, 0x81, 0x1b, 0x56, 0x10, - 0xfb, 0x9f, 0x06, 0x74, 0xe4, 0x86, 0xd8, 0xf3, 0x5e, 0x63, 0xfd, 0x85, 0x66, 0xa7, 0x51, 0xd3, - 0xec, 0x14, 0x6d, 0x6b, 0x4e, 0x57, 0xd9, 0xc7, 0x56, 0xfa, 0xd1, 0xe6, 0x62, 0x3f, 0xfa, 0x0a, - 0x74, 0x03, 0x79, 0x20, 0x37, 0xa5, 0x62, 0xaa, 0x78, 0xea, 0x38, 0x80, 0xd0, 0xb1, 0x44, 0x64, - 0xc3, 0x9a, 0x2b, 0x60, 0xc3, 0xba, 0x7a, 0xe5, 0x86, 0x55, 0x2f, 0x82, 0x0d, 0xeb, 0x9f, 0x1a, - 0x60, 0x69, 0x8a, 0xcb, 0x57, 0x9b, 0x0f, 0x52, 0x1f, 0x1f, 0x8f, 0xee, 0x42, 0xa7, 0x88, 0x32, - 0xfd, 0x68, 0x52, 0x02, 0x92, 0xd7, 0x43, 0x16, 0x25, 0xd9, 0xfc, 0x24, 0xf8, 0x84, 0x69, 0xc3, - 0x2b, 0x88, 0xb4, 0xed, 0x68, 0x16, 0x39, 0xc9, 0x33, 0xae, 0x2f, 0xcc, 0x7c, 0x28, 0x6d, 0xf3, - 0xf0, 0x67, 0x06, 0x5e, 0x4d, 0x68, 0x79, 0xd3, 0x01, 0x05, 0xc9, 0x5b, 0x89, 0x6c, 0x41, 0x9b, - 0xc5, 0xbe, 0x92, 0xae, 0xa0, 0xb4, 0xc5, 0x62, 0x1f, 0x45, 0x23, 0x58, 0xd7, 0xaf, 0x35, 0x09, - 0xc7, 0xcb, 0x53, 0x5f, 0x99, 0xf6, 0x05, 0x4f, 0x64, 0x87, 0x7c, 0x72, 0xac, 0x35, 0x9d, 0x35, - 0xf5, 0x60, 0xa3, 0x87, 0xe4, 0x5d, 0xe8, 0xc9, 0x5d, 0x8a, 0x85, 0x5a, 0x57, 0x5e, 0xa8, 0xcb, - 0x62, 0x3f, 0x1f, 0xd8, 0xbf, 0x36, 0xe0, 0xc6, 0x39, 0x0a, 0xaf, 0x11, 0x47, 0x4f, 0xa0, 0x7d, - 0xc2, 0x26, 0x72, 0x89, 0xfc, 0x0d, 0x6a, 0xf7, 0xa2, 0x27, 0xcd, 0x0b, 0x1c, 0xe6, 0x14, 0x0b, - 0xd8, 0x1f, 0x15, 0x6e, 0x7d, 0x2f, 0x9c, 0xf1, 0xe9, 0x41, 0x12, 0xa5, 0xf2, 0x7e, 0xf0, 0xaf, - 0xf5, 0x80, 0x74, 0x79, 0x88, 0xdb, 0x3f, 0x37, 0x00, 0x30, 0x79, 0x70, 0xeb, 0x73, 0x81, 0x69, - 0x5c, 0x27, 0x30, 0x65, 0x57, 0x29, 0xbb, 0x99, 0x8c, 0x85, 0x54, 0x94, 0x77, 0x21, 0xd7, 0xbb, - 0x93, 0x78, 0x16, 0x39, 0x4a, 0x94, 0x5f, 0x10, 0xf6, 0xaf, 0x0c, 0x00, 0xbc, 0xcc, 0xd5, 0x31, - 0x96, 0x0b, 0xb3, 0x71, 0xf9, 0xcf, 0xc1, 0xc6, 0x62, 0xfa, 0xed, 0xe7, 0xe9, 0xc7, 0xd1, 0x1f, - 0x66, 0x9d, 0x0d, 0x85, 0x3f, 0x4a, 0xe3, 0x75, 0x86, 0x2a, 0x1f, 0xfc, 0xc6, 0x80, 0x5e, 0xc5, - 0x55, 0x7c, 0x91, 0x46, 0x63, 0xf9, 0xa6, 0xc0, 0xe6, 0x50, 0x66, 0x8f, 0xcb, 0x2b, 0x09, 0x15, - 0x95, 0x09, 0xb5, 0x05, 0x6d, 0xa4, 0xa4, 0x92, 0x51, 0xb1, 0xce, 0xa8, 0xfb, 0x70, 0x23, 0x63, - 0x1e, 0x8b, 0x45, 0x38, 0x77, 0xa3, 0xc4, 0x0f, 0x4e, 0x03, 0xe6, 0x63, 0x5e, 0xb5, 0x9d, 0x7e, - 0x2e, 0x38, 0xd4, 0xb8, 0xfd, 0x57, 0x03, 0xd6, 0x7f, 0x34, 0x63, 0xd9, 0xfc, 0x28, 0xf1, 0x99, - 0x3a, 0xd9, 0x67, 0x0f, 0x89, 0xb7, 0xd1, 0x16, 0x4d, 0x8f, 0x0a, 0xd7, 0xd7, 0xfe, 0x7d, 0xb8, - 0x72, 0xa7, 0xcd, 0x75, 0x88, 0x4a, 0x8a, 0xd5, 0x4f, 0xfc, 0xab, 0x50, 0x5c, 0x3a, 0x56, 0x97, - 0x69, 0x45, 0xf1, 0xcf, 0x0c, 0xe8, 0x56, 0x12, 0x53, 0x96, 0x17, 0x5d, 0x8b, 0x54, 0x09, 0x33, - 0xf0, 0xc2, 0xed, 0x7a, 0xe5, 0x43, 0x1e, 0xd9, 0x84, 0x95, 0x88, 0x4f, 0xb4, 0xc7, 0x7b, 0x8e, - 0x1a, 0x90, 0x6d, 0x68, 0x47, 0x7c, 0x82, 0xbf, 0x84, 0xf4, 0x2d, 0x5d, 0x8c, 0xa5, 0xdb, 0xca, - 0x16, 0x4a, 0x5d, 0x56, 0x25, 0x60, 0xff, 0xce, 0x00, 0xa2, 0x9b, 0x94, 0x17, 0x7a, 0xa5, 0xc5, - 0x80, 0xad, 0x3e, 0x46, 0x36, 0x54, 0x53, 0x57, 0xc5, 0x96, 0xca, 0xab, 0x79, 0xae, 0xbc, 0xde, - 0x87, 0x1b, 0x3e, 0x3b, 0xa5, 0xb2, 0x9f, 0x5a, 0x3e, 0x72, 0x5f, 0x0b, 0x8a, 0xb6, 0xef, 0xf5, - 0xb7, 0xa0, 0x53, 0xfc, 0x39, 0x42, 0xfa, 0xd0, 0x1b, 0xc5, 0x81, 0xc0, 0x9f, 0x6a, 0x41, 0x3c, - 0xe9, 0x7f, 0x89, 0x74, 0xa1, 0xf5, 0x03, 0x46, 0x43, 0x31, 0x9d, 0xf7, 0x0d, 0xd2, 0x83, 0xf6, - 0x3b, 0xe3, 0x38, 0xc9, 0x22, 0x1a, 0xf6, 0x1b, 0xfb, 0x6f, 0xfe, 0xe4, 0xdb, 0x93, 0x40, 0x4c, - 0x67, 0x63, 0x69, 0xc9, 0xae, 0x32, 0xed, 0x1b, 0x41, 0xa2, 0xbf, 0x76, 0x73, 0xaf, 0xed, 0xa2, - 0xb5, 0xc5, 0x30, 0x1d, 0x8f, 0x57, 0x11, 0x79, 0xe3, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x41, - 0xd9, 0x70, 0x5f, 0x42, 0x1a, 0x00, 0x00, + // 1950 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x5b, 0x73, 0x23, 0x47, + 0xf5, 0xff, 0x8f, 0x24, 0x5b, 0xd2, 0xd1, 0xd8, 0xd6, 0xf6, 0x7a, 0x37, 0x63, 0xef, 0x66, 0xa3, + 0x4c, 0xfe, 0x80, 0xc9, 0x16, 0xeb, 0xc5, 0x01, 0x92, 0xa2, 0x28, 0x36, 0xb1, 0x95, 0x2c, 0xaa, + 0x8d, 0x8d, 0x19, 0x6f, 0x52, 0x05, 0x2f, 0x53, 0xad, 0x99, 0xb6, 0x34, 0xc9, 0xdc, 0x98, 0xee, + 0xf1, 0xae, 0xf2, 0xc4, 0x03, 0x6f, 0x14, 0x3c, 0x50, 0xc5, 0xd7, 0xe0, 0x95, 0x27, 0x2e, 0x95, + 0x27, 0xaa, 0xf8, 0x04, 0x7c, 0x0a, 0x1e, 0xa1, 0x78, 0xa2, 0xfa, 0x74, 0xcf, 0x45, 0xb2, 0x6c, + 0xbc, 0xde, 0xa2, 0x20, 0x05, 0x6f, 0xd3, 0xbf, 0x73, 0xfa, 0x72, 0x7e, 0xe7, 0xd2, 0x47, 0x2d, + 0x58, 0x0f, 0x62, 0xc1, 0xb2, 0x98, 0x86, 0x0f, 0xd2, 0x2c, 0x11, 0x09, 0xb9, 0x15, 0x05, 0xe1, + 0x59, 0xce, 0xd5, 0xe8, 0x41, 0x21, 0xdc, 0x36, 0xbd, 0x24, 0x8a, 0x92, 0x58, 0xc1, 0xdb, 0x26, + 0xf7, 0xa6, 0x2c, 0xa2, 0x6a, 0x64, 0xff, 0xce, 0x80, 0xb5, 0x83, 0x24, 0x4a, 0x93, 0x98, 0xc5, + 0x62, 0x14, 0x9f, 0x26, 0xe4, 0x36, 0xac, 0xc6, 0x89, 0xcf, 0x46, 0x43, 0xcb, 0x18, 0x18, 0x3b, + 0x4d, 0x47, 0x8f, 0x08, 0x81, 0x56, 0x96, 0x84, 0xcc, 0x6a, 0x0c, 0x8c, 0x9d, 0xae, 0x83, 0xdf, + 0xe4, 0x11, 0x00, 0x17, 0x54, 0x30, 0xd7, 0x4b, 0x7c, 0x66, 0x35, 0x07, 0xc6, 0xce, 0xfa, 0xde, + 0xe0, 0xc1, 0xd2, 0x53, 0x3c, 0x38, 0x91, 0x8a, 0x07, 0x89, 0xcf, 0x9c, 0x2e, 0x2f, 0x3e, 0xc9, + 0xbb, 0x00, 0xec, 0xb9, 0xc8, 0xa8, 0x1b, 0xc4, 0xa7, 0x89, 0xd5, 0x1a, 0x34, 0x77, 0x7a, 0x7b, + 0xaf, 0xcf, 0x2f, 0xa0, 0x0f, 0xff, 0x84, 0xcd, 0x3e, 0xa6, 0x61, 0xce, 0x8e, 0x69, 0x90, 0x39, + 0x5d, 0x9c, 0x24, 0x8f, 0x6b, 0xff, 0xd9, 0x80, 0x8d, 0xd2, 0x00, 0xdc, 0x83, 0x93, 0x6f, 0xc3, + 0x0a, 0x6e, 0x81, 0x16, 0xf4, 0xf6, 0xfe, 0xff, 0x82, 0x13, 0xcd, 0xd9, 0xed, 0xa8, 0x29, 0xe4, + 0x23, 0xb8, 0xc9, 0xf3, 0xb1, 0x57, 0x88, 0x5c, 0x44, 0xb9, 0xd5, 0xc0, 0xa3, 0x5d, 0x6d, 0x25, + 0x52, 0x5f, 0x40, 0x1f, 0xe9, 0x2d, 0x58, 0x95, 0x2b, 0xe5, 0x1c, 0x59, 0xea, 0xed, 0xdd, 0x59, + 0x6a, 0xe4, 0x09, 0xaa, 0x38, 0x5a, 0xd5, 0xbe, 0x03, 0x5b, 0x8f, 0x99, 0x58, 0xb0, 0xce, 0x61, + 0x3f, 0xce, 0x19, 0x17, 0x5a, 0xf8, 0x34, 0x88, 0xd8, 0xd3, 0xc0, 0xfb, 0xf4, 0x60, 0x4a, 0xe3, + 0x98, 0x85, 0x85, 0xf0, 0x55, 0xb8, 0xf3, 0x98, 0xe1, 0x84, 0x80, 0x8b, 0xc0, 0xe3, 0x0b, 0xe2, + 0x5b, 0x70, 0xf3, 0x31, 0x13, 0x43, 0x7f, 0x01, 0xfe, 0x18, 0x3a, 0x47, 0xd2, 0xd9, 0x32, 0x0c, + 0xbe, 0x05, 0x6d, 0xea, 0xfb, 0x19, 0xe3, 0x5c, 0xb3, 0x78, 0x77, 0xe9, 0x89, 0xdf, 0x53, 0x3a, + 0x4e, 0xa1, 0xbc, 0x2c, 0x4c, 0xec, 0x4f, 0x00, 0x46, 0x71, 0x20, 0x8e, 0x69, 0x46, 0x23, 0x7e, + 0x61, 0x80, 0x0d, 0xc1, 0xe4, 0x82, 0x66, 0xc2, 0x4d, 0x51, 0x4f, 0x53, 0x7e, 0x85, 0x68, 0xe8, + 0xe1, 0x34, 0xb5, 0xba, 0xfd, 0x43, 0x80, 0x13, 0x91, 0x05, 0xf1, 0xe4, 0xc3, 0x80, 0x0b, 0xb9, + 0xd7, 0x99, 0xd4, 0x93, 0x46, 0x34, 0x77, 0xba, 0x8e, 0x1e, 0xd5, 0xdc, 0xd1, 0xb8, 0xba, 0x3b, + 0x1e, 0x41, 0xaf, 0xa0, 0xfb, 0x90, 0x4f, 0xc8, 0x43, 0x68, 0x8d, 0x29, 0x67, 0x97, 0xd2, 0x73, + 0xc8, 0x27, 0xfb, 0x94, 0x33, 0x07, 0x35, 0xed, 0xcf, 0x1b, 0xf0, 0xca, 0x41, 0xc6, 0x30, 0xf8, + 0xc3, 0x90, 0x79, 0x22, 0x48, 0x62, 0xcd, 0xfd, 0x8b, 0xaf, 0x46, 0x5e, 0x81, 0xb6, 0x3f, 0x76, + 0x63, 0x1a, 0x15, 0x64, 0xaf, 0xfa, 0xe3, 0x23, 0x1a, 0x31, 0xf2, 0x65, 0x58, 0xf7, 0xca, 0xf5, + 0x25, 0x82, 0x31, 0xd7, 0x75, 0x16, 0x50, 0xe9, 0x2a, 0x7f, 0x3c, 0x1a, 0x5a, 0x2d, 0x74, 0x03, + 0x7e, 0x13, 0x1b, 0xcc, 0x4a, 0x6b, 0x34, 0xb4, 0x56, 0x50, 0x36, 0x87, 0x49, 0x52, 0x55, 0x0d, + 0xb1, 0x56, 0x07, 0xc6, 0x8e, 0xe9, 0xe8, 0x11, 0x79, 0x08, 0x37, 0xcf, 0x82, 0x4c, 0xe4, 0x34, + 0xd4, 0x71, 0x25, 0x77, 0xe1, 0x56, 0x1b, 0x99, 0x5f, 0x26, 0x22, 0x7b, 0xb0, 0x99, 0x4e, 0x67, + 0x3c, 0xf0, 0x16, 0xa6, 0x74, 0x70, 0xca, 0x52, 0x99, 0xfd, 0xb9, 0x01, 0xb7, 0x86, 0x59, 0x92, + 0x7e, 0x91, 0x29, 0xb4, 0x7f, 0xde, 0x80, 0xdb, 0x2a, 0x12, 0x8e, 0x69, 0x26, 0x82, 0x7f, 0x91, + 0x15, 0x5f, 0x81, 0x8d, 0x6a, 0x57, 0xa5, 0xb0, 0xdc, 0x8c, 0x2f, 0xc1, 0x7a, 0x5a, 0x9c, 0x43, + 0xe9, 0xb5, 0x50, 0x6f, 0xad, 0x44, 0xe7, 0xac, 0x5d, 0xb9, 0xc4, 0xda, 0xd5, 0x25, 0x01, 0x33, + 0x80, 0x5e, 0xb9, 0xd0, 0x68, 0x68, 0xb5, 0x51, 0xa5, 0x0e, 0xd9, 0x3f, 0x6b, 0xc0, 0xa6, 0x74, + 0xea, 0xff, 0xd8, 0x90, 0x6c, 0xfc, 0xbe, 0x01, 0x44, 0x45, 0xc7, 0x28, 0xf6, 0xd9, 0xf3, 0x7f, + 0x27, 0x17, 0xaf, 0x02, 0x9c, 0x06, 0x2c, 0xf4, 0xeb, 0x3c, 0x74, 0x11, 0x79, 0x29, 0x0e, 0x2c, + 0x68, 0xe3, 0x22, 0xa5, 0xfd, 0xc5, 0x50, 0xde, 0x02, 0xaa, 0x23, 0xd0, 0xb7, 0x40, 0xe7, 0xca, + 0xb7, 0x00, 0x4e, 0xd3, 0xb7, 0xc0, 0xaf, 0x9b, 0xb0, 0x36, 0x8a, 0x39, 0xcb, 0xc4, 0x7f, 0x73, + 0x20, 0x91, 0xbb, 0xd0, 0xe5, 0x6c, 0x12, 0xc9, 0xc6, 0x64, 0x68, 0x75, 0x50, 0x5e, 0x01, 0x52, + 0xea, 0xa9, 0xca, 0x3a, 0x1a, 0x5a, 0x5d, 0xe5, 0xda, 0x12, 0x20, 0xf7, 0x00, 0x44, 0x10, 0x31, + 0x2e, 0x68, 0x94, 0x72, 0x0b, 0x06, 0xcd, 0x9d, 0x96, 0x53, 0x43, 0xe4, 0x2d, 0x90, 0x25, 0xcf, + 0x46, 0x43, 0x6e, 0xf5, 0x06, 0x4d, 0x79, 0x8d, 0xab, 0x11, 0xf9, 0x06, 0x74, 0xb2, 0xe4, 0x99, + 0xeb, 0x53, 0x41, 0x2d, 0x13, 0x9d, 0xb7, 0xb5, 0x94, 0xec, 0xfd, 0x30, 0x19, 0x3b, 0xed, 0x2c, + 0x79, 0x36, 0xa4, 0x82, 0xda, 0x7f, 0x6b, 0xc2, 0xda, 0x09, 0xa3, 0x99, 0x37, 0xbd, 0xbe, 0xc3, + 0xbe, 0x0a, 0xfd, 0x8c, 0xf1, 0x3c, 0x14, 0x6e, 0x65, 0x96, 0xf2, 0xdc, 0x86, 0xc2, 0x0f, 0x4a, + 0xe3, 0x0a, 0xca, 0x9b, 0x97, 0x50, 0xde, 0x5a, 0x42, 0xb9, 0x0d, 0x66, 0x8d, 0x5f, 0x6e, 0xad, + 0xa0, 0xe9, 0x73, 0x18, 0xe9, 0x43, 0xd3, 0xe7, 0x21, 0x7a, 0xac, 0xeb, 0xc8, 0x4f, 0x72, 0x1f, + 0x6e, 0xa4, 0x21, 0xf5, 0xd8, 0x34, 0x09, 0x7d, 0x96, 0xb9, 0x93, 0x2c, 0xc9, 0x53, 0x74, 0x97, + 0xe9, 0xf4, 0x6b, 0x82, 0xc7, 0x12, 0x27, 0x6f, 0x43, 0xc7, 0xe7, 0xa1, 0x2b, 0x66, 0x29, 0x43, + 0x97, 0xad, 0x5f, 0x60, 0xfb, 0x90, 0x87, 0x4f, 0x67, 0x29, 0x73, 0xda, 0xbe, 0xfa, 0x20, 0x0f, + 0x61, 0x93, 0xb3, 0x2c, 0xa0, 0x61, 0xf0, 0x19, 0xf3, 0x5d, 0xf6, 0x3c, 0xcd, 0xdc, 0x34, 0xa4, + 0x31, 0x7a, 0xd6, 0x74, 0x48, 0x25, 0x7b, 0xff, 0x79, 0x9a, 0x1d, 0x87, 0x34, 0x26, 0x3b, 0xd0, + 0x4f, 0x72, 0x91, 0xe6, 0xc2, 0xc5, 0xec, 0xe3, 0x6e, 0xe0, 0xa3, 0xa3, 0x9b, 0xce, 0xba, 0xc2, + 0x3f, 0x40, 0x78, 0xe4, 0x4b, 0x6a, 0x45, 0x46, 0xcf, 0x58, 0xe8, 0x96, 0x11, 0x60, 0xf5, 0x06, + 0xc6, 0x4e, 0xcb, 0xd9, 0x50, 0xf8, 0xd3, 0x02, 0x26, 0xbb, 0x70, 0x73, 0x92, 0xd3, 0x8c, 0xc6, + 0x82, 0xb1, 0x9a, 0xb6, 0x89, 0xda, 0xa4, 0x14, 0x95, 0x13, 0xec, 0xbf, 0xd4, 0x5c, 0x2f, 0xbd, + 0xc4, 0xaf, 0xe1, 0xfa, 0xeb, 0xf4, 0x73, 0x4b, 0xe3, 0xa5, 0xb9, 0x3c, 0x5e, 0x5e, 0x83, 0x5e, + 0xc4, 0x44, 0x16, 0x78, 0xca, 0x2f, 0x2a, 0x8d, 0x41, 0x41, 0x48, 0x3e, 0x81, 0xd6, 0x34, 0x10, + 0x2a, 0x20, 0x4c, 0x07, 0xbf, 0xe5, 0x24, 0x1e, 0x06, 0x1e, 0xf3, 0xdd, 0x71, 0x98, 0x8c, 0xb5, + 0x1f, 0x40, 0x41, 0x32, 0xfa, 0x25, 0xff, 0x5a, 0x21, 0xce, 0x23, 0xd7, 0x4b, 0xf2, 0x58, 0x58, + 0x80, 0x51, 0xb7, 0xae, 0xf0, 0xa3, 0x3c, 0x3a, 0x90, 0x28, 0x79, 0x03, 0xd6, 0xb4, 0x66, 0x72, + 0x7a, 0xca, 0x99, 0x40, 0xf2, 0x9b, 0x8e, 0xa9, 0xc0, 0xef, 0x23, 0x46, 0xbe, 0x03, 0xdb, 0x9c, + 0xd1, 0x90, 0xf9, 0x6e, 0x99, 0xe3, 0xdc, 0xe5, 0xc8, 0x2c, 0xf3, 0xad, 0x55, 0x74, 0xac, 0xa5, + 0x34, 0x4e, 0x4a, 0x85, 0x13, 0x2d, 0x97, 0x7e, 0x2b, 0x69, 0xa8, 0x4d, 0x53, 0xdd, 0x1b, 0xa9, + 0x44, 0xe5, 0x84, 0x77, 0xc0, 0x9a, 0x84, 0xc9, 0x98, 0x86, 0xee, 0xb9, 0x5d, 0xb1, 0x6a, 0x37, + 0x9d, 0xdb, 0x4a, 0x7e, 0xb2, 0xb0, 0xa5, 0xfd, 0xd7, 0x06, 0x6c, 0x38, 0x92, 0x3b, 0x76, 0xc6, + 0xbe, 0xf0, 0xe9, 0xfe, 0x26, 0x34, 0x03, 0x9f, 0x63, 0xba, 0xf7, 0xf6, 0xac, 0xf9, 0x73, 0xeb, + 0x9f, 0xda, 0xa3, 0x21, 0x77, 0xa4, 0x92, 0x74, 0xe3, 0x5c, 0xc2, 0x69, 0x76, 0xcd, 0x7a, 0xb6, + 0x2d, 0xcd, 0xb5, 0xce, 0x0b, 0xe5, 0x5a, 0xf7, 0xc2, 0x5c, 0xfb, 0x6d, 0xb3, 0xce, 0xfc, 0x7f, + 0x6a, 0xb6, 0x69, 0x4a, 0x5b, 0x57, 0xa1, 0xf4, 0x11, 0xf4, 0x74, 0xf1, 0xc2, 0x1b, 0x67, 0x05, + 0x6f, 0x9c, 0x7b, 0x4b, 0xe7, 0x20, 0xbf, 0xf2, 0xb6, 0x71, 0x54, 0x4f, 0xc3, 0xe5, 0x37, 0xf9, + 0x2e, 0xdc, 0x39, 0x9f, 0x35, 0x99, 0xe6, 0xa8, 0x48, 0x9b, 0xad, 0xc5, 0xb4, 0x29, 0x48, 0xf4, + 0xc9, 0xd7, 0x61, 0xb3, 0x96, 0x37, 0xd5, 0x44, 0xfd, 0xb3, 0xa7, 0x92, 0x55, 0x53, 0xae, 0x9f, + 0x39, 0x7f, 0x32, 0x60, 0x6d, 0xc8, 0x42, 0x26, 0x5e, 0x22, 0x6f, 0x96, 0xb4, 0x2f, 0x8d, 0xa5, + 0xed, 0xcb, 0x5c, 0x7f, 0xd0, 0xbc, 0xbc, 0x3f, 0x68, 0x9d, 0xeb, 0x0f, 0x5e, 0x07, 0x33, 0xcd, + 0x82, 0x88, 0x66, 0x33, 0xf7, 0x53, 0x36, 0x2b, 0x72, 0xa7, 0xa7, 0xb1, 0x27, 0x6c, 0xc6, 0xed, + 0x18, 0xb6, 0x3f, 0x4c, 0xa8, 0xbf, 0x4f, 0x43, 0x1a, 0x7b, 0x4c, 0x9b, 0xc9, 0xaf, 0x6f, 0xd9, + 0x3d, 0x80, 0x1a, 0x93, 0x0d, 0xdc, 0xb0, 0x86, 0xd8, 0x7f, 0x37, 0xa0, 0x2b, 0x37, 0xc4, 0xae, + 0xfa, 0x1a, 0xeb, 0xcf, 0xb5, 0x53, 0x8d, 0x25, 0xed, 0x54, 0xd9, 0x18, 0x17, 0x74, 0x55, 0x9d, + 0x72, 0xad, 0xe3, 0x6d, 0xcd, 0x77, 0xbc, 0xaf, 0x41, 0x2f, 0x90, 0x07, 0x72, 0x53, 0x2a, 0xa6, + 0x8a, 0xa7, 0xae, 0x03, 0x08, 0x1d, 0x4b, 0x44, 0xb6, 0xc4, 0x85, 0x02, 0xb6, 0xc4, 0xab, 0x57, + 0x6e, 0x89, 0xf5, 0x22, 0xd8, 0x12, 0xff, 0xa1, 0x01, 0x96, 0xa6, 0xb8, 0x7a, 0x17, 0xfa, 0x28, + 0xf5, 0xf1, 0x79, 0xea, 0x2e, 0x74, 0xcb, 0x28, 0xd3, 0xcf, 0x32, 0x15, 0x20, 0x79, 0x3d, 0x64, + 0x51, 0x92, 0xcd, 0x4e, 0x82, 0xcf, 0x98, 0x36, 0xbc, 0x86, 0x48, 0xdb, 0x8e, 0xf2, 0xc8, 0x49, + 0x9e, 0x71, 0x5d, 0x61, 0x8b, 0xa1, 0xb4, 0xcd, 0xc3, 0x1f, 0x32, 0x58, 0x9d, 0xd0, 0xf2, 0x96, + 0x03, 0x0a, 0x92, 0x55, 0x89, 0x6c, 0x41, 0x87, 0xc5, 0xbe, 0x92, 0xae, 0xa0, 0xb4, 0xcd, 0x62, + 0x1f, 0x45, 0x23, 0x58, 0xd7, 0xef, 0x41, 0x09, 0xc7, 0x6a, 0xab, 0x6b, 0xac, 0x7d, 0xc1, 0x23, + 0xdc, 0x21, 0x9f, 0x1c, 0x6b, 0x4d, 0x67, 0x4d, 0x3d, 0x09, 0xe9, 0x21, 0x79, 0x1f, 0x4c, 0xb9, + 0x4b, 0xb9, 0x50, 0xfb, 0xca, 0x0b, 0xf5, 0x58, 0xec, 0x17, 0x03, 0xfb, 0x97, 0x06, 0xdc, 0x38, + 0x47, 0xe1, 0x35, 0xe2, 0xe8, 0x09, 0x74, 0x4e, 0xd8, 0x44, 0x2e, 0x51, 0xbc, 0x72, 0xed, 0x5e, + 0xf4, 0x68, 0x7a, 0x81, 0xc3, 0x9c, 0x72, 0x01, 0xfb, 0x93, 0xd2, 0xad, 0x1f, 0x84, 0x39, 0x9f, + 0x1e, 0x24, 0x51, 0x2a, 0xeb, 0x83, 0x7f, 0xad, 0x27, 0xaa, 0xcb, 0x43, 0xdc, 0xfe, 0xa9, 0x01, + 0x80, 0xc9, 0x83, 0x5b, 0x9f, 0x0b, 0x4c, 0xe3, 0x3a, 0x81, 0x29, 0xfb, 0x56, 0xd9, 0xfe, 0x64, + 0x2c, 0xa4, 0xa2, 0xaa, 0x85, 0x5c, 0xef, 0x4e, 0xe2, 0x3c, 0x72, 0x94, 0xa8, 0x28, 0x10, 0xf6, + 0x2f, 0x0c, 0x00, 0x2c, 0xe6, 0xea, 0x18, 0x8b, 0x37, 0xb9, 0x71, 0xf9, 0x0f, 0xce, 0xc6, 0x7c, + 0xfa, 0xed, 0x17, 0xe9, 0xc7, 0xd1, 0x1f, 0xcd, 0x65, 0x36, 0x94, 0xfe, 0xa8, 0x8c, 0xd7, 0x19, + 0xaa, 0x7c, 0xf0, 0x2b, 0x03, 0xcc, 0x9a, 0xab, 0xf8, 0x3c, 0x8d, 0xc6, 0x62, 0xa5, 0xc0, 0x6e, + 0x52, 0x66, 0x8f, 0xcb, 0x6b, 0x09, 0x15, 0x55, 0x09, 0xb5, 0x05, 0x1d, 0xa4, 0xa4, 0x96, 0x51, + 0xb1, 0xce, 0xa8, 0xfb, 0x70, 0x23, 0x63, 0x1e, 0x8b, 0x45, 0x38, 0x73, 0xa3, 0xc4, 0x0f, 0x4e, + 0x03, 0xe6, 0x63, 0x5e, 0x75, 0x9c, 0x7e, 0x21, 0x38, 0xd4, 0xb8, 0xfd, 0x47, 0x03, 0xd6, 0x7f, + 0x90, 0xb3, 0x6c, 0x76, 0x94, 0xf8, 0x4c, 0x9d, 0xec, 0xc5, 0x43, 0xe2, 0x5d, 0xb4, 0x45, 0xd3, + 0xa3, 0xc2, 0xf5, 0x8d, 0x7f, 0x1e, 0xae, 0xdc, 0xe9, 0x70, 0x1d, 0xa2, 0x92, 0x62, 0xf5, 0x88, + 0x70, 0x15, 0x8a, 0x2b, 0xc7, 0xea, 0x6b, 0x5a, 0x51, 0xfc, 0x13, 0x03, 0x7a, 0xb5, 0xc4, 0x94, + 0xd7, 0x8b, 0xbe, 0x8b, 0xd4, 0x15, 0x66, 0x60, 0xc1, 0xed, 0x79, 0xd5, 0x53, 0x21, 0xd9, 0x84, + 0x95, 0x88, 0x4f, 0xb4, 0xc7, 0x4d, 0x47, 0x0d, 0xc8, 0x36, 0x74, 0x22, 0x3e, 0xc1, 0xdf, 0x5a, + 0xba, 0x4a, 0x97, 0x63, 0xe9, 0xb6, 0xaa, 0x8b, 0x52, 0xc5, 0xaa, 0x02, 0xec, 0xdf, 0x18, 0x40, + 0x74, 0x93, 0xf2, 0x52, 0xef, 0xc0, 0x18, 0xb0, 0xf5, 0xe7, 0xce, 0x86, 0xea, 0x02, 0xeb, 0xd8, + 0xc2, 0xf5, 0xda, 0x3c, 0x77, 0xbd, 0xde, 0x87, 0x1b, 0x3e, 0x3b, 0xa5, 0xb2, 0x9f, 0x5a, 0x3c, + 0x72, 0x5f, 0x0b, 0xca, 0xb6, 0xef, 0xcd, 0x77, 0xa0, 0x5b, 0xfe, 0xfd, 0x42, 0xfa, 0x60, 0x8e, + 0xe2, 0x40, 0xe0, 0x8f, 0xc1, 0x20, 0x9e, 0xf4, 0xff, 0x8f, 0xf4, 0xa0, 0xfd, 0x3d, 0x46, 0x43, + 0x31, 0x9d, 0xf5, 0x0d, 0x62, 0x42, 0xe7, 0xbd, 0x71, 0x9c, 0x64, 0x11, 0x0d, 0xfb, 0x8d, 0xfd, + 0xb7, 0x7f, 0xf4, 0xcd, 0x49, 0x20, 0xa6, 0xf9, 0x58, 0x5a, 0xb2, 0xab, 0x4c, 0xfb, 0x5a, 0x90, + 0xe8, 0xaf, 0xdd, 0xc2, 0x6b, 0xbb, 0x68, 0x6d, 0x39, 0x4c, 0xc7, 0xe3, 0x55, 0x44, 0xde, 0xfa, + 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0xab, 0xa3, 0xdc, 0x3d, 0xa4, 0x1a, 0x00, 0x00, } diff --git a/internal/proto/milvus.proto b/internal/proto/milvus.proto index d6a5f7b8e2..624fc3db61 100644 --- a/internal/proto/milvus.proto +++ b/internal/proto/milvus.proto @@ -332,6 +332,7 @@ message SearchRequest { repeated string output_fields = 8; repeated common.KeyValuePair search_params = 9; // must uint64 travel_timestamp = 10; + uint64 guarantee_timestamp = 11; // guarantee_timestamp } message RetrieveRequest { @@ -342,6 +343,7 @@ message RetrieveRequest { schema.IDs ids = 5; // must repeated string output_fields = 6; // must uint64 travel_timestamp = 7; + uint64 guarantee_timestamp = 8; // guarantee_timestamp } message RetrieveResults { diff --git a/internal/proto/milvuspb/milvus.pb.go b/internal/proto/milvuspb/milvus.pb.go index e80e6e4c78..d4b2f5fcf5 100644 --- a/internal/proto/milvuspb/milvus.pb.go +++ b/internal/proto/milvuspb/milvus.pb.go @@ -2462,6 +2462,7 @@ type SearchRequest struct { OutputFields []string `protobuf:"bytes,8,rep,name=output_fields,json=outputFields,proto3" json:"output_fields,omitempty"` SearchParams []*commonpb.KeyValuePair `protobuf:"bytes,9,rep,name=search_params,json=searchParams,proto3" json:"search_params,omitempty"` TravelTimestamp uint64 `protobuf:"varint,10,opt,name=travel_timestamp,json=travelTimestamp,proto3" json:"travel_timestamp,omitempty"` + GuaranteeTimestamp uint64 `protobuf:"varint,11,opt,name=guarantee_timestamp,json=guaranteeTimestamp,proto3" json:"guarantee_timestamp,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2562,6 +2563,13 @@ func (m *SearchRequest) GetTravelTimestamp() uint64 { return 0 } +func (m *SearchRequest) GetGuaranteeTimestamp() uint64 { + if m != nil { + return m.GuaranteeTimestamp + } + return 0 +} + type RetrieveRequest struct { Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` @@ -2570,6 +2578,7 @@ type RetrieveRequest struct { Ids *schemapb.IDs `protobuf:"bytes,5,opt,name=ids,proto3" json:"ids,omitempty"` OutputFields []string `protobuf:"bytes,6,rep,name=output_fields,json=outputFields,proto3" json:"output_fields,omitempty"` TravelTimestamp uint64 `protobuf:"varint,7,opt,name=travel_timestamp,json=travelTimestamp,proto3" json:"travel_timestamp,omitempty"` + GuaranteeTimestamp uint64 `protobuf:"varint,8,opt,name=guarantee_timestamp,json=guaranteeTimestamp,proto3" json:"guarantee_timestamp,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2649,6 +2658,13 @@ func (m *RetrieveRequest) GetTravelTimestamp() uint64 { return 0 } +func (m *RetrieveRequest) GetGuaranteeTimestamp() uint64 { + if m != nil { + return m.GuaranteeTimestamp + } + return 0 +} + type RetrieveResults struct { Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` Ids *schemapb.IDs `protobuf:"bytes,2,opt,name=ids,proto3" json:"ids,omitempty"` @@ -3627,171 +3643,173 @@ func init() { func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) } var fileDescriptor_02345ba45cc0e303 = []byte{ - // 2621 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0xcd, 0x6f, 0x1c, 0x49, - 0xf5, 0xae, 0x19, 0xcf, 0xd7, 0x9b, 0x1e, 0x7b, 0x52, 0xfe, 0x9a, 0x4c, 0x3e, 0xd6, 0xee, 0xdd, - 0xfc, 0xd6, 0x71, 0xb2, 0xce, 0xae, 0x93, 0xfc, 0x76, 0xf9, 0x5c, 0x92, 0x98, 0x24, 0x56, 0x3e, - 0xf0, 0xf6, 0x84, 0x15, 0xcb, 0x2a, 0x1a, 0xb5, 0xa7, 0x2b, 0x33, 0x2d, 0xf7, 0x74, 0x0f, 0x5d, - 0xdd, 0x76, 0x26, 0x27, 0xa4, 0x2c, 0x48, 0x08, 0xc8, 0x0a, 0xb1, 0x42, 0x82, 0x03, 0x42, 0xa0, - 0x3d, 0xc0, 0x05, 0xd0, 0x22, 0x21, 0x21, 0x0e, 0x1c, 0xf6, 0xc0, 0x01, 0x09, 0xc4, 0xdf, 0x00, - 0x47, 0xfe, 0x07, 0xd4, 0x55, 0xdd, 0x3d, 0xdd, 0xed, 0xea, 0xf1, 0x38, 0xb3, 0xc1, 0xf6, 0xad, - 0xfb, 0xd5, 0x7b, 0x55, 0xef, 0xbb, 0x5e, 0xbd, 0x2a, 0x90, 0xba, 0xba, 0xb1, 0xe3, 0xd2, 0xd5, - 0x9e, 0x6d, 0x39, 0x16, 0x9e, 0x89, 0xfe, 0xad, 0xf2, 0x9f, 0xba, 0xd4, 0xb2, 0xba, 0x5d, 0xcb, - 0xe4, 0xc0, 0xba, 0x44, 0x5b, 0x1d, 0xd2, 0x55, 0xf9, 0x9f, 0xfc, 0x29, 0x82, 0x85, 0x1b, 0x36, - 0x51, 0x1d, 0x72, 0xc3, 0x32, 0x0c, 0xd2, 0x72, 0x74, 0xcb, 0x54, 0xc8, 0xb7, 0x5c, 0x42, 0x1d, - 0xfc, 0x3a, 0x4c, 0x6e, 0xa9, 0x94, 0xd4, 0xd0, 0x22, 0x5a, 0x2e, 0xaf, 0x9d, 0x5e, 0x8d, 0xcd, - 0xed, 0xcf, 0x79, 0x8f, 0xb6, 0xaf, 0xab, 0x94, 0x28, 0x0c, 0x13, 0x2f, 0x40, 0x41, 0xdb, 0x6a, - 0x9a, 0x6a, 0x97, 0xd4, 0x32, 0x8b, 0x68, 0xb9, 0xa4, 0xe4, 0xb5, 0xad, 0xfb, 0x6a, 0x97, 0xe0, - 0x57, 0x61, 0xba, 0x15, 0xce, 0xcf, 0x11, 0xb2, 0x0c, 0x61, 0x6a, 0x00, 0x66, 0x88, 0xf3, 0x90, - 0xe7, 0xfc, 0xd5, 0x26, 0x17, 0xd1, 0xb2, 0xa4, 0xf8, 0x7f, 0xf8, 0x0c, 0x00, 0xed, 0xa8, 0xb6, - 0x46, 0x9b, 0xa6, 0xdb, 0xad, 0xe5, 0x16, 0xd1, 0x72, 0x4e, 0x29, 0x71, 0xc8, 0x7d, 0xb7, 0x2b, - 0x7f, 0x1f, 0xc1, 0xdc, 0xba, 0x6d, 0xf5, 0x8e, 0x84, 0x10, 0xf2, 0xaf, 0x11, 0xcc, 0xde, 0x56, - 0xe9, 0xd1, 0xd0, 0xe8, 0x19, 0x00, 0x47, 0xef, 0x92, 0x26, 0x75, 0xd4, 0x6e, 0x8f, 0x69, 0x75, - 0x52, 0x29, 0x79, 0x90, 0x86, 0x07, 0x90, 0xdf, 0x03, 0xe9, 0xba, 0x65, 0x19, 0x0a, 0xa1, 0x3d, - 0xcb, 0xa4, 0x04, 0x5f, 0x86, 0x3c, 0x75, 0x54, 0xc7, 0xa5, 0x3e, 0x93, 0xa7, 0x84, 0x4c, 0x36, - 0x18, 0x8a, 0xe2, 0xa3, 0xe2, 0x59, 0xc8, 0xed, 0xa8, 0x86, 0xcb, 0x79, 0x2c, 0x2a, 0xfc, 0x47, - 0x7e, 0x1f, 0xa6, 0x1a, 0x8e, 0xad, 0x9b, 0xed, 0xcf, 0x70, 0xf2, 0x52, 0x30, 0xf9, 0x3f, 0x11, - 0x9c, 0x5c, 0x27, 0xb4, 0x65, 0xeb, 0x5b, 0x47, 0xc4, 0x75, 0x65, 0x90, 0x06, 0x90, 0x8d, 0x75, - 0xa6, 0xea, 0xac, 0x12, 0x83, 0x25, 0x8c, 0x91, 0x4b, 0x1a, 0xe3, 0xe7, 0x19, 0xa8, 0x8b, 0x84, - 0x1a, 0x47, 0x7d, 0x5f, 0x0a, 0x23, 0x2a, 0xc3, 0x88, 0xce, 0xc5, 0x89, 0xfc, 0x6c, 0x30, 0x58, - 0xad, 0xc1, 0x00, 0x61, 0xe0, 0x25, 0xa5, 0xca, 0x0a, 0xa4, 0x5a, 0x83, 0xb9, 0x1d, 0xdd, 0x76, - 0x5c, 0xd5, 0x68, 0xb6, 0x3a, 0xaa, 0x69, 0x12, 0x83, 0xe9, 0x89, 0xd6, 0x26, 0x17, 0xb3, 0xcb, - 0x25, 0x65, 0xc6, 0x1f, 0xbc, 0xc1, 0xc7, 0x3c, 0x65, 0x51, 0x7c, 0x05, 0xe6, 0x7b, 0x9d, 0x3e, - 0xd5, 0x5b, 0x7b, 0x88, 0x72, 0x8c, 0x68, 0x36, 0x18, 0x8d, 0x52, 0xb1, 0x38, 0xbf, 0x6b, 0xa9, - 0xda, 0xd1, 0x88, 0xf3, 0x67, 0x08, 0x6a, 0x0a, 0x31, 0x88, 0x4a, 0x8f, 0x86, 0x0b, 0xca, 0x1f, - 0x21, 0x38, 0x7b, 0x8b, 0x38, 0x11, 0x63, 0x3a, 0xaa, 0xa3, 0x53, 0x47, 0x6f, 0xd1, 0xc3, 0x64, - 0xeb, 0x43, 0x04, 0x2f, 0xa5, 0xb2, 0x35, 0x8e, 0x6f, 0xbf, 0x09, 0x39, 0xef, 0x8b, 0xd6, 0x32, - 0x8b, 0xd9, 0xe5, 0xf2, 0xda, 0x92, 0x90, 0xe6, 0x0e, 0xe9, 0xbf, 0xeb, 0xa5, 0x8c, 0x4d, 0x55, - 0xb7, 0x15, 0x8e, 0x2f, 0xff, 0x05, 0xc1, 0x7c, 0xa3, 0x63, 0xed, 0x0e, 0x58, 0x7a, 0x11, 0x0a, - 0x8a, 0x47, 0x7b, 0x36, 0x11, 0xed, 0xf8, 0x8b, 0x30, 0xe9, 0xf4, 0x7b, 0x84, 0x25, 0x8a, 0xa9, - 0xb5, 0xe5, 0x55, 0xc1, 0xde, 0xbd, 0x9a, 0x60, 0xf2, 0x41, 0xbf, 0x47, 0x14, 0x46, 0x25, 0xff, - 0x02, 0xc1, 0xc2, 0x1e, 0x11, 0xc6, 0x51, 0xe6, 0x79, 0xa8, 0x26, 0xcc, 0xc9, 0xf5, 0x5a, 0x52, - 0xa6, 0xe3, 0xf6, 0xa4, 0xf8, 0x1c, 0x44, 0x4c, 0xdc, 0xd4, 0x35, 0x5a, 0xcb, 0x2e, 0x66, 0x97, - 0xb3, 0x4a, 0x25, 0x92, 0x16, 0x34, 0x2a, 0x7f, 0x82, 0x60, 0x9e, 0x17, 0x17, 0x9b, 0xaa, 0xed, - 0xe8, 0x87, 0x9d, 0xa0, 0xcf, 0xc1, 0x54, 0x2f, 0xe0, 0x83, 0xe3, 0x4d, 0x32, 0xbc, 0x4a, 0x08, - 0x65, 0xde, 0xfa, 0x7b, 0x04, 0xb3, 0x5e, 0x2d, 0x71, 0x9c, 0x78, 0xfe, 0x1d, 0x82, 0x99, 0xdb, - 0x2a, 0x3d, 0x4e, 0x2c, 0xff, 0xc1, 0x4f, 0xe5, 0x21, 0xcf, 0x87, 0x99, 0xa2, 0x3c, 0xc4, 0x38, - 0xd3, 0xc1, 0xe6, 0x35, 0x15, 0xe3, 0x9a, 0xca, 0x7f, 0x1c, 0xe4, 0xfc, 0x63, 0xc6, 0xf9, 0x9f, - 0x10, 0x9c, 0xb9, 0x45, 0x9c, 0x90, 0xeb, 0x23, 0xb1, 0x37, 0x8c, 0xea, 0x2d, 0xcf, 0xf8, 0xce, - 0x26, 0x64, 0xfe, 0x50, 0x76, 0x90, 0xdf, 0x22, 0x98, 0xf3, 0xd2, 0xef, 0xd1, 0x70, 0x82, 0x11, - 0x6a, 0x4f, 0xf9, 0x67, 0xfe, 0x9e, 0x17, 0xe5, 0x78, 0x1c, 0xd5, 0x09, 0x1c, 0x2f, 0x23, 0x72, - 0x3c, 0x8f, 0xb9, 0x10, 0xb2, 0xb1, 0x1e, 0xec, 0x15, 0x31, 0x98, 0xfc, 0x03, 0x04, 0xf3, 0x41, - 0xe5, 0xdb, 0x20, 0xed, 0x2e, 0x31, 0x9d, 0xe7, 0xd7, 0x67, 0x52, 0x1b, 0x19, 0x41, 0xcd, 0x7a, - 0x1a, 0x4a, 0x94, 0xaf, 0x13, 0x16, 0xb5, 0x03, 0x80, 0xfc, 0x31, 0x82, 0x85, 0x3d, 0xec, 0x8c, - 0xa3, 0xac, 0x1a, 0x14, 0x74, 0x53, 0x23, 0x8f, 0x43, 0x6e, 0x82, 0x5f, 0x6f, 0x64, 0xcb, 0xd5, - 0x0d, 0x2d, 0x64, 0x23, 0xf8, 0xc5, 0x4b, 0x20, 0x11, 0x53, 0xdd, 0x32, 0x48, 0x93, 0xe1, 0x32, - 0xa3, 0x16, 0x95, 0x32, 0x87, 0x6d, 0x78, 0x20, 0xf9, 0x87, 0x08, 0x66, 0x3c, 0x9b, 0xfa, 0x3c, - 0xd2, 0x17, 0xab, 0xb3, 0x45, 0x28, 0x47, 0x8c, 0xe6, 0xb3, 0x1b, 0x05, 0xc9, 0xdb, 0x30, 0x1b, - 0x67, 0x67, 0x1c, 0x9d, 0x9d, 0x05, 0x08, 0x2d, 0xc2, 0x7d, 0x2b, 0xab, 0x44, 0x20, 0xf2, 0x7f, - 0x10, 0x60, 0x5e, 0x5e, 0x30, 0x65, 0x1c, 0xf2, 0x21, 0xfb, 0x91, 0x4e, 0x0c, 0x2d, 0x9a, 0xc1, - 0x4a, 0x0c, 0xc2, 0x86, 0xd7, 0x41, 0x22, 0x8f, 0x1d, 0x5b, 0x6d, 0xf6, 0x54, 0x5b, 0xed, 0xf2, - 0x23, 0xce, 0x48, 0xc9, 0xa6, 0xcc, 0xc8, 0x36, 0x19, 0x95, 0xfc, 0x57, 0xaf, 0x30, 0xf1, 0x9d, - 0xf2, 0xa8, 0x4b, 0x7c, 0x06, 0x80, 0x39, 0x2d, 0x1f, 0xce, 0xf1, 0x61, 0x06, 0x61, 0xe9, 0xfc, - 0x63, 0x04, 0x55, 0x26, 0x02, 0x97, 0xa7, 0xe7, 0x4d, 0x9b, 0xa0, 0x41, 0x09, 0x9a, 0x21, 0x21, - 0xf4, 0x39, 0xc8, 0xfb, 0x8a, 0xcd, 0x8e, 0xaa, 0x58, 0x9f, 0x60, 0x1f, 0x31, 0xe4, 0x5f, 0x22, - 0x98, 0x4b, 0xa8, 0x7c, 0x1c, 0x8f, 0x7e, 0x00, 0x98, 0x4b, 0xa8, 0x0d, 0xc4, 0x0e, 0xb6, 0x9e, - 0x73, 0xc2, 0xfa, 0x3f, 0xa9, 0x24, 0xe5, 0x84, 0x9e, 0x80, 0x50, 0xf9, 0x1f, 0x08, 0x4e, 0xdf, - 0x22, 0x0e, 0x43, 0xbd, 0xee, 0xe5, 0x8e, 0x4d, 0xdb, 0x6a, 0xdb, 0x84, 0xd2, 0xe3, 0xeb, 0x1f, - 0x3f, 0xe1, 0xb5, 0x8a, 0x48, 0xa4, 0x71, 0xf4, 0xbf, 0x04, 0x12, 0x5b, 0x83, 0x68, 0x4d, 0xdb, - 0xda, 0xa5, 0xbe, 0x1f, 0x95, 0x7d, 0x98, 0x62, 0xed, 0x32, 0x87, 0x70, 0x2c, 0x47, 0x35, 0x38, - 0x82, 0xbf, 0x31, 0x30, 0x88, 0x37, 0xcc, 0x62, 0x30, 0x60, 0xcc, 0x9b, 0x9c, 0x1c, 0x5f, 0x1d, - 0x3f, 0x45, 0x30, 0x97, 0x10, 0x65, 0x1c, 0xdd, 0x5e, 0xe5, 0x95, 0x14, 0x17, 0x66, 0x6a, 0xed, - 0x25, 0x21, 0x4d, 0x64, 0x31, 0x8e, 0x2d, 0x7f, 0x8a, 0xa0, 0xea, 0x9d, 0xb6, 0x8e, 0x79, 0x42, - 0xfb, 0x55, 0x06, 0x2a, 0x1b, 0x26, 0x25, 0xb6, 0x73, 0xf4, 0x8b, 0x69, 0xfc, 0x36, 0x94, 0x99, - 0x60, 0xb4, 0xa9, 0xa9, 0x8e, 0xea, 0xef, 0x46, 0x67, 0x85, 0x7d, 0xc1, 0x9b, 0x1e, 0xde, 0xba, - 0xea, 0xa8, 0x0a, 0xd7, 0x0e, 0xf5, 0xbe, 0xf1, 0x29, 0x28, 0x75, 0x54, 0xda, 0x69, 0x6e, 0x93, - 0x3e, 0xad, 0xe5, 0x17, 0xb3, 0xcb, 0x15, 0xa5, 0xe8, 0x01, 0xee, 0x90, 0x3e, 0xc5, 0x27, 0xa1, - 0x68, 0xba, 0x5d, 0x1e, 0x3f, 0x85, 0x45, 0xb4, 0x5c, 0x51, 0x0a, 0xa6, 0xdb, 0x65, 0xd1, 0xf3, - 0xb7, 0x0c, 0x4c, 0xdd, 0x73, 0xbd, 0xd2, 0x9d, 0x75, 0x35, 0x5d, 0xc3, 0x79, 0x3e, 0x5f, 0x5b, - 0x81, 0x2c, 0x2f, 0x09, 0x3c, 0x8a, 0x9a, 0x90, 0xf1, 0x8d, 0x75, 0xaa, 0x78, 0x48, 0xec, 0xe6, - 0xc0, 0x6d, 0xb5, 0xfc, 0x1a, 0x2a, 0xcb, 0x98, 0x2d, 0x79, 0x10, 0xe6, 0x71, 0x9e, 0x28, 0xc4, - 0xb6, 0xc3, 0x0a, 0x8b, 0x89, 0x42, 0x6c, 0x9b, 0x0f, 0xca, 0x20, 0xa9, 0xad, 0x6d, 0xd3, 0xda, - 0x35, 0x88, 0xd6, 0x26, 0x1a, 0x33, 0x7b, 0x51, 0x89, 0xc1, 0xb8, 0x63, 0x78, 0x86, 0x6f, 0xb6, - 0x4c, 0xa7, 0x96, 0xe7, 0x09, 0x83, 0x43, 0x6e, 0x98, 0x8e, 0x37, 0xac, 0x11, 0x83, 0x38, 0x84, - 0x0d, 0x17, 0xf8, 0x30, 0x87, 0xf8, 0xc3, 0x6e, 0x2f, 0xa4, 0x2e, 0xf2, 0x61, 0x0e, 0xf1, 0x86, - 0x4f, 0x03, 0xeb, 0x17, 0xf1, 0x06, 0x52, 0x69, 0xd0, 0x40, 0x62, 0x00, 0x79, 0x07, 0xaa, 0x9b, - 0x86, 0xda, 0x22, 0x1d, 0xcb, 0xd0, 0x88, 0xcd, 0x36, 0x37, 0x5c, 0x85, 0xac, 0xa3, 0xb6, 0xfd, - 0xdd, 0xd3, 0xfb, 0xc4, 0x6f, 0xf9, 0x6d, 0x26, 0x1e, 0x97, 0xaf, 0x08, 0xb7, 0x99, 0xc8, 0x34, - 0x83, 0x16, 0x13, 0x9e, 0x87, 0x3c, 0x6b, 0xb6, 0xf3, 0x7d, 0x55, 0x52, 0xfc, 0x3f, 0xf9, 0x61, - 0x6c, 0xdd, 0x5b, 0xb6, 0xe5, 0xf6, 0xf0, 0x06, 0x48, 0xbd, 0x01, 0xcc, 0xb3, 0x66, 0xfa, 0xa6, - 0x96, 0x64, 0x5a, 0x89, 0x91, 0xca, 0x7f, 0xce, 0x42, 0xa5, 0x41, 0x54, 0xbb, 0xd5, 0x39, 0x0e, - 0xe7, 0x6a, 0x4f, 0xe3, 0x1a, 0x35, 0xfc, 0x94, 0xe0, 0x7d, 0xe2, 0x0b, 0x70, 0x22, 0x22, 0x50, - 0xb3, 0xed, 0x29, 0x88, 0x79, 0x86, 0xa4, 0x54, 0x7b, 0x49, 0xc5, 0xbd, 0x09, 0x45, 0x8d, 0x1a, - 0x4d, 0x66, 0xa2, 0x02, 0x33, 0x91, 0x58, 0xbe, 0x75, 0x6a, 0x30, 0xd3, 0x14, 0x34, 0xfe, 0x81, - 0x5f, 0x86, 0x8a, 0xe5, 0x3a, 0x3d, 0xd7, 0x69, 0xf2, 0xc8, 0xac, 0x15, 0x19, 0x7b, 0x12, 0x07, - 0xb2, 0xc0, 0xa5, 0xf8, 0x26, 0x54, 0x28, 0x53, 0x65, 0x50, 0x7a, 0x96, 0x46, 0xad, 0x90, 0x24, - 0x4e, 0xc7, 0x6b, 0x4f, 0x7c, 0x1e, 0xaa, 0x8e, 0xad, 0xee, 0x10, 0xa3, 0x39, 0xf0, 0x47, 0x60, - 0xfe, 0x38, 0xcd, 0xe1, 0x0f, 0x42, 0xaf, 0xfc, 0x4d, 0x06, 0xa6, 0x15, 0xe2, 0xd8, 0x3a, 0xd9, - 0x21, 0xc7, 0xc2, 0x80, 0x2b, 0x90, 0xd5, 0x35, 0xca, 0x0c, 0x38, 0x34, 0x9b, 0xe8, 0x1a, 0xdd, - 0xab, 0xf4, 0xbc, 0x40, 0xe9, 0x22, 0x65, 0x15, 0xc4, 0xca, 0xfa, 0x04, 0x45, 0x95, 0xe5, 0x65, - 0x44, 0xfa, 0xdc, 0x29, 0xd1, 0x13, 0x22, 0x33, 0x8a, 0x10, 0x89, 0xfc, 0x9f, 0x3d, 0x68, 0xfe, - 0x97, 0xef, 0xc0, 0xe4, 0x6d, 0xdd, 0x61, 0xae, 0xef, 0xe5, 0x61, 0xc4, 0x8e, 0x66, 0x2c, 0xdb, - 0x9e, 0x84, 0xa2, 0x6d, 0xed, 0xf2, 0x79, 0x33, 0x2c, 0x69, 0x14, 0x6c, 0x6b, 0x97, 0x6d, 0x1a, - 0xec, 0x6a, 0xd7, 0xb2, 0xfd, 0x6c, 0x92, 0x51, 0xfc, 0x3f, 0xf9, 0x3b, 0x68, 0x10, 0xee, 0x63, - 0x28, 0xe0, 0x6d, 0x28, 0xd8, 0x9c, 0x7e, 0xe8, 0x45, 0x57, 0x74, 0x25, 0x26, 0x57, 0x40, 0x25, - 0x7f, 0x80, 0x40, 0xba, 0x69, 0xb8, 0xf4, 0x45, 0x64, 0x1d, 0x51, 0x6f, 0x3d, 0x2b, 0xec, 0xad, - 0xcb, 0x3f, 0xca, 0x40, 0xc5, 0x67, 0x63, 0x9c, 0x72, 0x2c, 0x95, 0x95, 0x06, 0x94, 0xbd, 0x25, - 0x9b, 0x94, 0xb4, 0x83, 0x66, 0x4c, 0x79, 0x6d, 0x4d, 0x98, 0xa7, 0x63, 0x6c, 0xb0, 0x2b, 0xc2, - 0x06, 0x23, 0xfa, 0xaa, 0xe9, 0xd8, 0x7d, 0x05, 0x5a, 0x21, 0xa0, 0xfe, 0x10, 0xa6, 0x13, 0xc3, - 0x9e, 0x6f, 0x6c, 0x93, 0x7e, 0xb0, 0x11, 0x6d, 0x93, 0x3e, 0xbe, 0x12, 0xbd, 0xc8, 0x4d, 0x73, - 0xb8, 0xbb, 0x96, 0xd9, 0xbe, 0x66, 0xdb, 0x6a, 0xdf, 0xbf, 0xe8, 0xfd, 0x7c, 0xe6, 0x2d, 0x24, - 0xff, 0x0b, 0x81, 0xf4, 0x8e, 0x4b, 0xec, 0xfe, 0x61, 0xe6, 0x13, 0x0c, 0x93, 0xe4, 0x71, 0xcf, - 0xf6, 0x4b, 0x2a, 0xf6, 0xbd, 0x37, 0x1d, 0xe4, 0x04, 0xe9, 0x40, 0x90, 0x88, 0xf2, 0xc2, 0x0e, - 0xed, 0x07, 0x03, 0x31, 0xc7, 0x0a, 0x84, 0x58, 0x74, 0x67, 0x0e, 0x1c, 0xdd, 0x7f, 0x47, 0x30, - 0xb7, 0x49, 0x6c, 0xaa, 0x53, 0x87, 0x98, 0x8e, 0xdf, 0xcb, 0xd9, 0x30, 0x1f, 0x59, 0xf1, 0xa6, - 0x19, 0x4a, 0x34, 0xcd, 0x3e, 0x9b, 0x16, 0x52, 0xac, 0x7c, 0xe4, 0x6d, 0xcc, 0xa0, 0x7c, 0x0c, - 0x9a, 0xb5, 0xbc, 0xfc, 0x9e, 0x4a, 0xd9, 0xc4, 0x7c, 0x7e, 0x63, 0x87, 0x8c, 0x1f, 0xf3, 0x0b, - 0x48, 0xa1, 0x50, 0xcf, 0xef, 0x52, 0xf3, 0xe0, 0xfb, 0x50, 0xc2, 0xa3, 0xfe, 0x0f, 0x12, 0xae, - 0x93, 0x72, 0x2d, 0xfa, 0x53, 0x04, 0x8b, 0xe9, 0x5c, 0x8d, 0x13, 0xfc, 0x5f, 0x81, 0x9c, 0x6e, - 0x3e, 0xb2, 0x82, 0xd6, 0xc2, 0x8a, 0xb8, 0x0a, 0x13, 0xae, 0xcb, 0x09, 0xe5, 0x7f, 0x23, 0xa8, - 0x32, 0x57, 0x3c, 0x04, 0xf3, 0x77, 0x49, 0xb7, 0x49, 0xf5, 0x27, 0x24, 0x30, 0x7f, 0x97, 0x74, - 0x1b, 0xfa, 0x13, 0x12, 0xf3, 0x8c, 0x5c, 0xdc, 0x33, 0xe2, 0xa7, 0xb3, 0xfc, 0x90, 0xd6, 0x51, - 0x21, 0xd6, 0x3a, 0x92, 0x9f, 0x21, 0xa8, 0xdf, 0x22, 0x4e, 0x52, 0xd4, 0xc3, 0x73, 0x8a, 0x0f, - 0x11, 0x9c, 0x12, 0x32, 0x34, 0x8e, 0x3f, 0x7c, 0x21, 0xee, 0x0f, 0xe2, 0xaa, 0x7c, 0xcf, 0x92, - 0xbe, 0x2b, 0xbc, 0x01, 0xd2, 0xba, 0xdb, 0xed, 0x86, 0xb9, 0x77, 0x09, 0x24, 0x9b, 0x7f, 0xf2, - 0xa2, 0x95, 0x67, 0xf8, 0xb2, 0x0f, 0xf3, 0x4a, 0x53, 0xf9, 0x02, 0x54, 0x7c, 0x12, 0x9f, 0xeb, - 0x3a, 0x14, 0x6d, 0xff, 0xdb, 0xc7, 0x0f, 0xff, 0xe5, 0x39, 0x98, 0x51, 0x48, 0xdb, 0xf3, 0x44, - 0xfb, 0xae, 0x6e, 0x6e, 0xfb, 0xcb, 0xc8, 0x4f, 0x11, 0xcc, 0xc6, 0xe1, 0xfe, 0x5c, 0xff, 0x0f, - 0x05, 0x55, 0xd3, 0x6c, 0x42, 0xe9, 0x50, 0xb3, 0x5c, 0xe3, 0x38, 0x4a, 0x80, 0x1c, 0xd1, 0x5c, - 0x66, 0x64, 0xcd, 0xad, 0x5c, 0xe4, 0xfd, 0xf5, 0xc4, 0x15, 0x3c, 0x2e, 0x40, 0xf6, 0x9a, 0x61, - 0x54, 0x27, 0xb0, 0x04, 0xc5, 0x0d, 0xf3, 0x1e, 0xe9, 0x5a, 0x76, 0xbf, 0x8a, 0x56, 0xbe, 0x0c, - 0xd3, 0x89, 0x93, 0x14, 0x2e, 0xc2, 0xe4, 0x7d, 0xcb, 0x24, 0xd5, 0x09, 0x5c, 0x05, 0xe9, 0xba, - 0x6e, 0xaa, 0x76, 0xff, 0x5d, 0xd2, 0x72, 0x2c, 0xbb, 0xaa, 0xe1, 0x69, 0x28, 0xdf, 0x34, 0x2c, - 0xd5, 0xf1, 0x01, 0x64, 0xed, 0xa3, 0x05, 0xa8, 0xdc, 0x63, 0x4c, 0x35, 0x88, 0xbd, 0xa3, 0xb7, - 0x08, 0x6e, 0x42, 0x35, 0xf9, 0x3c, 0x0f, 0x5f, 0x14, 0x9a, 0x2f, 0xe5, 0x15, 0x5f, 0x7d, 0x98, - 0x98, 0xf2, 0x04, 0x7e, 0x1f, 0xa6, 0xe2, 0x0f, 0xe7, 0xb0, 0x38, 0x5b, 0x08, 0x5f, 0xd7, 0xed, - 0x37, 0x79, 0x13, 0x2a, 0xb1, 0x77, 0x70, 0xf8, 0xbc, 0x70, 0x6e, 0xd1, 0x5b, 0xb9, 0xfa, 0x92, - 0x10, 0x35, 0xfa, 0x56, 0x8d, 0x73, 0x1f, 0x7f, 0x0e, 0x94, 0xc2, 0xbd, 0xf0, 0xcd, 0xd0, 0x7e, - 0xdc, 0xab, 0x70, 0x62, 0xcf, 0xeb, 0x1e, 0xfc, 0x9a, 0x70, 0xfe, 0xb4, 0x57, 0x40, 0xfb, 0x2d, - 0xb1, 0x0b, 0x78, 0xef, 0x7b, 0x2f, 0xbc, 0x2a, 0xb6, 0x40, 0xda, 0x6b, 0xb7, 0xfa, 0xa5, 0x91, - 0xf1, 0x43, 0xc5, 0x7d, 0x17, 0xc1, 0x42, 0xca, 0x93, 0x1c, 0x7c, 0x59, 0x38, 0xdd, 0xf0, 0x77, - 0x45, 0xf5, 0x2b, 0x07, 0x23, 0x0a, 0x19, 0x31, 0x61, 0x3a, 0x11, 0x60, 0xf8, 0xc2, 0x28, 0x2f, - 0x61, 0x82, 0x75, 0x2f, 0x8e, 0x86, 0x1c, 0xae, 0xe7, 0x55, 0xaa, 0xf1, 0x27, 0x29, 0x29, 0xeb, - 0x89, 0x1f, 0xae, 0xec, 0x67, 0xd0, 0xf7, 0xa0, 0x12, 0x7b, 0x3b, 0x92, 0xe2, 0xf1, 0xa2, 0xf7, - 0x25, 0xfb, 0x4d, 0xfd, 0x10, 0xa4, 0xe8, 0x13, 0x0f, 0xbc, 0x9c, 0x16, 0x4b, 0x7b, 0x26, 0x3e, - 0x48, 0x28, 0x0d, 0x6e, 0x87, 0x87, 0x84, 0xd2, 0x9e, 0x4b, 0xef, 0xd1, 0x43, 0x29, 0x32, 0xff, - 0xd0, 0x50, 0x3a, 0xf0, 0x12, 0x4f, 0x11, 0xcc, 0x8b, 0x5f, 0x08, 0xe0, 0xb5, 0x34, 0xdf, 0x4c, - 0x7f, 0x0b, 0x51, 0xbf, 0x7c, 0x20, 0x9a, 0x50, 0x8b, 0xdb, 0x30, 0x15, 0xbf, 0x63, 0x4f, 0xd1, - 0xa2, 0xf0, 0xe9, 0x40, 0xfd, 0xc2, 0x48, 0xb8, 0xe1, 0x62, 0x5f, 0x87, 0x72, 0xe4, 0xfe, 0x13, - 0xbf, 0x3a, 0xc4, 0x8f, 0xa3, 0xed, 0xf5, 0xfd, 0x34, 0xd9, 0x81, 0x4a, 0xec, 0xce, 0x2b, 0xcd, - 0x87, 0x05, 0x57, 0x91, 0xf5, 0x95, 0x51, 0x50, 0x43, 0x01, 0x3a, 0x50, 0x89, 0xdd, 0x40, 0xa4, - 0xac, 0x24, 0xba, 0x70, 0x49, 0x59, 0x49, 0x78, 0xa1, 0x21, 0x4f, 0xe0, 0x6f, 0x47, 0x2e, 0x3b, - 0x62, 0x17, 0x4a, 0xf8, 0x8d, 0xa1, 0xf3, 0x88, 0xee, 0xd3, 0xea, 0x6b, 0x07, 0x21, 0x09, 0x59, - 0x78, 0x07, 0x4a, 0xe1, 0x45, 0x07, 0x3e, 0x97, 0x9a, 0x16, 0x0e, 0x62, 0xa9, 0x06, 0xe4, 0xf9, - 0xa5, 0x03, 0x96, 0x53, 0x6e, 0x0f, 0x23, 0x37, 0x12, 0xf5, 0x97, 0x85, 0x38, 0xf1, 0x7e, 0xbc, - 0x3c, 0x81, 0x15, 0xc8, 0xf3, 0x26, 0x49, 0xca, 0xa4, 0xb1, 0xd6, 0x6c, 0x7d, 0x38, 0x0e, 0xef, - 0xac, 0x4c, 0xe0, 0x6f, 0x40, 0x31, 0xe8, 0x72, 0xe1, 0x57, 0x52, 0xc2, 0x3e, 0xd6, 0x31, 0xac, - 0xef, 0x87, 0x15, 0xcc, 0xbc, 0x09, 0x39, 0xd6, 0xa6, 0xc0, 0x4b, 0xc3, 0x5a, 0x18, 0xc3, 0x78, - 0x8d, 0x75, 0x39, 0xe4, 0x09, 0xfc, 0x35, 0xc8, 0xb1, 0x52, 0x38, 0x65, 0xc6, 0x68, 0x1f, 0xa2, - 0x3e, 0x14, 0x25, 0x60, 0xf1, 0x7b, 0x08, 0x6a, 0x69, 0xe7, 0x3c, 0x9c, 0xba, 0x6f, 0x0e, 0x3b, - 0xac, 0xd6, 0xaf, 0x1e, 0x90, 0x2a, 0x14, 0xee, 0x09, 0xcc, 0x08, 0x4e, 0x17, 0xf8, 0x52, 0xda, - 0x7c, 0x29, 0x07, 0xa3, 0xfa, 0xeb, 0xa3, 0x13, 0x84, 0x6b, 0x6f, 0x42, 0x8e, 0x9d, 0x0a, 0x52, - 0x14, 0x1b, 0x3d, 0x64, 0xa4, 0x98, 0x2a, 0x76, 0xa8, 0x90, 0x27, 0x30, 0x01, 0x29, 0x7a, 0x44, - 0x48, 0xd9, 0x12, 0x05, 0xa7, 0x8b, 0xfa, 0xf9, 0x11, 0x30, 0x83, 0x65, 0xd6, 0x5c, 0x90, 0x36, - 0x6d, 0xeb, 0x71, 0x3f, 0x28, 0xca, 0xff, 0x37, 0xcb, 0x5e, 0xbf, 0xfa, 0xcd, 0xcb, 0x6d, 0xdd, - 0xe9, 0xb8, 0x5b, 0x5e, 0xdc, 0x5f, 0xe2, 0xb8, 0xaf, 0xe9, 0x96, 0xff, 0x75, 0x49, 0x37, 0x1d, - 0x62, 0x9b, 0xaa, 0x71, 0x89, 0xcd, 0xe5, 0x43, 0x7b, 0x5b, 0x5b, 0x79, 0xf6, 0x7f, 0xf9, 0xbf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x00, 0x65, 0x05, 0x2f, 0x1a, 0x34, 0x00, 0x00, + // 2643 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0xcd, 0x6f, 0xdc, 0xc6, + 0xf5, 0x9a, 0x5d, 0xed, 0xd7, 0x5b, 0xae, 0xb4, 0x19, 0x7d, 0x6d, 0xd6, 0x1f, 0x91, 0x98, 0xf8, + 0x17, 0x59, 0x76, 0xa4, 0x44, 0xb6, 0x7f, 0x49, 0x3f, 0x53, 0xdb, 0xaa, 0x6d, 0xc1, 0x1f, 0x55, + 0xb8, 0x6e, 0xd0, 0x34, 0x30, 0x16, 0xd4, 0x72, 0xbc, 0x4b, 0x88, 0x4b, 0x6e, 0x39, 0xa4, 0xe4, + 0xf5, 0xa9, 0x80, 0xd3, 0x02, 0x45, 0x5b, 0x07, 0x45, 0x83, 0x02, 0xed, 0xa1, 0x28, 0x5a, 0xe4, + 0xd0, 0x53, 0x5b, 0xa4, 0x40, 0x81, 0x9e, 0x7a, 0xc8, 0xa1, 0x87, 0x02, 0x2d, 0x7a, 0xed, 0xb5, + 0x3d, 0xe6, 0x7f, 0x28, 0x38, 0x43, 0x72, 0x49, 0x6a, 0xb8, 0x5a, 0x79, 0xe3, 0x4a, 0xba, 0x91, + 0x6f, 0xde, 0x9b, 0x79, 0xdf, 0xf3, 0xe6, 0xcd, 0x80, 0xd4, 0xd5, 0x8d, 0x5d, 0x97, 0xae, 0xf6, + 0x6c, 0xcb, 0xb1, 0xf0, 0x4c, 0xf4, 0x6f, 0x95, 0xff, 0xd4, 0xa5, 0x96, 0xd5, 0xed, 0x5a, 0x26, + 0x07, 0xd6, 0x25, 0xda, 0xea, 0x90, 0xae, 0xca, 0xff, 0xe4, 0x4f, 0x11, 0x2c, 0x5c, 0xb7, 0x89, + 0xea, 0x90, 0xeb, 0x96, 0x61, 0x90, 0x96, 0xa3, 0x5b, 0xa6, 0x42, 0xbe, 0xe3, 0x12, 0xea, 0xe0, + 0xd7, 0x61, 0x72, 0x5b, 0xa5, 0xa4, 0x86, 0x16, 0xd1, 0x72, 0x79, 0xfd, 0xf4, 0x6a, 0x6c, 0x6e, + 0x7f, 0xce, 0xbb, 0xb4, 0x7d, 0x4d, 0xa5, 0x44, 0x61, 0x98, 0x78, 0x01, 0x0a, 0xda, 0x76, 0xd3, + 0x54, 0xbb, 0xa4, 0x96, 0x59, 0x44, 0xcb, 0x25, 0x25, 0xaf, 0x6d, 0xdf, 0x53, 0xbb, 0x04, 0xbf, + 0x0a, 0xd3, 0xad, 0x70, 0x7e, 0x8e, 0x90, 0x65, 0x08, 0x53, 0x03, 0x30, 0x43, 0x9c, 0x87, 0x3c, + 0xe7, 0xaf, 0x36, 0xb9, 0x88, 0x96, 0x25, 0xc5, 0xff, 0xc3, 0x67, 0x00, 0x68, 0x47, 0xb5, 0x35, + 0xda, 0x34, 0xdd, 0x6e, 0x2d, 0xb7, 0x88, 0x96, 0x73, 0x4a, 0x89, 0x43, 0xee, 0xb9, 0x5d, 0xf9, + 0x87, 0x08, 0xe6, 0x36, 0x6c, 0xab, 0x77, 0x2c, 0x84, 0x90, 0x7f, 0x8b, 0x60, 0xf6, 0x96, 0x4a, + 0x8f, 0x87, 0x46, 0xcf, 0x00, 0x38, 0x7a, 0x97, 0x34, 0xa9, 0xa3, 0x76, 0x7b, 0x4c, 0xab, 0x93, + 0x4a, 0xc9, 0x83, 0x34, 0x3c, 0x80, 0xfc, 0x1e, 0x48, 0xd7, 0x2c, 0xcb, 0x50, 0x08, 0xed, 0x59, + 0x26, 0x25, 0xf8, 0x12, 0xe4, 0xa9, 0xa3, 0x3a, 0x2e, 0xf5, 0x99, 0x3c, 0x25, 0x64, 0xb2, 0xc1, + 0x50, 0x14, 0x1f, 0x15, 0xcf, 0x42, 0x6e, 0x57, 0x35, 0x5c, 0xce, 0x63, 0x51, 0xe1, 0x3f, 0xf2, + 0xfb, 0x30, 0xd5, 0x70, 0x6c, 0xdd, 0x6c, 0x7f, 0x8e, 0x93, 0x97, 0x82, 0xc9, 0xff, 0x89, 0xe0, + 0xc5, 0x0d, 0x42, 0x5b, 0xb6, 0xbe, 0x7d, 0x4c, 0x5c, 0x57, 0x06, 0x69, 0x00, 0xd9, 0xdc, 0x60, + 0xaa, 0xce, 0x2a, 0x31, 0x58, 0xc2, 0x18, 0xb9, 0xa4, 0x31, 0x7e, 0x99, 0x81, 0xba, 0x48, 0xa8, + 0x71, 0xd4, 0xf7, 0x95, 0x30, 0xa2, 0x32, 0x8c, 0xe8, 0x5c, 0x9c, 0xc8, 0xcf, 0x06, 0x83, 0xd5, + 0x1a, 0x0c, 0x10, 0x06, 0x5e, 0x52, 0xaa, 0xac, 0x40, 0xaa, 0x75, 0x98, 0xdb, 0xd5, 0x6d, 0xc7, + 0x55, 0x8d, 0x66, 0xab, 0xa3, 0x9a, 0x26, 0x31, 0x98, 0x9e, 0x68, 0x6d, 0x72, 0x31, 0xbb, 0x5c, + 0x52, 0x66, 0xfc, 0xc1, 0xeb, 0x7c, 0xcc, 0x53, 0x16, 0xc5, 0x97, 0x61, 0xbe, 0xd7, 0xe9, 0x53, + 0xbd, 0xb5, 0x8f, 0x28, 0xc7, 0x88, 0x66, 0x83, 0xd1, 0x28, 0x15, 0x8b, 0xf3, 0x3b, 0x96, 0xaa, + 0x1d, 0x8f, 0x38, 0x7f, 0x8a, 0xa0, 0xa6, 0x10, 0x83, 0xa8, 0xf4, 0x78, 0xb8, 0xa0, 0xfc, 0x11, + 0x82, 0xb3, 0x37, 0x89, 0x13, 0x31, 0xa6, 0xa3, 0x3a, 0x3a, 0x75, 0xf4, 0x16, 0x3d, 0x4a, 0xb6, + 0x3e, 0x44, 0xf0, 0x52, 0x2a, 0x5b, 0xe3, 0xf8, 0xf6, 0x9b, 0x90, 0xf3, 0xbe, 0x68, 0x2d, 0xb3, + 0x98, 0x5d, 0x2e, 0xaf, 0x2f, 0x09, 0x69, 0x6e, 0x93, 0xfe, 0xbb, 0x5e, 0xca, 0xd8, 0x52, 0x75, + 0x5b, 0xe1, 0xf8, 0xf2, 0x5f, 0x10, 0xcc, 0x37, 0x3a, 0xd6, 0xde, 0x80, 0xa5, 0xe7, 0xa1, 0xa0, + 0x78, 0xb4, 0x67, 0x13, 0xd1, 0x8e, 0xbf, 0x0c, 0x93, 0x4e, 0xbf, 0x47, 0x58, 0xa2, 0x98, 0x5a, + 0x5f, 0x5e, 0x15, 0xec, 0xdd, 0xab, 0x09, 0x26, 0xef, 0xf7, 0x7b, 0x44, 0x61, 0x54, 0xf2, 0xaf, + 0x10, 0x2c, 0xec, 0x13, 0x61, 0x1c, 0x65, 0x9e, 0x87, 0x6a, 0xc2, 0x9c, 0x5c, 0xaf, 0x25, 0x65, + 0x3a, 0x6e, 0x4f, 0x8a, 0xcf, 0x41, 0xc4, 0xc4, 0x4d, 0x5d, 0xa3, 0xb5, 0xec, 0x62, 0x76, 0x39, + 0xab, 0x54, 0x22, 0x69, 0x41, 0xa3, 0xf2, 0x27, 0x08, 0xe6, 0x79, 0x71, 0xb1, 0xa5, 0xda, 0x8e, + 0x7e, 0xd4, 0x09, 0xfa, 0x1c, 0x4c, 0xf5, 0x02, 0x3e, 0x38, 0xde, 0x24, 0xc3, 0xab, 0x84, 0x50, + 0xe6, 0xad, 0x7f, 0x40, 0x30, 0xeb, 0xd5, 0x12, 0x27, 0x89, 0xe7, 0xdf, 0x23, 0x98, 0xb9, 0xa5, + 0xd2, 0x93, 0xc4, 0xf2, 0x1f, 0xfd, 0x54, 0x1e, 0xf2, 0x7c, 0x94, 0x29, 0xca, 0x43, 0x8c, 0x33, + 0x1d, 0x6c, 0x5e, 0x53, 0x31, 0xae, 0xa9, 0xfc, 0xa7, 0x41, 0xce, 0x3f, 0x61, 0x9c, 0xff, 0x19, + 0xc1, 0x99, 0x9b, 0xc4, 0x09, 0xb9, 0x3e, 0x16, 0x7b, 0xc3, 0xa8, 0xde, 0xf2, 0x94, 0xef, 0x6c, + 0x42, 0xe6, 0x8f, 0x64, 0x07, 0xf9, 0x1d, 0x82, 0x39, 0x2f, 0xfd, 0x1e, 0x0f, 0x27, 0x18, 0xa1, + 0xf6, 0x94, 0x7f, 0xe1, 0xef, 0x79, 0x51, 0x8e, 0xc7, 0x51, 0x9d, 0xc0, 0xf1, 0x32, 0x22, 0xc7, + 0xf3, 0x98, 0x0b, 0x21, 0x9b, 0x1b, 0xc1, 0x5e, 0x11, 0x83, 0xc9, 0x3f, 0x42, 0x30, 0x1f, 0x54, + 0xbe, 0x0d, 0xd2, 0xee, 0x12, 0xd3, 0x79, 0x76, 0x7d, 0x26, 0xb5, 0x91, 0x11, 0xd4, 0xac, 0xa7, + 0xa1, 0x44, 0xf9, 0x3a, 0x61, 0x51, 0x3b, 0x00, 0xc8, 0x1f, 0x23, 0x58, 0xd8, 0xc7, 0xce, 0x38, + 0xca, 0xaa, 0x41, 0x41, 0x37, 0x35, 0xf2, 0x28, 0xe4, 0x26, 0xf8, 0xf5, 0x46, 0xb6, 0x5d, 0xdd, + 0xd0, 0x42, 0x36, 0x82, 0x5f, 0xbc, 0x04, 0x12, 0x31, 0xd5, 0x6d, 0x83, 0x34, 0x19, 0x2e, 0x33, + 0x6a, 0x51, 0x29, 0x73, 0xd8, 0xa6, 0x07, 0x92, 0x7f, 0x8c, 0x60, 0xc6, 0xb3, 0xa9, 0xcf, 0x23, + 0x7d, 0xbe, 0x3a, 0x5b, 0x84, 0x72, 0xc4, 0x68, 0x3e, 0xbb, 0x51, 0x90, 0xbc, 0x03, 0xb3, 0x71, + 0x76, 0xc6, 0xd1, 0xd9, 0x59, 0x80, 0xd0, 0x22, 0xdc, 0xb7, 0xb2, 0x4a, 0x04, 0x22, 0x7f, 0x86, + 0x00, 0xf3, 0xf2, 0x82, 0x29, 0xe3, 0x88, 0x0f, 0xd9, 0x0f, 0x75, 0x62, 0x68, 0xd1, 0x0c, 0x56, + 0x62, 0x10, 0x36, 0xbc, 0x01, 0x12, 0x79, 0xe4, 0xd8, 0x6a, 0xb3, 0xa7, 0xda, 0x6a, 0x97, 0x1f, + 0x71, 0x46, 0x4a, 0x36, 0x65, 0x46, 0xb6, 0xc5, 0xa8, 0xe4, 0xbf, 0x7a, 0x85, 0x89, 0xef, 0x94, + 0xc7, 0x5d, 0xe2, 0x33, 0x00, 0xcc, 0x69, 0xf9, 0x70, 0x8e, 0x0f, 0x33, 0x08, 0x4b, 0xe7, 0x1f, + 0x23, 0xa8, 0x32, 0x11, 0xb8, 0x3c, 0x3d, 0x6f, 0xda, 0x04, 0x0d, 0x4a, 0xd0, 0x0c, 0x09, 0xa1, + 0x2f, 0x40, 0xde, 0x57, 0x6c, 0x76, 0x54, 0xc5, 0xfa, 0x04, 0x07, 0x88, 0x21, 0xff, 0x1a, 0xc1, + 0x5c, 0x42, 0xe5, 0xe3, 0x78, 0xf4, 0x7d, 0xc0, 0x5c, 0x42, 0x6d, 0x20, 0x76, 0xb0, 0xf5, 0x9c, + 0x13, 0xd6, 0xff, 0x49, 0x25, 0x29, 0x2f, 0xe8, 0x09, 0x08, 0x95, 0xff, 0x81, 0xe0, 0xf4, 0x4d, + 0xe2, 0x30, 0xd4, 0x6b, 0x5e, 0xee, 0xd8, 0xb2, 0xad, 0xb6, 0x4d, 0x28, 0x3d, 0xb9, 0xfe, 0xf1, + 0x33, 0x5e, 0xab, 0x88, 0x44, 0x1a, 0x47, 0xff, 0x4b, 0x20, 0xb1, 0x35, 0x88, 0xd6, 0xb4, 0xad, + 0x3d, 0xea, 0xfb, 0x51, 0xd9, 0x87, 0x29, 0xd6, 0x1e, 0x73, 0x08, 0xc7, 0x72, 0x54, 0x83, 0x23, + 0xf8, 0x1b, 0x03, 0x83, 0x78, 0xc3, 0x2c, 0x06, 0x03, 0xc6, 0xbc, 0xc9, 0xc9, 0xc9, 0xd5, 0xf1, + 0x13, 0x04, 0x73, 0x09, 0x51, 0xc6, 0xd1, 0xed, 0x15, 0x5e, 0x49, 0x71, 0x61, 0xa6, 0xd6, 0x5f, + 0x12, 0xd2, 0x44, 0x16, 0xe3, 0xd8, 0xf2, 0xa7, 0x08, 0xaa, 0xde, 0x69, 0xeb, 0x84, 0x27, 0xb4, + 0xdf, 0x64, 0xa0, 0xb2, 0x69, 0x52, 0x62, 0x3b, 0xc7, 0xbf, 0x98, 0xc6, 0x6f, 0x43, 0x99, 0x09, + 0x46, 0x9b, 0x9a, 0xea, 0xa8, 0xfe, 0x6e, 0x74, 0x56, 0xd8, 0x17, 0xbc, 0xe1, 0xe1, 0x6d, 0xa8, + 0x8e, 0xaa, 0x70, 0xed, 0x50, 0xef, 0x1b, 0x9f, 0x82, 0x52, 0x47, 0xa5, 0x9d, 0xe6, 0x0e, 0xe9, + 0xd3, 0x5a, 0x7e, 0x31, 0xbb, 0x5c, 0x51, 0x8a, 0x1e, 0xe0, 0x36, 0xe9, 0x53, 0xfc, 0x22, 0x14, + 0x4d, 0xb7, 0xcb, 0xe3, 0xa7, 0xb0, 0x88, 0x96, 0x2b, 0x4a, 0xc1, 0x74, 0xbb, 0x2c, 0x7a, 0xfe, + 0x96, 0x81, 0xa9, 0xbb, 0xae, 0x57, 0xba, 0xb3, 0xae, 0xa6, 0x6b, 0x38, 0xcf, 0xe6, 0x6b, 0x2b, + 0x90, 0xe5, 0x25, 0x81, 0x47, 0x51, 0x13, 0x32, 0xbe, 0xb9, 0x41, 0x15, 0x0f, 0x89, 0xdd, 0x1c, + 0xb8, 0xad, 0x96, 0x5f, 0x43, 0x65, 0x19, 0xb3, 0x25, 0x0f, 0xc2, 0x3c, 0xce, 0x13, 0x85, 0xd8, + 0x76, 0x58, 0x61, 0x31, 0x51, 0x88, 0x6d, 0xf3, 0x41, 0x19, 0x24, 0xb5, 0xb5, 0x63, 0x5a, 0x7b, + 0x06, 0xd1, 0xda, 0x44, 0x63, 0x66, 0x2f, 0x2a, 0x31, 0x18, 0x77, 0x0c, 0xcf, 0xf0, 0xcd, 0x96, + 0xe9, 0xd4, 0xf2, 0x3c, 0x61, 0x70, 0xc8, 0x75, 0xd3, 0xf1, 0x86, 0x35, 0x62, 0x10, 0x87, 0xb0, + 0xe1, 0x02, 0x1f, 0xe6, 0x10, 0x7f, 0xd8, 0xed, 0x85, 0xd4, 0x45, 0x3e, 0xcc, 0x21, 0xde, 0xf0, + 0x69, 0x60, 0xfd, 0x22, 0xde, 0x40, 0x2a, 0x0d, 0x1a, 0x48, 0x0c, 0x20, 0xef, 0x42, 0x75, 0xcb, + 0x50, 0x5b, 0xa4, 0x63, 0x19, 0x1a, 0xb1, 0xd9, 0xe6, 0x86, 0xab, 0x90, 0x75, 0xd4, 0xb6, 0xbf, + 0x7b, 0x7a, 0x9f, 0xf8, 0x2d, 0xbf, 0xcd, 0xc4, 0xe3, 0xf2, 0x15, 0xe1, 0x36, 0x13, 0x99, 0x66, + 0xd0, 0x62, 0xc2, 0xf3, 0x90, 0x67, 0xcd, 0x76, 0xbe, 0xaf, 0x4a, 0x8a, 0xff, 0x27, 0x3f, 0x88, + 0xad, 0x7b, 0xd3, 0xb6, 0xdc, 0x1e, 0xde, 0x04, 0xa9, 0x37, 0x80, 0x79, 0xd6, 0x4c, 0xdf, 0xd4, + 0x92, 0x4c, 0x2b, 0x31, 0x52, 0xf9, 0xb3, 0x2c, 0x54, 0x1a, 0x44, 0xb5, 0x5b, 0x9d, 0x93, 0x70, + 0xae, 0xf6, 0x34, 0xae, 0x51, 0xc3, 0x4f, 0x09, 0xde, 0x27, 0xbe, 0x00, 0x2f, 0x44, 0x04, 0x6a, + 0xb6, 0x3d, 0x05, 0x31, 0xcf, 0x90, 0x94, 0x6a, 0x2f, 0xa9, 0xb8, 0x37, 0xa1, 0xa8, 0x51, 0xa3, + 0xc9, 0x4c, 0x54, 0x60, 0x26, 0x12, 0xcb, 0xb7, 0x41, 0x0d, 0x66, 0x9a, 0x82, 0xc6, 0x3f, 0xf0, + 0xcb, 0x50, 0xb1, 0x5c, 0xa7, 0xe7, 0x3a, 0x4d, 0x1e, 0x99, 0xb5, 0x22, 0x63, 0x4f, 0xe2, 0x40, + 0x16, 0xb8, 0x14, 0xdf, 0x80, 0x0a, 0x65, 0xaa, 0x0c, 0x4a, 0xcf, 0xd2, 0xa8, 0x15, 0x92, 0xc4, + 0xe9, 0x78, 0xed, 0x89, 0xcf, 0x43, 0xd5, 0xb1, 0xd5, 0x5d, 0x62, 0x34, 0x07, 0xfe, 0x08, 0xcc, + 0x1f, 0xa7, 0x39, 0xfc, 0x7e, 0x00, 0xc6, 0x6b, 0x30, 0xd3, 0x76, 0x55, 0x5b, 0x35, 0x1d, 0x42, + 0x22, 0xd8, 0x65, 0x86, 0x8d, 0xc3, 0xa1, 0x90, 0x40, 0xfe, 0x57, 0x06, 0xa6, 0x15, 0xe2, 0xd8, + 0x3a, 0xd9, 0x25, 0x27, 0xc2, 0xe2, 0x2b, 0x90, 0xd5, 0x35, 0xca, 0x2c, 0x3e, 0x34, 0xfd, 0xe8, + 0x1a, 0xdd, 0x6f, 0xa5, 0xbc, 0xc0, 0x4a, 0x22, 0xed, 0x16, 0x0e, 0xa5, 0xdd, 0x62, 0xaa, 0x76, + 0x3f, 0x41, 0x51, 0xed, 0x7a, 0x39, 0x97, 0x3e, 0x73, 0xd2, 0xf5, 0xa4, 0xce, 0x8c, 0x22, 0x75, + 0x62, 0x87, 0xc9, 0x1e, 0x76, 0x87, 0x91, 0x6f, 0xc3, 0xe4, 0x2d, 0xdd, 0x61, 0xc1, 0xe5, 0x65, + 0x7a, 0xc4, 0x0e, 0x7f, 0x2c, 0x9f, 0xbf, 0x08, 0x45, 0xdb, 0xda, 0xe3, 0xf3, 0x66, 0x58, 0x5a, + 0x2a, 0xd8, 0xd6, 0x1e, 0xdb, 0x96, 0xd8, 0xe5, 0xb1, 0x65, 0xfb, 0xf9, 0x2a, 0xa3, 0xf8, 0x7f, + 0xf2, 0xf7, 0xd0, 0x20, 0xa1, 0x8c, 0xa1, 0x80, 0xb7, 0xa1, 0x60, 0x73, 0xfa, 0xa1, 0x57, 0x69, + 0xd1, 0x95, 0x98, 0x5c, 0x01, 0x95, 0xfc, 0x01, 0x02, 0xe9, 0x86, 0xe1, 0xd2, 0xe7, 0x91, 0xd7, + 0x44, 0xdd, 0xfb, 0xac, 0xb0, 0x7b, 0x2f, 0xff, 0x24, 0x03, 0x15, 0x9f, 0x8d, 0x71, 0x0a, 0xbe, + 0x54, 0x56, 0x1a, 0x50, 0xf6, 0x96, 0x6c, 0x52, 0xd2, 0x0e, 0xda, 0x3d, 0xe5, 0xf5, 0x75, 0xe1, + 0x4e, 0x10, 0x63, 0x83, 0x5d, 0x42, 0x36, 0x18, 0xd1, 0xd7, 0x4d, 0xc7, 0xee, 0x2b, 0xd0, 0x0a, + 0x01, 0xf5, 0x07, 0x30, 0x9d, 0x18, 0xf6, 0x7c, 0x63, 0x87, 0xf4, 0x83, 0xad, 0x6e, 0x87, 0xf4, + 0xf1, 0xe5, 0xe8, 0x55, 0x71, 0x9a, 0xc3, 0xdd, 0xb1, 0xcc, 0xf6, 0x55, 0xdb, 0x56, 0xfb, 0xfe, + 0x55, 0xf2, 0x17, 0x33, 0x6f, 0x21, 0xf9, 0xdf, 0x08, 0xa4, 0x77, 0x5c, 0x62, 0xf7, 0x8f, 0x32, + 0x01, 0x61, 0x98, 0x24, 0x8f, 0x7a, 0xb6, 0x5f, 0xb4, 0xb1, 0xef, 0xfd, 0xf9, 0x23, 0x27, 0xc8, + 0x1f, 0x82, 0xcc, 0x95, 0x17, 0xf6, 0x80, 0x3f, 0x18, 0x88, 0x39, 0x56, 0x20, 0xc4, 0xa2, 0x3b, + 0x73, 0xe8, 0xe8, 0xfe, 0x3b, 0x82, 0xb9, 0x2d, 0x62, 0x53, 0x9d, 0x3a, 0xc4, 0x74, 0xfc, 0x6e, + 0xd1, 0xa6, 0xf9, 0xd0, 0x8a, 0xb7, 0xe5, 0x50, 0xa2, 0x2d, 0xf7, 0xf9, 0x34, 0xa9, 0x62, 0x05, + 0x2a, 0x6f, 0x94, 0x06, 0x05, 0x6a, 0xd0, 0x0e, 0xe6, 0x05, 0xfe, 0x54, 0xca, 0x36, 0xe9, 0xf3, + 0x1b, 0x3b, 0xc6, 0xfc, 0x94, 0x5f, 0x71, 0x0a, 0x85, 0x7a, 0x76, 0x97, 0x9a, 0x07, 0xdf, 0x87, + 0x12, 0x1e, 0xf5, 0x7f, 0x90, 0x70, 0x9d, 0x94, 0x8b, 0xd7, 0x9f, 0x23, 0x58, 0x4c, 0xe7, 0x6a, + 0x9c, 0xe0, 0xff, 0x1a, 0xe4, 0x74, 0xf3, 0xa1, 0x15, 0x34, 0x2f, 0x56, 0xc4, 0x75, 0x9e, 0x70, + 0x5d, 0x4e, 0x28, 0xff, 0x07, 0x41, 0x95, 0xb9, 0xe2, 0x11, 0x98, 0xbf, 0x4b, 0xba, 0x4d, 0xaa, + 0x3f, 0x26, 0x81, 0xf9, 0xbb, 0xa4, 0xdb, 0xd0, 0x1f, 0x93, 0x98, 0x67, 0xe4, 0xe2, 0x9e, 0x11, + 0x3f, 0xff, 0xe5, 0x87, 0x34, 0xa7, 0x0a, 0xb1, 0xe6, 0x94, 0xfc, 0x14, 0x41, 0xfd, 0x26, 0x71, + 0x92, 0xa2, 0x1e, 0x9d, 0x53, 0x7c, 0x88, 0xe0, 0x94, 0x90, 0xa1, 0x71, 0xfc, 0xe1, 0x4b, 0x71, + 0x7f, 0x10, 0xd7, 0xfd, 0xfb, 0x96, 0xf4, 0x5d, 0xe1, 0x0d, 0x90, 0x36, 0xdc, 0x6e, 0x37, 0xcc, + 0xbd, 0x4b, 0x20, 0xd9, 0xfc, 0x93, 0x97, 0xc5, 0x3c, 0xc3, 0x97, 0x7d, 0x98, 0x57, 0xfc, 0xca, + 0x17, 0xa0, 0xe2, 0x93, 0xf8, 0x5c, 0xd7, 0xa1, 0x68, 0xfb, 0xdf, 0x3e, 0x7e, 0xf8, 0x2f, 0xcf, + 0xc1, 0x8c, 0x42, 0xda, 0x9e, 0x27, 0xda, 0x77, 0x74, 0x73, 0xc7, 0x5f, 0x46, 0x7e, 0x82, 0x60, + 0x36, 0x0e, 0xf7, 0xe7, 0xfa, 0x7f, 0x28, 0xa8, 0x9a, 0x66, 0x13, 0x4a, 0x87, 0x9a, 0xe5, 0x2a, + 0xc7, 0x51, 0x02, 0xe4, 0x88, 0xe6, 0x32, 0x23, 0x6b, 0x6e, 0xe5, 0x22, 0xef, 0xe0, 0x27, 0x2e, + 0xf9, 0x71, 0x01, 0xb2, 0x57, 0x0d, 0xa3, 0x3a, 0x81, 0x25, 0x28, 0x6e, 0x9a, 0x77, 0x49, 0xd7, + 0xb2, 0xfb, 0x55, 0xb4, 0xf2, 0x55, 0x98, 0x4e, 0x9c, 0xd5, 0x70, 0x11, 0x26, 0xef, 0x59, 0x26, + 0xa9, 0x4e, 0xe0, 0x2a, 0x48, 0xd7, 0x74, 0x53, 0xb5, 0xfb, 0xef, 0x92, 0x96, 0x63, 0xd9, 0x55, + 0x0d, 0x4f, 0x43, 0xf9, 0x86, 0x61, 0xa9, 0x8e, 0x0f, 0x20, 0xeb, 0x1f, 0x2d, 0x40, 0xe5, 0x2e, + 0x63, 0xaa, 0x41, 0xec, 0x5d, 0xbd, 0x45, 0x70, 0x13, 0xaa, 0xc9, 0x07, 0x80, 0xf8, 0xa2, 0xd0, + 0x7c, 0x29, 0xef, 0x04, 0xeb, 0xc3, 0xc4, 0x94, 0x27, 0xf0, 0xfb, 0x30, 0x15, 0x7f, 0x9a, 0x87, + 0xc5, 0xd9, 0x42, 0xf8, 0x7e, 0xef, 0xa0, 0xc9, 0x9b, 0x50, 0x89, 0xbd, 0xb4, 0xc3, 0xe7, 0x85, + 0x73, 0x8b, 0x5e, 0xe3, 0xd5, 0x97, 0x84, 0xa8, 0xd1, 0xd7, 0x70, 0x9c, 0xfb, 0xf8, 0x83, 0xa3, + 0x14, 0xee, 0x85, 0xaf, 0x92, 0x0e, 0xe2, 0x5e, 0x85, 0x17, 0xf6, 0xbd, 0x1f, 0xc2, 0xaf, 0x09, + 0xe7, 0x4f, 0x7b, 0x67, 0x74, 0xd0, 0x12, 0x7b, 0x80, 0xf7, 0xbf, 0x28, 0xc3, 0xab, 0x62, 0x0b, + 0xa4, 0xbd, 0xa7, 0xab, 0xaf, 0x8d, 0x8c, 0x1f, 0x2a, 0xee, 0xfb, 0x08, 0x16, 0x52, 0x1e, 0xfd, + 0xe0, 0x4b, 0xc2, 0xe9, 0x86, 0xbf, 0x5c, 0xaa, 0x5f, 0x3e, 0x1c, 0x51, 0xc8, 0x88, 0x09, 0xd3, + 0x89, 0x00, 0xc3, 0x17, 0x46, 0x79, 0x6b, 0x13, 0xac, 0x7b, 0x71, 0x34, 0xe4, 0x70, 0x3d, 0xaf, + 0x52, 0x8d, 0x3f, 0x7a, 0x49, 0x59, 0x4f, 0xfc, 0x34, 0xe6, 0x20, 0x83, 0xbe, 0x07, 0x95, 0xd8, + 0xeb, 0x94, 0x14, 0x8f, 0x17, 0xbd, 0x60, 0x39, 0x68, 0xea, 0x07, 0x20, 0x45, 0x1f, 0x91, 0xe0, + 0xe5, 0xb4, 0x58, 0xda, 0x37, 0xf1, 0x61, 0x42, 0x69, 0x70, 0xff, 0x3c, 0x24, 0x94, 0xf6, 0x5d, + 0xab, 0x8f, 0x1e, 0x4a, 0x91, 0xf9, 0x87, 0x86, 0xd2, 0xa1, 0x97, 0x78, 0x82, 0x60, 0x5e, 0xfc, + 0x06, 0x01, 0xaf, 0xa7, 0xf9, 0x66, 0xfa, 0x6b, 0x8b, 0xfa, 0xa5, 0x43, 0xd1, 0x84, 0x5a, 0xdc, + 0x81, 0xa9, 0xf8, 0x2d, 0x7e, 0x8a, 0x16, 0x85, 0x8f, 0x13, 0xea, 0x17, 0x46, 0xc2, 0x0d, 0x17, + 0xfb, 0x26, 0x94, 0x23, 0x37, 0xac, 0xf8, 0xd5, 0x21, 0x7e, 0x1c, 0x6d, 0xe0, 0x1f, 0xa4, 0xc9, + 0x0e, 0x54, 0x62, 0xb7, 0x6a, 0x69, 0x3e, 0x2c, 0xb8, 0xec, 0xac, 0xaf, 0x8c, 0x82, 0x1a, 0x0a, + 0xd0, 0x81, 0x4a, 0xec, 0x8e, 0x23, 0x65, 0x25, 0xd1, 0x95, 0x4e, 0xca, 0x4a, 0xc2, 0x2b, 0x13, + 0x79, 0x02, 0x7f, 0x37, 0x72, 0x9d, 0x12, 0xbb, 0xb2, 0xc2, 0x6f, 0x0c, 0x9d, 0x47, 0x74, 0x63, + 0x57, 0x5f, 0x3f, 0x0c, 0x49, 0xc8, 0xc2, 0x3b, 0x50, 0x0a, 0xaf, 0x52, 0xf0, 0xb9, 0xd4, 0xb4, + 0x70, 0x18, 0x4b, 0x35, 0x20, 0xcf, 0xaf, 0x35, 0xb0, 0x9c, 0x72, 0x3f, 0x19, 0xb9, 0xf3, 0xa8, + 0xbf, 0x2c, 0xc4, 0x89, 0x77, 0xfc, 0xe5, 0x09, 0xac, 0x40, 0x9e, 0x37, 0x49, 0x52, 0x26, 0x8d, + 0x35, 0x7f, 0xeb, 0xc3, 0x71, 0x78, 0x67, 0x65, 0x02, 0x7f, 0x0b, 0x8a, 0x41, 0x97, 0x0b, 0xbf, + 0x92, 0x12, 0xf6, 0xb1, 0x16, 0x63, 0xfd, 0x20, 0xac, 0x60, 0xe6, 0x2d, 0xc8, 0xb1, 0x36, 0x05, + 0x5e, 0x1a, 0xd6, 0xc2, 0x18, 0xc6, 0x6b, 0xac, 0xcb, 0x21, 0x4f, 0xe0, 0x6f, 0x40, 0x8e, 0x95, + 0xc2, 0x29, 0x33, 0x46, 0xfb, 0x10, 0xf5, 0xa1, 0x28, 0x01, 0x8b, 0x3f, 0x40, 0x50, 0x4b, 0x3b, + 0xe7, 0xe1, 0xd4, 0x7d, 0x73, 0xd8, 0x61, 0xb5, 0x7e, 0xe5, 0x90, 0x54, 0xa1, 0x70, 0x8f, 0x61, + 0x46, 0x70, 0xba, 0xc0, 0x6b, 0x69, 0xf3, 0xa5, 0x1c, 0x8c, 0xea, 0xaf, 0x8f, 0x4e, 0x10, 0xae, + 0xbd, 0x05, 0x39, 0x76, 0x2a, 0x48, 0x51, 0x6c, 0xf4, 0x90, 0x91, 0x62, 0xaa, 0xd8, 0xa1, 0x42, + 0x9e, 0xc0, 0x04, 0xa4, 0xe8, 0x11, 0x21, 0x65, 0x4b, 0x14, 0x9c, 0x2e, 0xea, 0xe7, 0x47, 0xc0, + 0x0c, 0x96, 0x59, 0x77, 0x41, 0xda, 0xb2, 0xad, 0x47, 0xfd, 0xa0, 0x28, 0xff, 0xdf, 0x2c, 0x7b, + 0xed, 0xca, 0xb7, 0x2f, 0xb5, 0x75, 0xa7, 0xe3, 0x6e, 0x7b, 0x71, 0xbf, 0xc6, 0x71, 0x5f, 0xd3, + 0x2d, 0xff, 0x6b, 0x4d, 0x37, 0x1d, 0x62, 0x9b, 0xaa, 0xb1, 0xc6, 0xe6, 0xf2, 0xa1, 0xbd, 0xed, + 0xed, 0x3c, 0xfb, 0xbf, 0xf4, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x05, 0x53, 0xed, 0x7c, + 0x34, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/internal/proxy/task.go b/internal/proxy/task.go index d618939d7e..3ccfa739ef 100644 --- a/internal/proxy/task.go +++ b/internal/proxy/task.go @@ -1317,7 +1317,12 @@ func (st *SearchTask) PreExecute(ctx context.Context) error { if travelTimestamp == 0 { travelTimestamp = st.BeginTs() } + guaranteeTimestamp := st.query.GuaranteeTimestamp + if guaranteeTimestamp == 0 { + guaranteeTimestamp = st.BeginTs() + } st.SearchRequest.TravelTimestamp = travelTimestamp + st.SearchRequest.GuaranteeTimestamp = guaranteeTimestamp st.SearchRequest.ResultChannelID = Params.SearchResultChannelNames[0] st.SearchRequest.DbID = 0 // todo @@ -2090,7 +2095,12 @@ func (rt *RetrieveTask) PreExecute(ctx context.Context) error { if travelTimestamp == 0 { travelTimestamp = rt.BeginTs() } + guaranteeTimestamp := rt.retrieve.GuaranteeTimestamp + if guaranteeTimestamp == 0 { + guaranteeTimestamp = rt.BeginTs() + } rt.RetrieveRequest.TravelTimestamp = travelTimestamp + rt.RetrieveRequest.GuaranteeTimestamp = guaranteeTimestamp rt.ResultChannelID = Params.RetrieveResultChannelNames[0] rt.DbID = 0 // todo(yukun) diff --git a/internal/querynode/query_collection.go b/internal/querynode/query_collection.go index a6627c84aa..4a17a48d32 100644 --- a/internal/querynode/query_collection.go +++ b/internal/querynode/query_collection.go @@ -36,6 +36,12 @@ import ( "github.com/milvus-io/milvus/internal/util/typeutil" ) +type queryMsg interface { + msgstream.TsMsg + GuaranteeTs() Timestamp + TravelTs() Timestamp +} + type queryCollection struct { releaseCtx context.Context cancel context.CancelFunc @@ -45,7 +51,7 @@ type queryCollection struct { streaming *streaming unsolvedMsgMu sync.Mutex // guards unsolvedMsg - unsolvedMsg []msgstream.TsMsg + unsolvedMsg []queryMsg tSafeWatchers map[Channel]*tSafeWatcher watcherSelectCase []reflect.SelectCase @@ -66,7 +72,7 @@ func newQueryCollection(releaseCtx context.Context, streaming *streaming, factory msgstream.Factory) *queryCollection { - unsolvedMsg := make([]msgstream.TsMsg, 0) + unsolvedMsg := make([]queryMsg, 0) queryStream, _ := factory.NewQueryMsgStream(releaseCtx) queryResultStream, _ := factory.NewQueryMsgStream(releaseCtx) @@ -130,13 +136,13 @@ func (q *queryCollection) register() { } } -func (q *queryCollection) addToUnsolvedMsg(msg msgstream.TsMsg) { +func (q *queryCollection) addToUnsolvedMsg(msg queryMsg) { q.unsolvedMsgMu.Lock() defer q.unsolvedMsgMu.Unlock() q.unsolvedMsg = append(q.unsolvedMsg, msg) } -func (q *queryCollection) popAllUnsolvedMsg() []msgstream.TsMsg { +func (q *queryCollection) popAllUnsolvedMsg() []queryMsg { q.unsolvedMsgMu.Lock() defer q.unsolvedMsgMu.Unlock() tmp := q.unsolvedMsg @@ -250,7 +256,7 @@ func (q *queryCollection) loadBalance(msg *msgstream.LoadBalanceSegmentsMsg) { // zap.Int("num of segment", len(msg.Infos))) } -func (q *queryCollection) receiveQueryMsg(msg msgstream.TsMsg) { +func (q *queryCollection) receiveQueryMsg(msg queryMsg) { msgType := msg.Type() var collectionID UniqueID var msgTypeStr string @@ -304,7 +310,8 @@ func (q *queryCollection) receiveQueryMsg(msg msgstream.TsMsg) { } return } - if msg.BeginTs() >= collection.getReleaseTime() { + guaranteeTs := msg.GuaranteeTs() + if guaranteeTs >= collection.getReleaseTime() { err = fmt.Errorf("retrieve failed, collection has been released, msgID = %d, collectionID = %d", msg.ID(), collectionID) log.Error(err.Error()) err = q.publishFailedQueryResult(msg, err.Error()) @@ -321,23 +328,23 @@ func (q *queryCollection) receiveQueryMsg(msg msgstream.TsMsg) { } serviceTime := q.getServiceableTime() - if msg.BeginTs() > serviceTime { - bt, _ := tsoutil.ParseTS(msg.BeginTs()) + if guaranteeTs > serviceTime { + gt, _ := tsoutil.ParseTS(guaranteeTs) st, _ := tsoutil.ParseTS(serviceTime) log.Debug("query node::receiveQueryMsg: add to unsolvedMsg", zap.Any("collectionID", q.collectionID), - zap.Any("sm.BeginTs", bt), + zap.Any("sm.GuaranteeTimestamp", gt), zap.Any("serviceTime", st), - zap.Any("delta seconds", (msg.BeginTs()-serviceTime)/(1000*1000*1000)), + zap.Any("delta seconds", (guaranteeTs-serviceTime)/(1000*1000*1000)), zap.Any("msgID", msg.ID()), zap.String("msgType", msgTypeStr), ) q.addToUnsolvedMsg(msg) sp.LogFields( oplog.String("send to unsolved buffer", "send to unsolved buffer"), - oplog.Object("begin ts", bt), + oplog.Object("guarantee ts", gt), oplog.Object("serviceTime", st), - oplog.Float64("delta seconds", float64(msg.BeginTs()-serviceTime)/(1000.0*1000.0*1000.0)), + oplog.Float64("delta seconds", float64(guaranteeTs-serviceTime)/(1000.0*1000.0*1000.0)), ) sp.Finish() return @@ -401,29 +408,30 @@ func (q *queryCollection) doUnsolvedQueryMsg() { q.setServiceableTime(serviceTime) //log.Debug("query node::doUnsolvedMsg: setServiceableTime", zap.Any("serviceTime", st)) - unSolvedMsg := make([]msgstream.TsMsg, 0) + unSolvedMsg := make([]queryMsg, 0) tempMsg := q.popAllUnsolvedMsg() for _, m := range tempMsg { - bt, _ := tsoutil.ParseTS(m.EndTs()) + guaranteeTs := m.GuaranteeTs() + gt, _ := tsoutil.ParseTS(guaranteeTs) st, _ = tsoutil.ParseTS(serviceTime) log.Debug("get query message from unsolvedMsg", zap.Int64("collectionID", q.collectionID), zap.Int64("msgID", m.ID()), - zap.Any("reqTime_p", bt), + zap.Any("reqTime_p", gt), zap.Any("serviceTime_p", st), - zap.Any("reqTime_l", m.EndTs()), + zap.Any("guaranteeTime_l", guaranteeTs), zap.Any("serviceTime_l", serviceTime), ) - if m.EndTs() <= serviceTime { + if guaranteeTs <= serviceTime { unSolvedMsg = append(unSolvedMsg, m) continue } log.Debug("query node::doUnsolvedMsg: add to unsolvedMsg", zap.Any("collectionID", q.collectionID), - zap.Any("sm.BeginTs", bt), + zap.Any("sm.BeginTs", gt), zap.Any("serviceTime", st), - zap.Any("delta seconds", (m.BeginTs()-serviceTime)/(1000*1000*1000)), + zap.Any("delta seconds", (guaranteeTs-serviceTime)/(1000*1000*1000)), zap.Any("msgID", m.ID()), ) q.addToUnsolvedMsg(m) @@ -699,12 +707,13 @@ func translateHits(schema *typeutil.SchemaHelper, fieldIDs []int64, rawHits [][] // TODO:: cache map[dsl]plan // TODO: reBatched search requests -func (q *queryCollection) search(msg msgstream.TsMsg) error { +func (q *queryCollection) search(msg queryMsg) error { searchMsg := msg.(*msgstream.SearchMsg) sp, ctx := trace.StartSpanFromContext(searchMsg.TraceCtx()) defer sp.Finish() searchMsg.SetTraceCtx(ctx) searchTimestamp := searchMsg.BeginTs() + travelTimestamp := searchMsg.TravelTimestamp collectionID := searchMsg.CollectionID collection, err := q.streaming.replica.getCollectionByID(collectionID) @@ -763,7 +772,7 @@ func (q *queryCollection) search(msg msgstream.TsMsg) error { sealedSegmentSearched := make([]UniqueID, 0) // historical search - hisSearchResults, hisSegmentResults, err1 := q.historical.search(searchRequests, collectionID, searchMsg.PartitionIDs, plan, searchTimestamp) + hisSearchResults, hisSegmentResults, err1 := q.historical.search(searchRequests, collectionID, searchMsg.PartitionIDs, plan, travelTimestamp) if err1 != nil { log.Error(err1.Error()) return err1 @@ -780,7 +789,7 @@ func (q *queryCollection) search(msg msgstream.TsMsg) error { for _, channel := range collection.getVChannels() { var strSearchResults []*SearchResult var strSegmentResults []*Segment - strSearchResults, strSegmentResults, err2 = q.streaming.search(searchRequests, collectionID, searchMsg.PartitionIDs, channel, plan, searchTimestamp) + strSearchResults, strSegmentResults, err2 = q.streaming.search(searchRequests, collectionID, searchMsg.PartitionIDs, channel, plan, travelTimestamp) if err2 != nil { log.Error(err2.Error()) return err2 @@ -986,7 +995,7 @@ func (q *queryCollection) search(msg msgstream.TsMsg) error { return nil } -func (q *queryCollection) retrieve(msg msgstream.TsMsg) error { +func (q *queryCollection) retrieve(msg queryMsg) error { // TODO(yukun) // step 1: get retrieve object and defer destruction // step 2: for each segment, call retrieve to get ids proto buffer diff --git a/internal/querynode/retrieve_collection.go b/internal/querynode/retrieve_collection.go deleted file mode 100644 index ab7a64aaad..0000000000 --- a/internal/querynode/retrieve_collection.go +++ /dev/null @@ -1,502 +0,0 @@ -// Copyright (C) 2019-2020 Zilliz. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software distributed under the License -// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express -// or implied. See the License for the specific language governing permissions and limitations under the License. - -package querynode - -import ( - "context" - "errors" - "math" - "reflect" - "sync" - - oplog "github.com/opentracing/opentracing-go/log" - "go.uber.org/zap" - - "github.com/milvus-io/milvus/internal/log" - "github.com/milvus-io/milvus/internal/msgstream" - "github.com/milvus-io/milvus/internal/proto/commonpb" - "github.com/milvus-io/milvus/internal/proto/internalpb" - "github.com/milvus-io/milvus/internal/proto/segcorepb" - "github.com/milvus-io/milvus/internal/util/trace" - "github.com/milvus-io/milvus/internal/util/tsoutil" -) - -type retrieveCollection struct { - releaseCtx context.Context - cancel context.CancelFunc - - collectionID UniqueID - historical *historical - streaming *streaming - - msgBuffer chan *msgstream.RetrieveMsg - unsolvedMsgMu sync.Mutex - unsolvedMsg []*msgstream.RetrieveMsg - - tSafeWatchers map[Channel]*tSafeWatcher - watcherSelectCase []reflect.SelectCase - - serviceableTimeMutex sync.Mutex - serviceableTime Timestamp - - retrieveResultMsgStream msgstream.MsgStream -} - -func newRetrieveCollection(releaseCtx context.Context, - cancel context.CancelFunc, - collectionID UniqueID, - historical *historical, - streaming *streaming, - retrieveResultStream msgstream.MsgStream) *retrieveCollection { - receiveBufSize := Params.RetrieveReceiveBufSize - msgBuffer := make(chan *msgstream.RetrieveMsg, receiveBufSize) - unsolvedMsg := make([]*msgstream.RetrieveMsg, 0) - - rc := &retrieveCollection{ - releaseCtx: releaseCtx, - cancel: cancel, - - collectionID: collectionID, - historical: historical, - streaming: streaming, - - tSafeWatchers: make(map[Channel]*tSafeWatcher), - - msgBuffer: msgBuffer, - unsolvedMsg: unsolvedMsg, - - retrieveResultMsgStream: retrieveResultStream, - } - - rc.register() - return rc -} - -func (rc *retrieveCollection) getServiceableTime() Timestamp { - rc.serviceableTimeMutex.Lock() - defer rc.serviceableTimeMutex.Unlock() - return rc.serviceableTime -} - -func (rc *retrieveCollection) setServiceableTime(t Timestamp) { - rc.serviceableTimeMutex.Lock() - defer rc.serviceableTimeMutex.Unlock() - - if t < rc.serviceableTime { - return - } - - gracefulTimeInMilliSecond := Params.GracefulTime - if gracefulTimeInMilliSecond > 0 { - gracefulTime := tsoutil.ComposeTS(gracefulTimeInMilliSecond, 0) - rc.serviceableTime = t + gracefulTime - } else { - rc.serviceableTime = t - } -} - -func (rc *retrieveCollection) waitNewTSafe() Timestamp { - // block until any vChannel updating tSafe - _, _, recvOK := reflect.Select(rc.watcherSelectCase) - if !recvOK { - log.Error("tSafe has been closed") - return invalidTimestamp - } - t := Timestamp(math.MaxInt64) - for channel := range rc.tSafeWatchers { - ts := rc.streaming.tSafeReplica.getTSafe(channel) - if ts <= t { - t = ts - } - } - return t -} - -func (rc *retrieveCollection) start() { - go rc.receiveRetrieveMsg() - go rc.doUnsolvedMsgRetrieve() -} - -func (rc *retrieveCollection) register() { - // register tSafe watcher and init watcher select case - collection, err := rc.streaming.replica.getCollectionByID(rc.collectionID) - if err != nil { - log.Error(err.Error()) - return - } - - rc.watcherSelectCase = make([]reflect.SelectCase, 0) - for _, channel := range collection.getVChannels() { - rc.streaming.tSafeReplica.addTSafe(channel) - rc.tSafeWatchers[channel] = newTSafeWatcher() - rc.streaming.tSafeReplica.registerTSafeWatcher(channel, rc.tSafeWatchers[channel]) - rc.watcherSelectCase = append(rc.watcherSelectCase, reflect.SelectCase{ - Dir: reflect.SelectRecv, - Chan: reflect.ValueOf(rc.tSafeWatchers[channel].watcherChan()), - }) - } -} - -func (rc *retrieveCollection) addToUnsolvedMsg(msg *msgstream.RetrieveMsg) { - rc.unsolvedMsgMu.Lock() - defer rc.unsolvedMsgMu.Unlock() - rc.unsolvedMsg = append(rc.unsolvedMsg, msg) -} - -func (rc *retrieveCollection) receiveRetrieveMsg() { - for { - select { - case <-rc.releaseCtx.Done(): - log.Debug("stop retrieveCollection's receiveRetrieveMsg", zap.Int64("collectionID", rc.collectionID)) - return - case rm := <-rc.msgBuffer: - log.Info("RetrieveCollection get retrieve message from msgBuffer", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - - sp, ctx := trace.StartSpanFromContext(rm.TraceCtx()) - rm.SetTraceCtx(ctx) - serviceTime := rc.getServiceableTime() - if rm.BeginTs() > serviceTime { - bt, _ := tsoutil.ParseTS(rm.BeginTs()) - st, _ := tsoutil.ParseTS(serviceTime) - log.Debug("Timestamp of retrieve request great than serviceTime, add to unsolvedMsgs", - zap.Any("sm.BeginTs", bt), - zap.Any("serviceTime", st), - zap.Any("delta seconds", (rm.BeginTs()-serviceTime)/(1000*1000*1000)), - zap.Any("collectionID", rc.collectionID), - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - rc.addToUnsolvedMsg(rm) - sp.LogFields( - oplog.String("send to unsolved retrieve buffer", "send to unsolved buffer"), - oplog.Object("begin ts", bt), - oplog.Object("serviceTime", st), - oplog.Float64("delta seconds", float64(rm.BeginTs()-serviceTime)/(1000.0*1000.0*1000.0)), - ) - sp.Finish() - continue - } - - log.Info("Doing retrieve in receiveRetrieveMsg...", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - err := rc.retrieve(rm) - - if err != nil { - log.Error(err.Error(), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - - log.Debug("Failed to execute retrieve, prepare to publish failed retrieve result", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - - err2 := rc.publishFailedRetrieveResult(rm, err.Error()) - if err2 != nil { - log.Error("Failed to publish FailedRetrieveResult", - zap.Error(err2), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - } - } - - log.Debug("Do retrieve done in retrieveRetrieveMsg", - zap.Int64("msgID", rm.ID()), - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - sp.Finish() - } - } -} - -func (rc *retrieveCollection) doUnsolvedMsgRetrieve() { - for { - select { - case <-rc.releaseCtx.Done(): - log.Debug("stop retrieveCollection's doUnsolvedMsgRetrieve", zap.Int64("collectionID", rc.collectionID)) - return - default: - serviceTime := rc.waitNewTSafe() - rc.setServiceableTime(serviceTime) - log.Debug("Update serviceTime", - zap.Any("serviceTime", serviceTime), - zap.Uint64("tSafe", serviceTime), - zap.Int64("collectionID", rc.collectionID), - ) - - retrieveMsg := make([]*msgstream.RetrieveMsg, 0) - rc.unsolvedMsgMu.Lock() - tmpMsg := rc.unsolvedMsg - rc.unsolvedMsg = rc.unsolvedMsg[:0] - rc.unsolvedMsgMu.Unlock() - - for _, rm := range tmpMsg { - log.Debug("Get retrieve message from unsolvedMsg", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - - if rm.EndTs() <= serviceTime { - retrieveMsg = append(retrieveMsg, rm) - continue - } - rc.addToUnsolvedMsg(rm) - } - - if len(retrieveMsg) <= 0 { - continue - } - - for _, rm := range retrieveMsg { - sp, ctx := trace.StartSpanFromContext(rm.TraceCtx()) - rm.SetTraceCtx(ctx) - - log.Debug("Doing retrieve in doUnsolvedMsgRetrieve...", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - err := rc.retrieve(rm) - - if err != nil { - log.Error(err.Error(), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - - log.Debug("Failed to do retrieve in doUnsolvedMsgRetrieve, prepare to publish failed retrieve result", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - - err2 := rc.publishFailedRetrieveResult(rm, err.Error()) - if err2 != nil { - log.Error("Failed to publish FailedRetrieveResult", - zap.Error(err2), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - } - } - - sp.Finish() - log.Debug("Do retrieve done in doUnsolvedMsgRetrieve", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", rm.ID()), - zap.Any("requestType", "retrieve"), - ) - } - log.Debug("doUnsolvedMsgRetrieve, do retrieve done", zap.Int("num of retrieveMsg", len(retrieveMsg))) - } - } -} - -func (rc *retrieveCollection) retrieve(retrieveMsg *msgstream.RetrieveMsg) error { - // TODO(yukun) - // step 1: get retrieve object and defer destruction - // step 2: for each segment, call retrieve to get ids proto buffer - // step 3: merge all proto in go - // step 4: publish results - // retrieveProtoBlob, err := proto.Marshal(&retrieveMsg.RetrieveRequest) - sp, ctx := trace.StartSpanFromContext(retrieveMsg.TraceCtx()) - defer sp.Finish() - retrieveMsg.SetTraceCtx(ctx) - timestamp := retrieveMsg.RetrieveRequest.TravelTimestamp - - collectionID := retrieveMsg.CollectionID - collection, err := rc.streaming.replica.getCollectionByID(collectionID) - if err != nil { - return err - } - - req := &segcorepb.RetrieveRequest{ - Ids: retrieveMsg.Ids, - OutputFields: retrieveMsg.OutputFields, - } - - plan, err := createRetrievePlan(collection, req, timestamp) - if err != nil { - return err - } - defer plan.delete() - - var partitionIDsInHistorical []UniqueID - var partitionIDsInStreaming []UniqueID - partitionIDsInQuery := retrieveMsg.PartitionIDs - if len(partitionIDsInQuery) == 0 { - partitionIDsInHistoricalCol, err1 := rc.historical.replica.getPartitionIDs(collectionID) - partitionIDsInStreamingCol, err2 := rc.streaming.replica.getPartitionIDs(collectionID) - if err1 != nil && err2 != nil { - return err2 - } - if len(partitionIDsInHistoricalCol) == 0 { - return errors.New("none of this collection's partition has been loaded") - } - partitionIDsInHistorical = partitionIDsInHistoricalCol - partitionIDsInStreaming = partitionIDsInStreamingCol - } else { - for _, id := range partitionIDsInQuery { - _, err1 := rc.historical.replica.getPartitionByID(id) - if err1 == nil { - partitionIDsInHistorical = append(partitionIDsInHistorical, id) - } - _, err2 := rc.streaming.replica.getPartitionByID(id) - if err2 == nil { - partitionIDsInStreaming = append(partitionIDsInStreaming, id) - } - if err1 != nil && err2 != nil { - return err2 - } - } - } - - sealedSegmentRetrieved := make([]UniqueID, 0) - var mergeList []*segcorepb.RetrieveResults - for _, partitionID := range partitionIDsInHistorical { - segmentIDs, err := rc.historical.replica.getSegmentIDs(partitionID) - if err != nil { - return err - } - for _, segmentID := range segmentIDs { - segment, err := rc.historical.replica.getSegmentByID(segmentID) - if err != nil { - return err - } - result, err := segment.segmentGetEntityByIds(plan) - if err != nil { - return err - } - mergeList = append(mergeList, result) - sealedSegmentRetrieved = append(sealedSegmentRetrieved, segmentID) - } - } - - for _, partitionID := range partitionIDsInStreaming { - segmentIDs, err := rc.streaming.replica.getSegmentIDs(partitionID) - if err != nil { - return err - } - for _, segmentID := range segmentIDs { - segment, err := rc.streaming.replica.getSegmentByID(segmentID) - if err != nil { - return err - } - result, err := segment.segmentGetEntityByIds(plan) - if err != nil { - return err - } - mergeList = append(mergeList, result) - } - } - - result, err := mergeRetrieveResults(mergeList) - if err != nil { - return err - } - - resultChannelInt := 0 - retrieveResultMsg := &msgstream.RetrieveResultMsg{ - BaseMsg: msgstream.BaseMsg{Ctx: retrieveMsg.Ctx, HashValues: []uint32{uint32(resultChannelInt)}}, - RetrieveResults: internalpb.RetrieveResults{ - Base: &commonpb.MsgBase{ - MsgType: commonpb.MsgType_RetrieveResult, - MsgID: retrieveMsg.Base.MsgID, - SourceID: retrieveMsg.Base.SourceID, - }, - Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_Success}, - Ids: result.Ids, - FieldsData: result.FieldsData, - ResultChannelID: retrieveMsg.ResultChannelID, - SealedSegmentIDsRetrieved: sealedSegmentRetrieved, - ChannelIDsRetrieved: collection.getVChannels(), - //TODO(yukun):: get global sealed segment from etcd - GlobalSealedSegmentIDs: sealedSegmentRetrieved, - }, - } - log.Debug("QueryNode RetrieveResultMsg", - zap.Any("vChannels", collection.getVChannels()), - zap.Any("collectionID", collection.ID()), - zap.Any("sealedSegmentRetrieved", sealedSegmentRetrieved), - ) - err3 := rc.publishRetrieveResult(retrieveResultMsg, retrieveMsg.CollectionID) - if err3 != nil { - return err3 - } - return nil -} - -func (rc *retrieveCollection) publishRetrieveResult(msg msgstream.TsMsg, collectionID UniqueID) error { - log.Debug("publishing retrieve result...", - zap.Int64("msgID", msg.ID()), - zap.Int64("collectionID", collectionID)) - span, ctx := trace.StartSpanFromContext(msg.TraceCtx()) - defer span.Finish() - msg.SetTraceCtx(ctx) - msgPack := msgstream.MsgPack{} - msgPack.Msgs = append(msgPack.Msgs, msg) - err := rc.retrieveResultMsgStream.Produce(&msgPack) - if err != nil { - log.Error(err.Error()) - } else { - log.Debug("publish retrieve result done", - zap.Int64("msgID", msg.ID()), - zap.Int64("collectionID", collectionID)) - } - return err -} - -func (rc *retrieveCollection) publishFailedRetrieveResult(retrieveMsg *msgstream.RetrieveMsg, errMsg string) error { - span, ctx := trace.StartSpanFromContext(retrieveMsg.TraceCtx()) - defer span.Finish() - retrieveMsg.SetTraceCtx(ctx) - msgPack := msgstream.MsgPack{} - - resultChannelInt := 0 - retrieveResultMsg := &msgstream.RetrieveResultMsg{ - BaseMsg: msgstream.BaseMsg{HashValues: []uint32{uint32(resultChannelInt)}}, - RetrieveResults: internalpb.RetrieveResults{ - Base: &commonpb.MsgBase{ - MsgType: commonpb.MsgType_RetrieveResult, - MsgID: retrieveMsg.Base.MsgID, - Timestamp: retrieveMsg.Base.Timestamp, - SourceID: retrieveMsg.Base.SourceID, - }, - Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_UnexpectedError, Reason: errMsg}, - ResultChannelID: retrieveMsg.ResultChannelID, - Ids: nil, - FieldsData: nil, - }, - } - - msgPack.Msgs = append(msgPack.Msgs, retrieveResultMsg) - err := rc.retrieveResultMsgStream.Produce(&msgPack) - if err != nil { - return err - } - - return nil -} diff --git a/internal/querynode/retrieve_collection_test.go b/internal/querynode/retrieve_collection_test.go deleted file mode 100644 index 34c6e7b7b9..0000000000 --- a/internal/querynode/retrieve_collection_test.go +++ /dev/null @@ -1,54 +0,0 @@ -package querynode - -import ( - "testing" - - "github.com/stretchr/testify/assert" - - "github.com/milvus-io/milvus/internal/proto/schemapb" - "github.com/milvus-io/milvus/internal/proto/segcorepb" -) - -func TestRetrieve_Merge(t *testing.T) { - - col1 := &schemapb.FieldData{ - Field: &schemapb.FieldData_Scalars{ - Scalars: &schemapb.ScalarField{ - Data: &schemapb.ScalarField_IntData{ - IntData: &schemapb.IntArray{ - Data: []int32{1, 2, 3}, - }, - }, - }, - }, - } - - col2 := &schemapb.FieldData{ - Field: &schemapb.FieldData_Vectors{ - Vectors: &schemapb.VectorField{ - Data: &schemapb.VectorField_FloatVector{ - FloatVector: &schemapb.FloatArray{ - Data: []float32{1, 1, 2, 2, 3, 3}, - }, - }, - }, - }, - } - - subRes := &segcorepb.RetrieveResults{ - Ids: &schemapb.IDs{ - IdField: &schemapb.IDs_IntId{ - IntId: &schemapb.LongArray{ - Data: []int64{1, 2, 3}, - }, - }, - }, - FieldsData: []*schemapb.FieldData{ - col1, - col2, - }, - } - finalRes, err := mergeRetrieveResults([]*segcorepb.RetrieveResults{subRes, subRes}) - assert.NoError(t, err) - println(finalRes.String()) -} diff --git a/internal/querynode/retrieve_service.go b/internal/querynode/retrieve_service.go deleted file mode 100644 index 4934406605..0000000000 --- a/internal/querynode/retrieve_service.go +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright (C) 2019-2020 Zilliz. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software distributed under the License -// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express -// or implied. See the License for the specific language governing permissions and limitations under the License. - -package querynode - -import ( - "context" - "errors" - "strconv" - - "go.uber.org/zap" - - "github.com/milvus-io/milvus/internal/log" - "github.com/milvus-io/milvus/internal/msgstream" - "github.com/milvus-io/milvus/internal/util/trace" -) - -type retrieveService struct { - ctx context.Context - cancel context.CancelFunc - - historical *historical - streaming *streaming - - retrieveMsgStream msgstream.MsgStream - retrieveResultMsgStream msgstream.MsgStream - - queryNodeID UniqueID - retrieveCollections map[UniqueID]*retrieveCollection -} - -func newRetrieveService(ctx context.Context, - historical *historical, - streaming *streaming, - factory msgstream.Factory) *retrieveService { - - retrieveStream, _ := factory.NewQueryMsgStream(ctx) - retrieveResultStream, _ := factory.NewQueryMsgStream(ctx) - - if len(Params.SearchChannelNames) > 0 && len(Params.SearchResultChannelNames) > 0 { - consumeChannels := Params.SearchChannelNames - consumeSubName := "RetrieveSubName" - retrieveStream.AsConsumer(consumeChannels, consumeSubName) - log.Debug("query node AsConsumer", zap.Any("retrieveChannels", consumeChannels), zap.Any("consumeSubName", consumeSubName)) - producerChannels := Params.SearchResultChannelNames - retrieveResultStream.AsProducer(producerChannels) - log.Debug("query node AsProducer", zap.Any("retrieveResultChannels", producerChannels)) - } - - retrieveServiceCtx, retrieveServiceCancel := context.WithCancel(ctx) - return &retrieveService{ - ctx: retrieveServiceCtx, - cancel: retrieveServiceCancel, - - historical: historical, - streaming: streaming, - - retrieveMsgStream: retrieveStream, - retrieveResultMsgStream: retrieveResultStream, - - queryNodeID: Params.QueryNodeID, - retrieveCollections: make(map[UniqueID]*retrieveCollection), - } -} - -func (rs *retrieveService) start() { - rs.retrieveMsgStream.Start() - rs.retrieveResultMsgStream.Start() - rs.consumeRetrieve() -} - -func (rs *retrieveService) collectionCheck(collectionID UniqueID) error { - if ok := rs.historical.replica.hasCollection(collectionID); !ok { - err := errors.New("no collection found, collectionID = " + strconv.FormatInt(collectionID, 10)) - log.Error(err.Error()) - return err - } - - return nil -} - -func (rs *retrieveService) consumeRetrieve() { - for { - select { - case <-rs.ctx.Done(): - return - default: - msgPack := rs.retrieveMsgStream.Consume() - if msgPack == nil || len(msgPack.Msgs) <= 0 { - continue - } - for _, msg := range msgPack.Msgs { - rm, ok := msg.(*msgstream.RetrieveMsg) - if !ok { - // Not a retrieve request, discard - continue - } - log.Info("RetrieveService consume retrieve message", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", msg.ID()), - zap.Any("requestType", "retrieve"), - ) - - sp, ctx := trace.StartSpanFromContext(rm.TraceCtx()) - rm.SetTraceCtx(ctx) - err := rs.collectionCheck(rm.CollectionID) - if err != nil { - log.Debug("Failed to check collection exist, discard.", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", msg.ID()), - zap.Any("requestType", "retrieve"), - ) - continue - } - - _, ok = rs.retrieveCollections[rm.CollectionID] - if !ok { - rs.startRetrieveCollection(rm.CollectionID) - log.Debug("Receive retrieve request on new collection, start an new retrieve collection service", - zap.Int64("collectionID", rm.CollectionID), - zap.Int64("requestID", msg.ID()), - zap.Any("requestType", "retrieve"), - ) - } - - rs.retrieveCollections[rm.CollectionID].msgBuffer <- rm - log.Info("Put retrieve msg into msgBuffer", - zap.Any("requestID", msg.ID), - zap.Any("requestType", "retrieve"), - ) - sp.Finish() - } - } - } -} - -func (rs *retrieveService) close() { - if rs.retrieveMsgStream != nil { - rs.retrieveMsgStream.Close() - } - if rs.retrieveResultMsgStream != nil { - rs.retrieveResultMsgStream.Close() - } - for collectionID := range rs.retrieveCollections { - rs.stopRetrieveCollection(collectionID) - } - rs.retrieveCollections = make(map[UniqueID]*retrieveCollection) - rs.cancel() -} - -func (rs *retrieveService) startRetrieveCollection(collectionID UniqueID) { - ctx1, cancel := context.WithCancel(rs.ctx) - rc := newRetrieveCollection(ctx1, - cancel, - collectionID, - rs.historical, - rs.streaming, - rs.retrieveResultMsgStream) - rs.retrieveCollections[collectionID] = rc - rc.start() -} - -func (rs *retrieveService) hasRetrieveCollection(collectionID UniqueID) bool { - _, ok := rs.retrieveCollections[collectionID] - return ok -} - -func (rs *retrieveService) stopRetrieveCollection(collectionID UniqueID) { - rc, ok := rs.retrieveCollections[collectionID] - if !ok { - log.Error("stopRetrieveCollection failed, collection doesn't exist", zap.Int64("collectionID", collectionID)) - } - rc.cancel() - delete(rs.retrieveCollections, collectionID) -} diff --git a/internal/querynode/segment_test.go b/internal/querynode/segment_test.go index 2d9fc6a901..b5dd9162f2 100644 --- a/internal/querynode/segment_test.go +++ b/internal/querynode/segment_test.go @@ -425,7 +425,7 @@ func TestSegment_segmentSearch(t *testing.T) { log.Print("marshal placeholderGroup failed") } - searchTimestamp := Timestamp(1020) + travelTimestamp := Timestamp(1020) plan, err := createPlan(collection, dslString) assert.NoError(t, err) holder, err := parseSearchRequest(plan, placeHolderGroupBlob) @@ -436,7 +436,7 @@ func TestSegment_segmentSearch(t *testing.T) { searchResults := make([]*SearchResult, 0) matchedSegments := make([]*Segment, 0) - searchResult, err := segment.segmentSearch(plan, placeholderGroups, []Timestamp{searchTimestamp}) + searchResult, err := segment.segmentSearch(plan, placeholderGroups, []Timestamp{travelTimestamp}) assert.Nil(t, err) searchResults = append(searchResults, searchResult)