From a6dbcaeb7a357f4832cbb233bf7c8f37e9750ee8 Mon Sep 17 00:00:00 2001 From: "cai.zhang" Date: Wed, 7 Jun 2023 17:24:36 +0800 Subject: [PATCH] Add proto field to support reverse in (#24678) Signed-off-by: cai.zhang --- internal/core/src/pb/plan.pb.cc | 183 ++++++++++++++++------------ internal/core/src/pb/plan.pb.h | 31 +++++ internal/proto/plan.proto | 1 + internal/proto/planpb/plan.pb.go | 203 ++++++++++++++++--------------- 4 files changed, 246 insertions(+), 172 deletions(-) diff --git a/internal/core/src/pb/plan.pb.cc b/internal/core/src/pb/plan.pb.cc index e60f4e81c2..66340e7265 100644 --- a/internal/core/src/pb/plan.pb.cc +++ b/internal/core/src/pb/plan.pb.cc @@ -161,6 +161,7 @@ PROTOBUF_CONSTEXPR TermExpr::TermExpr( ::_pbi::ConstantInitialized): _impl_{ /*decltype(_impl_.values_)*/{} , /*decltype(_impl_.column_info_)*/nullptr + , /*decltype(_impl_.is_in_field_)*/false , /*decltype(_impl_._cached_size_)*/{}} {} struct TermExprDefaultTypeInternal { PROTOBUF_CONSTEXPR TermExprDefaultTypeInternal() @@ -407,6 +408,7 @@ const uint32_t TableStruct_plan_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(pro ~0u, // no _inlined_string_donated_ PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::TermExpr, _impl_.column_info_), PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::TermExpr, _impl_.values_), + PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::TermExpr, _impl_.is_in_field_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::UnaryExpr, _internal_metadata_), ~0u, // no _extensions_ @@ -513,15 +515,15 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode { 63, -1, -1, sizeof(::milvus::proto::plan::BinaryRangeExpr)}, { 74, -1, -1, sizeof(::milvus::proto::plan::CompareExpr)}, { 83, -1, -1, sizeof(::milvus::proto::plan::TermExpr)}, - { 91, -1, -1, sizeof(::milvus::proto::plan::UnaryExpr)}, - { 99, -1, -1, sizeof(::milvus::proto::plan::BinaryExpr)}, - { 108, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOp)}, - { 117, -1, -1, sizeof(::milvus::proto::plan::BinaryArithExpr)}, - { 126, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOpEvalRangeExpr)}, - { 137, -1, -1, sizeof(::milvus::proto::plan::Expr)}, - { 155, -1, -1, sizeof(::milvus::proto::plan::VectorANNS)}, - { 166, -1, -1, sizeof(::milvus::proto::plan::QueryPlanNode)}, - { 174, -1, -1, sizeof(::milvus::proto::plan::PlanNode)}, + { 92, -1, -1, sizeof(::milvus::proto::plan::UnaryExpr)}, + { 100, -1, -1, sizeof(::milvus::proto::plan::BinaryExpr)}, + { 109, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOp)}, + { 118, -1, -1, sizeof(::milvus::proto::plan::BinaryArithExpr)}, + { 127, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOpEvalRangeExpr)}, + { 138, -1, -1, sizeof(::milvus::proto::plan::Expr)}, + { 156, -1, -1, sizeof(::milvus::proto::plan::VectorANNS)}, + { 167, -1, -1, sizeof(::milvus::proto::plan::QueryPlanNode)}, + { 175, -1, -1, sizeof(::milvus::proto::plan::PlanNode)}, }; static const ::_pb::Message* const file_default_instances[] = { @@ -575,77 +577,77 @@ const char descriptor_table_protodef_plan_2eproto[] PROTOBUF_SECTION_VARIABLE(pr "pr\0227\n\020left_column_info\030\001 \001(\0132\035.milvus.pr" "oto.plan.ColumnInfo\0228\n\021right_column_info" "\030\002 \001(\0132\035.milvus.proto.plan.ColumnInfo\022%\n" - "\002op\030\003 \001(\0162\031.milvus.proto.plan.OpType\"o\n\010" - "TermExpr\0222\n\013column_info\030\001 \001(\0132\035.milvus.p" - "roto.plan.ColumnInfo\022/\n\006values\030\002 \003(\0132\037.m" - "ilvus.proto.plan.GenericValue\"\206\001\n\tUnaryE" - "xpr\0220\n\002op\030\001 \001(\0162$.milvus.proto.plan.Unar" - "yExpr.UnaryOp\022&\n\005child\030\002 \001(\0132\027.milvus.pr" - "oto.plan.Expr\"\037\n\007UnaryOp\022\013\n\007Invalid\020\000\022\007\n" - "\003Not\020\001\"\307\001\n\nBinaryExpr\0222\n\002op\030\001 \001(\0162&.milv" - "us.proto.plan.BinaryExpr.BinaryOp\022%\n\004lef" - "t\030\002 \001(\0132\027.milvus.proto.plan.Expr\022&\n\005righ" - "t\030\003 \001(\0132\027.milvus.proto.plan.Expr\"6\n\010Bina" - "ryOp\022\013\n\007Invalid\020\000\022\016\n\nLogicalAnd\020\001\022\r\n\tLog" - "icalOr\020\002\"\255\001\n\rBinaryArithOp\0222\n\013column_inf" - "o\030\001 \001(\0132\035.milvus.proto.plan.ColumnInfo\0220" - "\n\010arith_op\030\002 \001(\0162\036.milvus.proto.plan.Ari" - "thOpType\0226\n\rright_operand\030\003 \001(\0132\037.milvus" - ".proto.plan.GenericValue\"\214\001\n\017BinaryArith" - "Expr\022%\n\004left\030\001 \001(\0132\027.milvus.proto.plan.E" - "xpr\022&\n\005right\030\002 \001(\0132\027.milvus.proto.plan.E" - "xpr\022*\n\002op\030\003 \001(\0162\036.milvus.proto.plan.Arit" - "hOpType\"\221\002\n\032BinaryArithOpEvalRangeExpr\0222" - "\n\013column_info\030\001 \001(\0132\035.milvus.proto.plan." - "ColumnInfo\0220\n\010arith_op\030\002 \001(\0162\036.milvus.pr" - "oto.plan.ArithOpType\0226\n\rright_operand\030\003 " - "\001(\0132\037.milvus.proto.plan.GenericValue\022%\n\002" - "op\030\004 \001(\0162\031.milvus.proto.plan.OpType\022.\n\005v" - "alue\030\005 \001(\0132\037.milvus.proto.plan.GenericVa" - "lue\"\235\005\n\004Expr\0220\n\tterm_expr\030\001 \001(\0132\033.milvus" - ".proto.plan.TermExprH\000\0222\n\nunary_expr\030\002 \001" - "(\0132\034.milvus.proto.plan.UnaryExprH\000\0224\n\013bi" - "nary_expr\030\003 \001(\0132\035.milvus.proto.plan.Bina" - "ryExprH\000\0226\n\014compare_expr\030\004 \001(\0132\036.milvus." - "proto.plan.CompareExprH\000\022=\n\020unary_range_" - "expr\030\005 \001(\0132!.milvus.proto.plan.UnaryRang" - "eExprH\000\022\?\n\021binary_range_expr\030\006 \001(\0132\".mil" - "vus.proto.plan.BinaryRangeExprH\000\022X\n\037bina" - "ry_arith_op_eval_range_expr\030\007 \001(\0132-.milv" - "us.proto.plan.BinaryArithOpEvalRangeExpr" - "H\000\022\?\n\021binary_arith_expr\030\010 \001(\0132\".milvus.p" - "roto.plan.BinaryArithExprH\000\0222\n\nvalue_exp" - "r\030\t \001(\0132\034.milvus.proto.plan.ValueExprH\000\022" - "4\n\013column_expr\030\n \001(\0132\035.milvus.proto.plan" - ".ColumnExprH\000\0224\n\013exists_expr\030\013 \001(\0132\035.mil" - "vus.proto.plan.ExistsExprH\000B\006\n\004expr\"\251\001\n\n" - "VectorANNS\022\021\n\tis_binary\030\001 \001(\010\022\020\n\010field_i" - "d\030\002 \001(\003\022+\n\npredicates\030\003 \001(\0132\027.milvus.pro" - "to.plan.Expr\0220\n\nquery_info\030\004 \001(\0132\034.milvu" - "s.proto.plan.QueryInfo\022\027\n\017placeholder_ta" - "g\030\005 \001(\t\"N\n\rQueryPlanNode\022+\n\npredicates\030\001" - " \001(\0132\027.milvus.proto.plan.Expr\022\020\n\010is_coun" - "t\030\002 \001(\010\"\304\001\n\010PlanNode\0224\n\013vector_anns\030\001 \001(" - "\0132\035.milvus.proto.plan.VectorANNSH\000\022-\n\npr" - "edicates\030\002 \001(\0132\027.milvus.proto.plan.ExprH" - "\000\0221\n\005query\030\004 \001(\0132 .milvus.proto.plan.Que" - "ryPlanNodeH\000\022\030\n\020output_field_ids\030\003 \003(\003B\006" - "\n\004node*\272\001\n\006OpType\022\013\n\007Invalid\020\000\022\017\n\013Greate" - "rThan\020\001\022\020\n\014GreaterEqual\020\002\022\014\n\010LessThan\020\003\022" - "\r\n\tLessEqual\020\004\022\t\n\005Equal\020\005\022\014\n\010NotEqual\020\006\022" - "\017\n\013PrefixMatch\020\007\022\020\n\014PostfixMatch\020\010\022\t\n\005Ma" - "tch\020\t\022\t\n\005Range\020\n\022\006\n\002In\020\013\022\t\n\005NotIn\020\014*G\n\013A" - "rithOpType\022\013\n\007Unknown\020\000\022\007\n\003Add\020\001\022\007\n\003Sub\020" - "\002\022\007\n\003Mul\020\003\022\007\n\003Div\020\004\022\007\n\003Mod\020\005B3Z1github.c" - "om/milvus-io/milvus/internal/proto/planp" - "bb\006proto3" + "\002op\030\003 \001(\0162\031.milvus.proto.plan.OpType\"\204\001\n" + "\010TermExpr\0222\n\013column_info\030\001 \001(\0132\035.milvus." + "proto.plan.ColumnInfo\022/\n\006values\030\002 \003(\0132\037." + "milvus.proto.plan.GenericValue\022\023\n\013is_in_" + "field\030\003 \001(\010\"\206\001\n\tUnaryExpr\0220\n\002op\030\001 \001(\0162$." + "milvus.proto.plan.UnaryExpr.UnaryOp\022&\n\005c" + "hild\030\002 \001(\0132\027.milvus.proto.plan.Expr\"\037\n\007U" + "naryOp\022\013\n\007Invalid\020\000\022\007\n\003Not\020\001\"\307\001\n\nBinaryE" + "xpr\0222\n\002op\030\001 \001(\0162&.milvus.proto.plan.Bina" + "ryExpr.BinaryOp\022%\n\004left\030\002 \001(\0132\027.milvus.p" + "roto.plan.Expr\022&\n\005right\030\003 \001(\0132\027.milvus.p" + "roto.plan.Expr\"6\n\010BinaryOp\022\013\n\007Invalid\020\000\022" + "\016\n\nLogicalAnd\020\001\022\r\n\tLogicalOr\020\002\"\255\001\n\rBinar" + "yArithOp\0222\n\013column_info\030\001 \001(\0132\035.milvus.p" + "roto.plan.ColumnInfo\0220\n\010arith_op\030\002 \001(\0162\036" + ".milvus.proto.plan.ArithOpType\0226\n\rright_" + "operand\030\003 \001(\0132\037.milvus.proto.plan.Generi" + "cValue\"\214\001\n\017BinaryArithExpr\022%\n\004left\030\001 \001(\013" + "2\027.milvus.proto.plan.Expr\022&\n\005right\030\002 \001(\013" + "2\027.milvus.proto.plan.Expr\022*\n\002op\030\003 \001(\0162\036." + "milvus.proto.plan.ArithOpType\"\221\002\n\032Binary" + "ArithOpEvalRangeExpr\0222\n\013column_info\030\001 \001(" + "\0132\035.milvus.proto.plan.ColumnInfo\0220\n\010arit" + "h_op\030\002 \001(\0162\036.milvus.proto.plan.ArithOpTy" + "pe\0226\n\rright_operand\030\003 \001(\0132\037.milvus.proto" + ".plan.GenericValue\022%\n\002op\030\004 \001(\0162\031.milvus." + "proto.plan.OpType\022.\n\005value\030\005 \001(\0132\037.milvu" + "s.proto.plan.GenericValue\"\235\005\n\004Expr\0220\n\tte" + "rm_expr\030\001 \001(\0132\033.milvus.proto.plan.TermEx" + "prH\000\0222\n\nunary_expr\030\002 \001(\0132\034.milvus.proto." + "plan.UnaryExprH\000\0224\n\013binary_expr\030\003 \001(\0132\035." + "milvus.proto.plan.BinaryExprH\000\0226\n\014compar" + "e_expr\030\004 \001(\0132\036.milvus.proto.plan.Compare" + "ExprH\000\022=\n\020unary_range_expr\030\005 \001(\0132!.milvu" + "s.proto.plan.UnaryRangeExprH\000\022\?\n\021binary_" + "range_expr\030\006 \001(\0132\".milvus.proto.plan.Bin" + "aryRangeExprH\000\022X\n\037binary_arith_op_eval_r" + "ange_expr\030\007 \001(\0132-.milvus.proto.plan.Bina" + "ryArithOpEvalRangeExprH\000\022\?\n\021binary_arith" + "_expr\030\010 \001(\0132\".milvus.proto.plan.BinaryAr" + "ithExprH\000\0222\n\nvalue_expr\030\t \001(\0132\034.milvus.p" + "roto.plan.ValueExprH\000\0224\n\013column_expr\030\n \001" + "(\0132\035.milvus.proto.plan.ColumnExprH\000\0224\n\013e" + "xists_expr\030\013 \001(\0132\035.milvus.proto.plan.Exi" + "stsExprH\000B\006\n\004expr\"\251\001\n\nVectorANNS\022\021\n\tis_b" + "inary\030\001 \001(\010\022\020\n\010field_id\030\002 \001(\003\022+\n\npredica" + "tes\030\003 \001(\0132\027.milvus.proto.plan.Expr\0220\n\nqu" + "ery_info\030\004 \001(\0132\034.milvus.proto.plan.Query" + "Info\022\027\n\017placeholder_tag\030\005 \001(\t\"N\n\rQueryPl" + "anNode\022+\n\npredicates\030\001 \001(\0132\027.milvus.prot" + "o.plan.Expr\022\020\n\010is_count\030\002 \001(\010\"\304\001\n\010PlanNo" + "de\0224\n\013vector_anns\030\001 \001(\0132\035.milvus.proto.p" + "lan.VectorANNSH\000\022-\n\npredicates\030\002 \001(\0132\027.m" + "ilvus.proto.plan.ExprH\000\0221\n\005query\030\004 \001(\0132 " + ".milvus.proto.plan.QueryPlanNodeH\000\022\030\n\020ou" + "tput_field_ids\030\003 \003(\003B\006\n\004node*\272\001\n\006OpType\022" + "\013\n\007Invalid\020\000\022\017\n\013GreaterThan\020\001\022\020\n\014Greater" + "Equal\020\002\022\014\n\010LessThan\020\003\022\r\n\tLessEqual\020\004\022\t\n\005" + "Equal\020\005\022\014\n\010NotEqual\020\006\022\017\n\013PrefixMatch\020\007\022\020" + "\n\014PostfixMatch\020\010\022\t\n\005Match\020\t\022\t\n\005Range\020\n\022\006" + "\n\002In\020\013\022\t\n\005NotIn\020\014*G\n\013ArithOpType\022\013\n\007Unkn" + "own\020\000\022\007\n\003Add\020\001\022\007\n\003Sub\020\002\022\007\n\003Mul\020\003\022\007\n\003Div\020" + "\004\022\007\n\003Mod\020\005B3Z1github.com/milvus-io/milvu" + "s/internal/proto/planpbb\006proto3" ; static const ::_pbi::DescriptorTable* const descriptor_table_plan_2eproto_deps[1] = { &::descriptor_table_schema_2eproto, }; static ::_pbi::once_flag descriptor_table_plan_2eproto_once; const ::_pbi::DescriptorTable descriptor_table_plan_2eproto = { - false, false, 3649, descriptor_table_protodef_plan_2eproto, + false, false, 3671, descriptor_table_protodef_plan_2eproto, "plan.proto", &descriptor_table_plan_2eproto_once, descriptor_table_plan_2eproto_deps, 1, 19, schemas, file_default_instances, TableStruct_plan_2eproto::offsets, @@ -3180,12 +3182,14 @@ TermExpr::TermExpr(const TermExpr& from) new (&_impl_) Impl_{ decltype(_impl_.values_){from._impl_.values_} , decltype(_impl_.column_info_){nullptr} + , decltype(_impl_.is_in_field_){} , /*decltype(_impl_._cached_size_)*/{}}; _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_column_info()) { _this->_impl_.column_info_ = new ::milvus::proto::plan::ColumnInfo(*from._impl_.column_info_); } + _this->_impl_.is_in_field_ = from._impl_.is_in_field_; // @@protoc_insertion_point(copy_constructor:milvus.proto.plan.TermExpr) } @@ -3196,6 +3200,7 @@ inline void TermExpr::SharedCtor( new (&_impl_) Impl_{ decltype(_impl_.values_){arena} , decltype(_impl_.column_info_){nullptr} + , decltype(_impl_.is_in_field_){false} , /*decltype(_impl_._cached_size_)*/{} }; } @@ -3230,6 +3235,7 @@ void TermExpr::Clear() { delete _impl_.column_info_; } _impl_.column_info_ = nullptr; + _impl_.is_in_field_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } @@ -3260,6 +3266,14 @@ const char* TermExpr::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) } else goto handle_unusual; continue; + // bool is_in_field = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 24)) { + _impl_.is_in_field_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } else + goto handle_unusual; + continue; default: goto handle_unusual; } // switch @@ -3304,6 +3318,12 @@ uint8_t* TermExpr::_InternalSerialize( InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } + // bool is_in_field = 3; + if (this->_internal_is_in_field() != 0) { + target = stream->EnsureSpace(target); + target = ::_pbi::WireFormatLite::WriteBoolToArray(3, this->_internal_is_in_field(), target); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -3334,6 +3354,11 @@ size_t TermExpr::ByteSizeLong() const { *_impl_.column_info_); } + // bool is_in_field = 3; + if (this->_internal_is_in_field() != 0) { + total_size += 1 + 1; + } + return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } @@ -3357,6 +3382,9 @@ void TermExpr::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTO _this->_internal_mutable_column_info()->::milvus::proto::plan::ColumnInfo::MergeFrom( from._internal_column_info()); } + if (from._internal_is_in_field() != 0) { + _this->_internal_set_is_in_field(from._internal_is_in_field()); + } _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); } @@ -3375,7 +3403,12 @@ void TermExpr::InternalSwap(TermExpr* other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.values_.InternalSwap(&other->_impl_.values_); - swap(_impl_.column_info_, other->_impl_.column_info_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(TermExpr, _impl_.is_in_field_) + + sizeof(TermExpr::_impl_.is_in_field_) + - PROTOBUF_FIELD_OFFSET(TermExpr, _impl_.column_info_)>( + reinterpret_cast(&_impl_.column_info_), + reinterpret_cast(&other->_impl_.column_info_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TermExpr::GetMetadata() const { diff --git a/internal/core/src/pb/plan.pb.h b/internal/core/src/pb/plan.pb.h index 26ed821484..d50e473c2e 100644 --- a/internal/core/src/pb/plan.pb.h +++ b/internal/core/src/pb/plan.pb.h @@ -2075,6 +2075,7 @@ class TermExpr final : enum : int { kValuesFieldNumber = 2, kColumnInfoFieldNumber = 1, + kIsInFieldFieldNumber = 3, }; // repeated .milvus.proto.plan.GenericValue values = 2; int values_size() const; @@ -2112,6 +2113,15 @@ class TermExpr final : ::milvus::proto::plan::ColumnInfo* column_info); ::milvus::proto::plan::ColumnInfo* unsafe_arena_release_column_info(); + // bool is_in_field = 3; + void clear_is_in_field(); + bool is_in_field() const; + void set_is_in_field(bool value); + private: + bool _internal_is_in_field() const; + void _internal_set_is_in_field(bool value); + public: + // @@protoc_insertion_point(class_scope:milvus.proto.plan.TermExpr) private: class _Internal; @@ -2122,6 +2132,7 @@ class TermExpr final : struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::plan::GenericValue > values_; ::milvus::proto::plan::ColumnInfo* column_info_; + bool is_in_field_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; @@ -5832,6 +5843,26 @@ TermExpr::values() const { return _impl_.values_; } +// bool is_in_field = 3; +inline void TermExpr::clear_is_in_field() { + _impl_.is_in_field_ = false; +} +inline bool TermExpr::_internal_is_in_field() const { + return _impl_.is_in_field_; +} +inline bool TermExpr::is_in_field() const { + // @@protoc_insertion_point(field_get:milvus.proto.plan.TermExpr.is_in_field) + return _internal_is_in_field(); +} +inline void TermExpr::_internal_set_is_in_field(bool value) { + + _impl_.is_in_field_ = value; +} +inline void TermExpr::set_is_in_field(bool value) { + _internal_set_is_in_field(value); + // @@protoc_insertion_point(field_set:milvus.proto.plan.TermExpr.is_in_field) +} + // ------------------------------------------------------------------- // UnaryExpr diff --git a/internal/proto/plan.proto b/internal/proto/plan.proto index 7a5f7ad838..a3825fc60f 100644 --- a/internal/proto/plan.proto +++ b/internal/proto/plan.proto @@ -89,6 +89,7 @@ message CompareExpr { message TermExpr { ColumnInfo column_info = 1; repeated GenericValue values = 2; + bool is_in_field = 3; } message UnaryExpr { diff --git a/internal/proto/planpb/plan.pb.go b/internal/proto/planpb/plan.pb.go index 4d118c6a27..763636e7cb 100644 --- a/internal/proto/planpb/plan.pb.go +++ b/internal/proto/planpb/plan.pb.go @@ -722,6 +722,7 @@ func (m *CompareExpr) GetOp() OpType { type TermExpr struct { ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"` Values []*GenericValue `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` + IsInField bool `protobuf:"varint,3,opt,name=is_in_field,json=isInField,proto3" json:"is_in_field,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -766,6 +767,13 @@ func (m *TermExpr) GetValues() []*GenericValue { return nil } +func (m *TermExpr) GetIsInField() bool { + if m != nil { + return m.IsInField + } + return false +} + type UnaryExpr struct { Op UnaryExpr_UnaryOp `protobuf:"varint,1,opt,name=op,proto3,enum=milvus.proto.plan.UnaryExpr_UnaryOp" json:"op,omitempty"` Child *Expr `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` @@ -1514,101 +1522,102 @@ func init() { func init() { proto.RegisterFile("plan.proto", fileDescriptor_2d655ab2f7683c23) } var fileDescriptor_2d655ab2f7683c23 = []byte{ - // 1523 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xcd, 0x6e, 0xdb, 0xca, - 0x15, 0x16, 0xf5, 0x4b, 0x1e, 0xc9, 0x32, 0xc3, 0x4d, 0x9d, 0xa4, 0x89, 0x5d, 0x36, 0x68, 0xdc, - 0x14, 0xb1, 0x91, 0x26, 0x4d, 0x9a, 0x14, 0x69, 0xfd, 0x5b, 0x4b, 0x48, 0x62, 0xab, 0x8c, 0xe3, - 0x45, 0x37, 0xc4, 0x88, 0x1c, 0x5b, 0x83, 0x50, 0x33, 0x0c, 0x39, 0x54, 0xac, 0x75, 0x77, 0xdd, - 0xf5, 0x01, 0xba, 0xee, 0xbe, 0xcb, 0xa2, 0x40, 0x5f, 0xa0, 0x8b, 0x2e, 0xbb, 0xef, 0x13, 0x14, - 0xf7, 0x05, 0x2e, 0xe6, 0x0c, 0xf5, 0x67, 0x48, 0xb1, 0x7c, 0x6f, 0x80, 0xbb, 0x9b, 0x39, 0x73, - 0xce, 0x77, 0x7e, 0xe7, 0xcc, 0x19, 0x80, 0x38, 0x22, 0x7c, 0x2b, 0x4e, 0x84, 0x14, 0xce, 0xad, - 0x3e, 0x8b, 0x06, 0x59, 0xaa, 0x77, 0x5b, 0xea, 0xe0, 0x4e, 0x23, 0x0d, 0x7a, 0xb4, 0x4f, 0x34, - 0xc9, 0xfd, 0x8b, 0x01, 0x8d, 0x23, 0xca, 0x69, 0xc2, 0x82, 0x33, 0x12, 0x65, 0xd4, 0xb9, 0x0b, - 0x66, 0x57, 0x88, 0xc8, 0x1f, 0x90, 0x68, 0xcd, 0xd8, 0x30, 0x36, 0xcd, 0x56, 0xc1, 0xab, 0x29, - 0xca, 0x19, 0x89, 0x9c, 0x7b, 0x60, 0x31, 0x2e, 0x9f, 0x3f, 0xc3, 0xd3, 0xe2, 0x86, 0xb1, 0x59, - 0x6a, 0x15, 0x3c, 0x13, 0x49, 0xf9, 0xf1, 0x79, 0x24, 0x88, 0xc4, 0xe3, 0xd2, 0x86, 0xb1, 0x69, - 0xa8, 0x63, 0x24, 0xa9, 0xe3, 0x75, 0x80, 0x54, 0x26, 0x8c, 0x5f, 0xe0, 0x79, 0x79, 0xc3, 0xd8, - 0xb4, 0x5a, 0x05, 0xcf, 0xd2, 0xb4, 0x33, 0x12, 0xed, 0x55, 0xa0, 0x34, 0x20, 0x91, 0xfb, 0x67, - 0x03, 0xac, 0x3f, 0x64, 0x34, 0x19, 0xb6, 0xf9, 0xb9, 0x70, 0x1c, 0x28, 0x4b, 0x11, 0x7f, 0x44, - 0x63, 0x4a, 0x1e, 0xae, 0x9d, 0x75, 0xa8, 0xf7, 0xa9, 0x4c, 0x58, 0xe0, 0xcb, 0x61, 0x4c, 0x51, - 0x95, 0xe5, 0x81, 0x26, 0x9d, 0x0e, 0x63, 0xea, 0xfc, 0x14, 0x56, 0x52, 0x4a, 0x92, 0xa0, 0xe7, - 0xc7, 0x24, 0x21, 0xfd, 0x54, 0x6b, 0xf3, 0x1a, 0x9a, 0xd8, 0x41, 0x9a, 0x62, 0x4a, 0x44, 0xc6, - 0x43, 0x3f, 0xa4, 0x01, 0xeb, 0x93, 0x68, 0xad, 0x82, 0x2a, 0x1a, 0x48, 0x3c, 0xd0, 0x34, 0xf7, - 0xff, 0x06, 0xc0, 0xbe, 0x88, 0xb2, 0x3e, 0x47, 0x6b, 0x6e, 0x83, 0x79, 0xce, 0x68, 0x14, 0xfa, - 0x2c, 0xcc, 0x2d, 0xaa, 0xe1, 0xbe, 0x1d, 0x3a, 0xaf, 0xc0, 0x0a, 0x89, 0x24, 0xda, 0x24, 0x15, - 0x9c, 0xe6, 0x2f, 0xef, 0x6d, 0xcd, 0xc4, 0x3f, 0x8f, 0xfc, 0x01, 0x91, 0x44, 0x59, 0xe9, 0x99, - 0x61, 0xbe, 0x72, 0x1e, 0x40, 0x93, 0xa5, 0x7e, 0x9c, 0xb0, 0x3e, 0x49, 0x86, 0xfe, 0x47, 0x3a, - 0x44, 0x9f, 0x4c, 0xaf, 0xc1, 0xd2, 0x8e, 0x26, 0xbe, 0xa1, 0x43, 0xe7, 0x2e, 0x58, 0x2c, 0xf5, - 0x49, 0x26, 0x45, 0xfb, 0x00, 0x3d, 0x32, 0x3d, 0x93, 0xa5, 0xbb, 0xb8, 0x57, 0x31, 0xe1, 0x34, - 0x95, 0x34, 0xf4, 0x63, 0x22, 0x7b, 0x6b, 0x95, 0x8d, 0x92, 0x8a, 0x89, 0x26, 0x75, 0x88, 0xec, - 0x39, 0x9b, 0x60, 0x2b, 0x1d, 0x24, 0x91, 0x4c, 0x32, 0xc1, 0x51, 0x4b, 0x15, 0x41, 0x9a, 0x2c, - 0xed, 0x8c, 0xc8, 0x6f, 0xe8, 0xd0, 0xfd, 0xdd, 0xc8, 0xe5, 0xc3, 0xcb, 0x38, 0x71, 0x9e, 0x40, - 0x99, 0xf1, 0x73, 0x81, 0xee, 0xd6, 0xaf, 0xba, 0x84, 0xb5, 0x36, 0x89, 0x8f, 0x87, 0xac, 0x0a, - 0xe0, 0xf0, 0x92, 0xa5, 0x32, 0xfd, 0xae, 0x00, 0x7b, 0x60, 0x61, 0x39, 0xa2, 0xfc, 0xaf, 0xa0, - 0x32, 0x50, 0x9b, 0x1c, 0x60, 0x7d, 0x0e, 0xc0, 0x74, 0x09, 0x7b, 0x9a, 0xdb, 0xfd, 0xbb, 0x01, - 0xcd, 0x0f, 0x9c, 0x24, 0x43, 0x8f, 0xf0, 0x0b, 0x8d, 0xf4, 0x5b, 0xa8, 0x07, 0xa8, 0xca, 0x5f, - 0xde, 0x20, 0x08, 0x26, 0xd9, 0xff, 0x39, 0x14, 0x45, 0x9c, 0xe7, 0xf6, 0xf6, 0x1c, 0xb1, 0x93, - 0x18, 0xf3, 0x5a, 0x14, 0xf1, 0xc4, 0xe8, 0xd2, 0x8d, 0x8c, 0xfe, 0x5b, 0x11, 0x56, 0xf7, 0xd8, - 0xd7, 0xb5, 0xfa, 0x21, 0xac, 0x46, 0xe2, 0x33, 0x4d, 0x7c, 0xc6, 0x83, 0x28, 0x4b, 0xd9, 0x40, - 0x97, 0xa7, 0xe9, 0x35, 0x91, 0xdc, 0x1e, 0x51, 0x15, 0x63, 0x16, 0xc7, 0x33, 0x8c, 0xba, 0x0c, - 0x9b, 0x48, 0x9e, 0x30, 0xee, 0x40, 0x5d, 0x23, 0x6a, 0x17, 0xcb, 0xcb, 0xb9, 0x08, 0x28, 0xa3, - 0xdb, 0xcc, 0x0e, 0xd4, 0xb5, 0x2a, 0x8d, 0x50, 0x59, 0x12, 0x01, 0x65, 0x70, 0xed, 0xfe, 0xdb, - 0x80, 0xfa, 0xbe, 0xe8, 0xc7, 0x24, 0xd1, 0x51, 0x3a, 0x02, 0x3b, 0xa2, 0xe7, 0xd2, 0xbf, 0x71, - 0xa8, 0x9a, 0x4a, 0x6c, 0xea, 0x8a, 0xb7, 0xe1, 0x56, 0xc2, 0x2e, 0x7a, 0xb3, 0x48, 0xc5, 0x65, - 0x90, 0x56, 0x51, 0x6e, 0xff, 0x6a, 0xbd, 0x94, 0x96, 0xa8, 0x17, 0xf7, 0x4f, 0x06, 0x98, 0xa7, - 0x34, 0xe9, 0x7f, 0x95, 0x8c, 0xbf, 0x80, 0x2a, 0xc6, 0x35, 0x5d, 0x2b, 0x6e, 0x94, 0x96, 0x09, - 0x6c, 0xce, 0xae, 0x9e, 0x03, 0x0b, 0xef, 0x0c, 0x9a, 0xf1, 0x0c, 0xcd, 0x37, 0xd0, 0xfc, 0x07, - 0x73, 0x20, 0xc6, 0x9c, 0x7a, 0x75, 0x12, 0x63, 0xe5, 0x3f, 0x86, 0x4a, 0xd0, 0x63, 0x51, 0x98, - 0xc7, 0xec, 0x47, 0x73, 0x04, 0x95, 0x8c, 0xa7, 0xb9, 0xdc, 0x75, 0xa8, 0xe5, 0xd2, 0x4e, 0x1d, - 0x6a, 0x6d, 0x3e, 0x20, 0x11, 0x0b, 0xed, 0x82, 0x53, 0x83, 0xd2, 0xb1, 0x90, 0xb6, 0xe1, 0xfe, - 0xd7, 0x00, 0xd0, 0x57, 0x02, 0x8d, 0x7a, 0x3e, 0x65, 0xd4, 0xcf, 0xe6, 0x60, 0x4f, 0x58, 0xf3, - 0x65, 0x6e, 0xd6, 0x2f, 0xa0, 0xac, 0x12, 0x7d, 0x9d, 0x55, 0xc8, 0xa4, 0x7c, 0xc0, 0x5c, 0xe6, - 0xb7, 0x77, 0xb1, 0x0f, 0xc8, 0xe5, 0x3e, 0x07, 0x73, 0xa4, 0x6b, 0xd6, 0x89, 0x26, 0xc0, 0x5b, - 0x71, 0xc1, 0x02, 0x12, 0xed, 0xf2, 0xd0, 0x36, 0x9c, 0x15, 0xb0, 0xf2, 0xfd, 0x49, 0x62, 0x17, - 0xdd, 0xff, 0x18, 0xb0, 0xa2, 0x05, 0x77, 0x13, 0x26, 0x7b, 0x27, 0xf1, 0xf7, 0xce, 0xfc, 0x4b, - 0x30, 0x89, 0x82, 0xf2, 0xc7, 0x7d, 0xea, 0xfe, 0x1c, 0xe1, 0x5c, 0x1b, 0x16, 0x5f, 0x8d, 0xe4, - 0xaa, 0x0f, 0x60, 0x45, 0xd7, 0xbd, 0x88, 0x69, 0x42, 0x78, 0xb8, 0x6c, 0xe7, 0x6a, 0xa0, 0xd4, - 0x89, 0x16, 0x72, 0xff, 0x6a, 0x8c, 0x1a, 0x18, 0x2a, 0xc1, 0x94, 0x8d, 0x42, 0x6f, 0xdc, 0x28, - 0xf4, 0xc5, 0x65, 0x42, 0xef, 0x6c, 0x4d, 0x5d, 0xb1, 0xeb, 0x5c, 0x55, 0xf7, 0xec, 0x5f, 0x45, - 0xb8, 0x33, 0x13, 0xf2, 0xc3, 0x01, 0x89, 0xbe, 0x5e, 0xaf, 0xfd, 0xa1, 0xe3, 0x9f, 0xb7, 0x9c, - 0xf2, 0x8d, 0x9e, 0xa8, 0xca, 0x8d, 0x9e, 0xa8, 0x7f, 0x56, 0xa1, 0x8c, 0xb1, 0x7a, 0x05, 0x96, - 0xa4, 0x49, 0xdf, 0xa7, 0x97, 0x71, 0x92, 0x47, 0xea, 0xee, 0x1c, 0x8c, 0x51, 0x57, 0x53, 0xb3, - 0xa0, 0x1c, 0x75, 0xb8, 0xd7, 0x00, 0x99, 0x4a, 0x82, 0x16, 0xd6, 0xa9, 0xfe, 0xf1, 0x97, 0x5a, - 0x8c, 0x9a, 0x14, 0xb3, 0x71, 0x13, 0xd8, 0x81, 0x7a, 0x97, 0x4d, 0xe4, 0x4b, 0x0b, 0xd3, 0x34, - 0xe9, 0x06, 0xad, 0x82, 0x07, 0xdd, 0x49, 0x1b, 0xd9, 0x87, 0x46, 0xa0, 0x5f, 0x0f, 0x0d, 0xa1, - 0xdf, 0xb0, 0xfb, 0x73, 0x33, 0x3d, 0x7e, 0x64, 0x5a, 0x05, 0xaf, 0x1e, 0x4c, 0xbd, 0x39, 0xef, - 0xc0, 0xd6, 0x5e, 0x24, 0xaa, 0x80, 0x34, 0x90, 0x0e, 0xe6, 0x4f, 0x16, 0xf9, 0x32, 0x2e, 0xb5, - 0x56, 0xc1, 0x6b, 0x66, 0xb3, 0x0f, 0x7d, 0x07, 0x6e, 0xe5, 0x5e, 0x4d, 0xe1, 0x55, 0x11, 0xcf, - 0x5d, 0xe8, 0xdb, 0x34, 0xe0, 0x6a, 0xf7, 0xca, 0xe8, 0x20, 0x61, 0x3d, 0x47, 0x1c, 0x55, 0xa5, - 0x4f, 0x07, 0x24, 0x9a, 0xc6, 0xaf, 0x21, 0xfe, 0xe3, 0x85, 0xf8, 0xf3, 0xae, 0x49, 0xab, 0xe0, - 0xdd, 0xe9, 0x2e, 0xbe, 0x44, 0x13, 0x3f, 0xb4, 0x56, 0xd4, 0x63, 0x5e, 0xe3, 0xc7, 0xb8, 0x5d, - 0x4c, 0xfc, 0x98, 0x74, 0x90, 0xd7, 0x00, 0x58, 0x7c, 0x1a, 0xca, 0x5a, 0x58, 0x2e, 0xe3, 0xa1, - 0x51, 0x95, 0xcb, 0x60, 0x3c, 0x41, 0xee, 0x8c, 0x6f, 0x35, 0xca, 0xc3, 0x35, 0xb7, 0x7a, 0x54, - 0x2e, 0xc1, 0x64, 0x08, 0xde, 0x81, 0x3a, 0xc5, 0x89, 0x56, 0x23, 0xd4, 0x17, 0x22, 0x4c, 0xe6, - 0x5e, 0x85, 0x40, 0xc7, 0xbb, 0xbd, 0x2a, 0x94, 0x95, 0xa8, 0xfb, 0x3f, 0x03, 0xe0, 0x8c, 0x06, - 0x52, 0x24, 0xbb, 0xc7, 0xc7, 0xef, 0xf3, 0x99, 0x5e, 0xfb, 0xab, 0x3f, 0x5c, 0x6a, 0xa6, 0xd7, - 0x21, 0x99, 0xf9, 0x6d, 0x14, 0x67, 0x7f, 0x1b, 0x2f, 0x00, 0xe2, 0x84, 0x86, 0x2c, 0x20, 0x92, - 0xa6, 0xd7, 0x3d, 0x53, 0x53, 0xac, 0xce, 0x6f, 0x00, 0x3e, 0xa9, 0xcf, 0x95, 0x6e, 0x70, 0xe5, - 0x85, 0xa1, 0x1c, 0xff, 0xc0, 0x3c, 0xeb, 0xd3, 0xf8, 0x33, 0xf6, 0x10, 0x56, 0xe3, 0x88, 0x04, - 0xb4, 0x27, 0xa2, 0x90, 0x26, 0xbe, 0x24, 0x17, 0x58, 0xef, 0x96, 0xd7, 0x9c, 0x22, 0x9f, 0x92, - 0x0b, 0x37, 0x80, 0x15, 0x04, 0xe8, 0x44, 0x84, 0x1f, 0x8b, 0x90, 0x5e, 0xb1, 0xd7, 0x58, 0xde, - 0xde, 0xdb, 0x60, 0xb2, 0xd4, 0x0f, 0x44, 0xc6, 0x65, 0x3e, 0xb6, 0xd6, 0x58, 0xba, 0xaf, 0xb6, - 0xee, 0x37, 0x06, 0x98, 0x63, 0x05, 0x3b, 0x50, 0x1f, 0x60, 0x58, 0x7d, 0xc2, 0x79, 0xfa, 0x85, - 0xce, 0x3d, 0x09, 0xbe, 0xca, 0x90, 0x96, 0xd9, 0xe5, 0x3c, 0x75, 0x5e, 0xce, 0x98, 0xf8, 0xe5, - 0xe7, 0x47, 0x89, 0x4e, 0x19, 0xf9, 0x6b, 0xa8, 0x60, 0x90, 0xf2, 0x78, 0x6e, 0x2c, 0x8a, 0xe7, - 0xc8, 0xda, 0x56, 0xc1, 0xd3, 0x02, 0xea, 0x57, 0x26, 0x32, 0x19, 0x67, 0xd2, 0x1f, 0x65, 0x5a, - 0x65, 0xb3, 0xb4, 0x59, 0xf2, 0x9a, 0x9a, 0xfe, 0x7b, 0x9d, 0xf0, 0x54, 0x15, 0x10, 0x17, 0x21, - 0x7d, 0xf4, 0x0f, 0x03, 0xaa, 0xba, 0x8b, 0xcf, 0xce, 0x1a, 0xab, 0x50, 0x3f, 0x4a, 0x28, 0x91, - 0x34, 0x39, 0xed, 0x11, 0x6e, 0x1b, 0x8e, 0x0d, 0x8d, 0x9c, 0x70, 0xf8, 0x29, 0x23, 0x91, 0x5d, - 0x74, 0x1a, 0x60, 0xbe, 0xa5, 0x69, 0x8a, 0xe7, 0x25, 0x1c, 0x46, 0x68, 0x9a, 0xea, 0xc3, 0xb2, - 0x63, 0x41, 0x45, 0x2f, 0x2b, 0x8a, 0xef, 0x58, 0x48, 0xbd, 0xab, 0x2a, 0xe0, 0x4e, 0x42, 0xcf, - 0xd9, 0xe5, 0x3b, 0x22, 0x83, 0x9e, 0x5d, 0x53, 0xc0, 0x1d, 0x91, 0xca, 0x31, 0xc5, 0x54, 0xb2, - 0x7a, 0x69, 0xa9, 0x25, 0x76, 0x02, 0x1b, 0x9c, 0x2a, 0x14, 0xdb, 0xdc, 0xae, 0x2b, 0xd2, 0xb1, - 0x90, 0x6d, 0x6e, 0x37, 0x1e, 0x1d, 0x41, 0x7d, 0xea, 0xf1, 0x53, 0x0e, 0x7c, 0xe0, 0x1f, 0xb9, - 0xf8, 0xcc, 0xf5, 0xc4, 0xb7, 0x1b, 0xaa, 0x29, 0xa9, 0x06, 0xa5, 0xf7, 0x59, 0xd7, 0x2e, 0xaa, - 0xc5, 0xbb, 0x2c, 0xb2, 0x4b, 0x6a, 0x71, 0xc0, 0x06, 0x76, 0x19, 0x29, 0x22, 0xb4, 0x2b, 0x7b, - 0x4f, 0xff, 0xf8, 0xe4, 0x82, 0xc9, 0x5e, 0xd6, 0xdd, 0x0a, 0x44, 0x7f, 0x5b, 0x87, 0xfb, 0x31, - 0x13, 0xf9, 0x6a, 0x9b, 0x71, 0x49, 0x13, 0x4e, 0xa2, 0x6d, 0xcc, 0xc0, 0xb6, 0xca, 0x40, 0xdc, - 0xed, 0x56, 0x71, 0xf7, 0xf4, 0xdb, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa0, 0x9a, 0xbc, 0xa6, 0x23, - 0x11, 0x00, 0x00, + // 1542 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xcd, 0x72, 0xdc, 0x4a, + 0x15, 0x1e, 0xcd, 0xaf, 0x74, 0x34, 0x1e, 0x2b, 0xda, 0xe0, 0x24, 0xdc, 0xd8, 0x88, 0x5b, 0x5c, + 0x73, 0xa9, 0xd8, 0x75, 0xb9, 0x97, 0x84, 0x84, 0x0a, 0xf8, 0x37, 0x9e, 0xa9, 0x24, 0xf6, 0xa0, + 0x38, 0x5e, 0xb0, 0x51, 0xf5, 0x48, 0x6d, 0x4f, 0x57, 0x34, 0xdd, 0x8a, 0xd4, 0x9a, 0x78, 0x5e, + 0x81, 0x1d, 0x0f, 0xc0, 0x8a, 0x05, 0x7b, 0x96, 0x14, 0x55, 0xbc, 0x00, 0x0b, 0x96, 0xec, 0x79, + 0x02, 0x8a, 0x17, 0xa0, 0xfa, 0xb4, 0xe6, 0xcf, 0x35, 0x13, 0x8f, 0x21, 0x55, 0xec, 0xba, 0x4f, + 0x9f, 0xf3, 0x9d, 0xdf, 0x3e, 0x7d, 0x1a, 0x20, 0x89, 0x09, 0xdf, 0x49, 0x52, 0x21, 0x85, 0x7b, + 0x6f, 0xc0, 0xe2, 0x61, 0x9e, 0xe9, 0xdd, 0x8e, 0x3a, 0x78, 0xd0, 0xcc, 0xc2, 0x3e, 0x1d, 0x10, + 0x4d, 0xf2, 0x7e, 0x67, 0x40, 0xf3, 0x84, 0x72, 0x9a, 0xb2, 0xf0, 0x82, 0xc4, 0x39, 0x75, 0x1f, + 0x82, 0xd9, 0x13, 0x22, 0x0e, 0x86, 0x24, 0xde, 0x30, 0xb6, 0x8c, 0x6d, 0xb3, 0x5d, 0xf2, 0x1b, + 0x8a, 0x72, 0x41, 0x62, 0xf7, 0x0b, 0xb0, 0x18, 0x97, 0x4f, 0xbe, 0xc3, 0xd3, 0xf2, 0x96, 0xb1, + 0x5d, 0x69, 0x97, 0x7c, 0x13, 0x49, 0xc5, 0xf1, 0x65, 0x2c, 0x88, 0xc4, 0xe3, 0xca, 0x96, 0xb1, + 0x6d, 0xa8, 0x63, 0x24, 0xa9, 0xe3, 0x4d, 0x80, 0x4c, 0xa6, 0x8c, 0x5f, 0xe1, 0x79, 0x75, 0xcb, + 0xd8, 0xb6, 0xda, 0x25, 0xdf, 0xd2, 0xb4, 0x0b, 0x12, 0x1f, 0xd4, 0xa0, 0x32, 0x24, 0xb1, 0xf7, + 0x5b, 0x03, 0xac, 0x5f, 0xe7, 0x34, 0x1d, 0x75, 0xf8, 0xa5, 0x70, 0x5d, 0xa8, 0x4a, 0x91, 0xbc, + 0x47, 0x63, 0x2a, 0x3e, 0xae, 0xdd, 0x4d, 0xb0, 0x07, 0x54, 0xa6, 0x2c, 0x0c, 0xe4, 0x28, 0xa1, + 0xa8, 0xca, 0xf2, 0x41, 0x93, 0xce, 0x47, 0x09, 0x75, 0x7f, 0x08, 0x6b, 0x19, 0x25, 0x69, 0xd8, + 0x0f, 0x12, 0x92, 0x92, 0x41, 0xa6, 0xb5, 0xf9, 0x4d, 0x4d, 0xec, 0x22, 0x4d, 0x31, 0xa5, 0x22, + 0xe7, 0x51, 0x10, 0xd1, 0x90, 0x0d, 0x48, 0xbc, 0x51, 0x43, 0x15, 0x4d, 0x24, 0x1e, 0x69, 0x9a, + 0xf7, 0x2f, 0x03, 0xe0, 0x50, 0xc4, 0xf9, 0x80, 0xa3, 0x35, 0xf7, 0xc1, 0xbc, 0x64, 0x34, 0x8e, + 0x02, 0x16, 0x15, 0x16, 0x35, 0x70, 0xdf, 0x89, 0xdc, 0xe7, 0x60, 0x45, 0x44, 0x12, 0x6d, 0x92, + 0x0a, 0x4e, 0xeb, 0xa7, 0x5f, 0xec, 0xcc, 0xc5, 0xbf, 0x88, 0xfc, 0x11, 0x91, 0x44, 0x59, 0xe9, + 0x9b, 0x51, 0xb1, 0x72, 0xbf, 0x84, 0x16, 0xcb, 0x82, 0x24, 0x65, 0x03, 0x92, 0x8e, 0x82, 0xf7, + 0x74, 0x84, 0x3e, 0x99, 0x7e, 0x93, 0x65, 0x5d, 0x4d, 0x7c, 0x45, 0x47, 0xee, 0x43, 0xb0, 0x58, + 0x16, 0x90, 0x5c, 0x8a, 0xce, 0x11, 0x7a, 0x64, 0xfa, 0x26, 0xcb, 0xf6, 0x71, 0xaf, 0x62, 0xc2, + 0x69, 0x26, 0x69, 0x14, 0x24, 0x44, 0xf6, 0x37, 0x6a, 0x5b, 0x15, 0x15, 0x13, 0x4d, 0xea, 0x12, + 0xd9, 0x77, 0xb7, 0xc1, 0x51, 0x3a, 0x48, 0x2a, 0x99, 0x64, 0x82, 0xa3, 0x96, 0x3a, 0x82, 0xb4, + 0x58, 0xd6, 0x1d, 0x93, 0x5f, 0xd1, 0x91, 0xf7, 0xab, 0xb1, 0xcb, 0xc7, 0xd7, 0x49, 0xea, 0x7e, + 0x03, 0x55, 0xc6, 0x2f, 0x05, 0xba, 0x6b, 0xdf, 0x74, 0x09, 0x6b, 0x6d, 0x1a, 0x1f, 0x1f, 0x59, + 0x15, 0xc0, 0xf1, 0x35, 0xcb, 0x64, 0xf6, 0xdf, 0x02, 0x1c, 0x80, 0x85, 0xe5, 0x88, 0xf2, 0x3f, + 0x83, 0xda, 0x50, 0x6d, 0x0a, 0x80, 0xcd, 0x05, 0x00, 0xb3, 0x25, 0xec, 0x6b, 0x6e, 0xef, 0x4f, + 0x06, 0xb4, 0xde, 0x71, 0x92, 0x8e, 0x7c, 0xc2, 0xaf, 0x34, 0xd2, 0x2f, 0xc1, 0x0e, 0x51, 0x55, + 0xb0, 0xba, 0x41, 0x10, 0x4e, 0xb3, 0xff, 0x63, 0x28, 0x8b, 0xa4, 0xc8, 0xed, 0xfd, 0x05, 0x62, + 0x67, 0x09, 0xe6, 0xb5, 0x2c, 0x92, 0xa9, 0xd1, 0x95, 0x3b, 0x19, 0xfd, 0xc7, 0x32, 0xac, 0x1f, + 0xb0, 0xcf, 0x6b, 0xf5, 0x57, 0xb0, 0x1e, 0x8b, 0x8f, 0x34, 0x0d, 0x18, 0x0f, 0xe3, 0x3c, 0x63, + 0x43, 0x5d, 0x9e, 0xa6, 0xdf, 0x42, 0x72, 0x67, 0x4c, 0x55, 0x8c, 0x79, 0x92, 0xcc, 0x31, 0xea, + 0x32, 0x6c, 0x21, 0x79, 0xca, 0xb8, 0x07, 0xb6, 0x46, 0xd4, 0x2e, 0x56, 0x57, 0x73, 0x11, 0x50, + 0x46, 0xb7, 0x99, 0x3d, 0xb0, 0xb5, 0x2a, 0x8d, 0x50, 0x5b, 0x11, 0x01, 0x65, 0x70, 0xed, 0xfd, + 0xcd, 0x00, 0xfb, 0x50, 0x0c, 0x12, 0x92, 0xea, 0x28, 0x9d, 0x80, 0x13, 0xd3, 0x4b, 0x19, 0xdc, + 0x39, 0x54, 0x2d, 0x25, 0x36, 0x73, 0xc5, 0x3b, 0x70, 0x2f, 0x65, 0x57, 0xfd, 0x79, 0xa4, 0xf2, + 0x2a, 0x48, 0xeb, 0x28, 0x77, 0x78, 0xb3, 0x5e, 0x2a, 0x2b, 0xd4, 0x8b, 0xf7, 0x07, 0x03, 0xcc, + 0x73, 0x9a, 0x0e, 0x3e, 0x4b, 0xc6, 0x9f, 0x42, 0x1d, 0xe3, 0x9a, 0x6d, 0x94, 0xb7, 0x2a, 0xab, + 0x04, 0xb6, 0x60, 0x77, 0x1f, 0x81, 0xcd, 0xb2, 0x80, 0xf1, 0x00, 0x9b, 0x5a, 0x91, 0x7d, 0x8b, + 0x65, 0x1d, 0xfe, 0x52, 0x11, 0xd4, 0x73, 0x61, 0xe1, 0x9d, 0x42, 0x33, 0xbf, 0x43, 0xf7, 0x0c, + 0x74, 0xef, 0xcb, 0x05, 0x2a, 0x26, 0x9c, 0x7a, 0x75, 0x96, 0xe0, 0xcd, 0x78, 0x0c, 0xb5, 0xb0, + 0xcf, 0xe2, 0xa8, 0x88, 0xe9, 0xf7, 0x16, 0x08, 0x2a, 0x19, 0x5f, 0x73, 0x79, 0x9b, 0xd0, 0x28, + 0xa4, 0x5d, 0x1b, 0x1a, 0x1d, 0x3e, 0x24, 0x31, 0x8b, 0x9c, 0x92, 0xdb, 0x80, 0xca, 0xa9, 0x90, + 0x8e, 0xe1, 0xfd, 0xc3, 0x00, 0xd0, 0x57, 0x06, 0x8d, 0x7a, 0x32, 0x63, 0xd4, 0x8f, 0x16, 0x60, + 0x4f, 0x59, 0x8b, 0x65, 0x61, 0xd6, 0x4f, 0xa0, 0xaa, 0x0a, 0xe1, 0x36, 0xab, 0x90, 0x49, 0xf9, + 0x80, 0xb9, 0x2e, 0x6e, 0xf7, 0x72, 0x1f, 0x90, 0xcb, 0x7b, 0x02, 0xe6, 0x58, 0xd7, 0xbc, 0x13, + 0x2d, 0x80, 0xd7, 0xe2, 0x8a, 0x85, 0x24, 0xde, 0xe7, 0x91, 0x63, 0xb8, 0x6b, 0x60, 0x15, 0xfb, + 0xb3, 0xd4, 0x29, 0x7b, 0x7f, 0x37, 0x60, 0x4d, 0x0b, 0xee, 0xa7, 0x4c, 0xf6, 0xcf, 0x92, 0xff, + 0xb9, 0x32, 0x9e, 0x81, 0x49, 0x14, 0x54, 0x30, 0xe9, 0x63, 0x8f, 0x16, 0x08, 0x17, 0xda, 0xb0, + 0x38, 0x1b, 0xa4, 0x50, 0x7d, 0x04, 0x6b, 0xfa, 0x5e, 0x88, 0x84, 0xa6, 0x84, 0x47, 0xab, 0x76, + 0xb6, 0x26, 0x4a, 0x9d, 0x69, 0x21, 0xef, 0xf7, 0xc6, 0xb8, 0xc1, 0xa1, 0x12, 0x4c, 0xd9, 0x38, + 0xf4, 0xc6, 0x9d, 0x42, 0x5f, 0x5e, 0x25, 0xf4, 0xee, 0xce, 0xcc, 0x15, 0xbc, 0xcd, 0x55, 0x75, + 0x0f, 0xff, 0x5a, 0x86, 0x07, 0x73, 0x21, 0x3f, 0x1e, 0x92, 0xf8, 0xf3, 0xf5, 0xe2, 0xff, 0x77, + 0xfc, 0x8b, 0x96, 0x54, 0xbd, 0xd3, 0x13, 0x56, 0xbb, 0xd3, 0x13, 0xf6, 0x97, 0x3a, 0x54, 0x31, + 0x56, 0xcf, 0xc1, 0x92, 0x34, 0x1d, 0x04, 0xf4, 0x3a, 0x49, 0x8b, 0x48, 0x3d, 0x5c, 0x80, 0x31, + 0xee, 0x7a, 0x6a, 0x56, 0x94, 0xe3, 0x0e, 0xf8, 0x02, 0x20, 0x57, 0x49, 0xd0, 0xc2, 0x3a, 0xd5, + 0xdf, 0xff, 0x54, 0x8b, 0x51, 0x93, 0x64, 0x3e, 0x69, 0x02, 0x7b, 0x60, 0xf7, 0xd8, 0x54, 0xbe, + 0xb2, 0x34, 0x4d, 0xd3, 0x6e, 0xd0, 0x2e, 0xf9, 0xd0, 0x9b, 0xb6, 0x91, 0x43, 0x68, 0x86, 0xfa, + 0x75, 0xd1, 0x10, 0xfa, 0x8d, 0x7b, 0xb4, 0x30, 0xd3, 0x93, 0x47, 0xa8, 0x5d, 0xf2, 0xed, 0x70, + 0xe6, 0x4d, 0x7a, 0x03, 0x8e, 0xf6, 0x22, 0x55, 0x05, 0xa4, 0x81, 0x74, 0x30, 0x7f, 0xb0, 0xcc, + 0x97, 0x49, 0xa9, 0xb5, 0x4b, 0x7e, 0x2b, 0x9f, 0x1f, 0x04, 0xba, 0x70, 0xaf, 0xf0, 0x6a, 0x06, + 0xaf, 0x8e, 0x78, 0xde, 0x52, 0xdf, 0x66, 0x01, 0xd7, 0x7b, 0x37, 0x46, 0x0b, 0x09, 0x9b, 0x05, + 0xe2, 0xb8, 0x2a, 0x03, 0x3a, 0x24, 0xf1, 0x2c, 0x7e, 0x03, 0xf1, 0x1f, 0x2f, 0xc5, 0x5f, 0x74, + 0x4d, 0xda, 0x25, 0xff, 0x41, 0x6f, 0xf9, 0x25, 0x9a, 0xfa, 0xa1, 0xb5, 0xa2, 0x1e, 0xf3, 0x16, + 0x3f, 0x26, 0xed, 0x62, 0xea, 0xc7, 0xb4, 0x83, 0xbc, 0x00, 0xc0, 0xe2, 0xd3, 0x50, 0xd6, 0xd2, + 0x72, 0x99, 0x0c, 0x95, 0xaa, 0x5c, 0x86, 0x93, 0x09, 0x73, 0x6f, 0x72, 0xab, 0x51, 0x1e, 0x6e, + 0xb9, 0xd5, 0xe3, 0x72, 0x09, 0xa7, 0x43, 0xf2, 0x1e, 0xd8, 0x14, 0x27, 0x5e, 0x8d, 0x60, 0x2f, + 0x45, 0x98, 0xce, 0xc5, 0x0a, 0x81, 0x4e, 0x76, 0x07, 0x75, 0xa8, 0x2a, 0x51, 0xef, 0x9f, 0x06, + 0xc0, 0x05, 0x0d, 0xa5, 0x48, 0xf7, 0x4f, 0x4f, 0xdf, 0x16, 0x33, 0xbf, 0xf6, 0x57, 0x7f, 0xc8, + 0xd4, 0xcc, 0xaf, 0x43, 0x32, 0xf7, 0x1b, 0x29, 0xcf, 0xff, 0x46, 0x9e, 0x02, 0x24, 0x29, 0x8d, + 0x58, 0x48, 0x24, 0xcd, 0x6e, 0x7b, 0xa6, 0x66, 0x58, 0xdd, 0x5f, 0x00, 0x7c, 0x50, 0x9f, 0x2f, + 0xdd, 0xe0, 0xaa, 0x4b, 0x43, 0x39, 0xf9, 0xa1, 0xf9, 0xd6, 0x87, 0xc9, 0x67, 0xed, 0x2b, 0x58, + 0x4f, 0x62, 0x12, 0xd2, 0xbe, 0x88, 0x23, 0x9a, 0x06, 0x92, 0x5c, 0x61, 0xbd, 0x5b, 0x7e, 0x6b, + 0x86, 0x7c, 0x4e, 0xae, 0xbc, 0x10, 0xd6, 0x10, 0xa0, 0x1b, 0x13, 0x7e, 0x2a, 0x22, 0x7a, 0xc3, + 0x5e, 0x63, 0x75, 0x7b, 0xef, 0x83, 0xc9, 0xb2, 0x20, 0x14, 0x39, 0x97, 0xc5, 0x58, 0xdb, 0x60, + 0xd9, 0xa1, 0xda, 0x7a, 0xff, 0x36, 0xc0, 0x9c, 0x28, 0xd8, 0x03, 0x7b, 0x88, 0x61, 0x0d, 0x08, + 0xe7, 0xd9, 0x27, 0x3a, 0xf7, 0x34, 0xf8, 0x2a, 0x43, 0x5a, 0x66, 0x9f, 0xf3, 0xcc, 0x7d, 0x36, + 0x67, 0xe2, 0xa7, 0x9f, 0x1f, 0x25, 0x3a, 0x63, 0xe4, 0xcf, 0xa1, 0x86, 0x41, 0x2a, 0xe2, 0xb9, + 0xb5, 0x2c, 0x9e, 0x63, 0x6b, 0xdb, 0x25, 0x5f, 0x0b, 0xa8, 0x5f, 0x9b, 0xc8, 0x65, 0x92, 0xcb, + 0x60, 0x9c, 0x69, 0x95, 0xcd, 0xca, 0x76, 0xc5, 0x6f, 0x69, 0xfa, 0x4b, 0x9d, 0xf0, 0x4c, 0x15, + 0x10, 0x17, 0x11, 0xfd, 0xfa, 0xcf, 0x06, 0xd4, 0x75, 0x17, 0x9f, 0x9f, 0x35, 0xd6, 0xc1, 0x3e, + 0x49, 0x29, 0x91, 0x34, 0x3d, 0xef, 0x13, 0xee, 0x18, 0xae, 0x03, 0xcd, 0x82, 0x70, 0xfc, 0x21, + 0x27, 0xb1, 0x53, 0x76, 0x9b, 0x60, 0xbe, 0xa6, 0x59, 0x86, 0xe7, 0x15, 0x1c, 0x46, 0x68, 0x96, + 0xe9, 0xc3, 0xaa, 0x6b, 0x41, 0x4d, 0x2f, 0x6b, 0x8a, 0xef, 0x54, 0x48, 0xbd, 0xab, 0x2b, 0xe0, + 0x6e, 0x4a, 0x2f, 0xd9, 0xf5, 0x1b, 0x22, 0xc3, 0xbe, 0xd3, 0x50, 0xc0, 0x5d, 0x91, 0xc9, 0x09, + 0xc5, 0x54, 0xb2, 0x7a, 0x69, 0xa9, 0x25, 0x76, 0x02, 0x07, 0xdc, 0x3a, 0x94, 0x3b, 0xdc, 0xb1, + 0x15, 0xe9, 0x54, 0xc8, 0x0e, 0x77, 0x9a, 0x5f, 0x9f, 0x80, 0x3d, 0xf3, 0xf8, 0x29, 0x07, 0xde, + 0xf1, 0xf7, 0x5c, 0x7c, 0xe4, 0x7a, 0xe2, 0xdb, 0x8f, 0xd4, 0x94, 0xd4, 0x80, 0xca, 0xdb, 0xbc, + 0xe7, 0x94, 0xd5, 0xe2, 0x4d, 0x1e, 0x3b, 0x15, 0xb5, 0x38, 0x62, 0x43, 0xa7, 0x8a, 0x14, 0x11, + 0x39, 0xb5, 0x83, 0x6f, 0x7f, 0xf3, 0xcd, 0x15, 0x93, 0xfd, 0xbc, 0xb7, 0x13, 0x8a, 0xc1, 0xae, + 0x0e, 0xf7, 0x63, 0x26, 0x8a, 0xd5, 0x2e, 0xe3, 0x92, 0xa6, 0x9c, 0xc4, 0xbb, 0x98, 0x81, 0x5d, + 0x95, 0x81, 0xa4, 0xd7, 0xab, 0xe3, 0xee, 0xdb, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x2e, 0x85, + 0x01, 0x1b, 0x43, 0x11, 0x00, 0x00, }